הודעות אישיות במערכת IVR2

sbb0799
הודעות: 330
הצטרף: 12:39 08/02/2017

Re: הודעות אישיות במערכת IVR2

שליחהעל ידי sbb0799 » 18:32 22/11/2018

הקוד זמין בגיטהאב פה:
https://github.com/yemot/PrivateMessagesAPI
ורץ על השרת פה:
https://yemot-private-messages-api.herokuapp.com

@קולהירושלמי - אשמח עם תצטרף לקבוצה בגיטהאב.
וכמובן כל מי שיש לו עוד קודים לשימוש הציבור!
אולי @אדד יפתח אשכול מיוחד לעניין.
חסר קובץ INI של שלוחת API
וכן איך אפשר להעלות קודים שלי?

אבי 300
הודעות: 126
הצטרף: 12:50 23/05/2017

Re: הודעות אישיות במערכת IVR2

שליחהעל ידי אבי 300 » 19:02 22/11/2018

חסר קובץ INI של שלוחת API
וכן איך אפשר להעלות קודים שלי?
לגבי ה ini, ביקשתי מ @קולהירושלמי במייל שיוסיך את המידע ב README, מקווה שהוא יסכים לעזור.

כדי להעלות קודים, צריך קצת ידע בGIT, אם אתה רוצה, תוכל ללמוד כאן:
https://internet-israel.com/category/מדריכים/git

לחילופין, תוכל ליצור איתי קשר במייל
avi300 שטרודל hi2.in

ברוך ה
הודעות: 50
הצטרף: 20:44 03/03/2019

Re: הודעות אישיות במערכת IVR2

שליחהעל ידי ברוך ה » 11:39 07/07/2019

מישהו יכול להסביר לי איך עושים את זה ?

אלחנן למד 22
הודעות: 175
הצטרף: 18:24 27/08/2019

Re: הודעות אישיות במערכת IVR2

שליחהעל ידי אלחנן למד 22 » 23:07 07/11/2019

כבר בעבר עשיתי דבר כזה בתוספת קבלת צינטוקים ממספרים אישיים כך שהמספר לא ייחסם,אפשרות לכל אחד למחוק את ההודעות שלו ועוד הרבה דברים יפים ממש כמו ווצאפון בתוספת שידרוגים וקריינות מקצועית משלי, אבל ביטלתי את זה בגלל שיש יותר מידי מקום לפריצה ולא תיהיה לי שליטה 24/7/365 (אם ביויטיוב אסור , אז קל וחומר כאן).

לכן אם משהו רוצה את זה לשימוש פרטי עם שליטה שלו אז שיפנה אלי בפרטי.

בברכה
מנחם
אני רוצה
רק מה האימייל שלך

דוב
הודעות: 833
הצטרף: 16:06 20/08/2018

Re: הודעות אישיות במערכת IVR2

שליחהעל ידי דוב » 03:20 08/11/2019

זה מופיע איזה מיליון פעמים בפורום
mmf@ahavat-israel.net

אלחנן למד 22
הודעות: 175
הצטרף: 18:24 27/08/2019

Re: הודעות אישיות במערכת IVR2

שליחהעל ידי אלחנן למד 22 » 10:48 08/11/2019

לכל מי שחיפש עד היום מודל של הודעות אישיות להשארת הודעות פרטיות במערכות IVR2.
להלן פיתוח חדש מבית הקול הירושלמי שיאפשר לכם ליצור את כל הנ"ל בצורה פשוטה, לעת-עתה יש צורך בשרת בשביל לשים עליו את הקובץ שמטפל ביצירת השלוחות האישיות,
הרעיון מבוסס על שלוחת השמעת נתונים והודעות אישיות שמפנה כל מתקשר ע"פ זיהוי הטלפון שלו לשלוחה האישית, ובמידה ואין לו עדיין שלוחה אישית הוא מופנה לשלוחת API שיוצרת עבורו את השלוחה האישית באמצעות המחלקה של מאזין נלהב.
בהצלחה!!

שלב 1.
בשלוחה שבה רוצים לשים את ההפניה יש לשים את הקוד הבא

קוד: בחירת הכל

type=id_list_message
black_no_phone=yes
record_name=no
say_name=no
title=הפניה לשלוחות אישיות
ובנוסף קובץ נוסף בשם "IdListMessage.ini" שיכיל את הקוד הבא [בשינויים מתבקשים !]

קוד: בחירת הכל

default=g-"מיקום שלוחת ה-API [שלב 4 להלן]"
שלב 2.
על השרת שלכם שימו את הקבצים הבאים בתיקיה אחת
(אל תשכחו לחלץ את הקבצים!!!)
הודעות אישיות.rar
שלב 3.
יצירת שלוחת ה-API
בשלוחת ה-API אנחנו מפנים את המחייג שמועבר לשלוחה זו רק בפעם הראשונה כשהוא עדיין לא נמצא ברשימת ההפניות של השלוחה הקודמת.
באמצעות שלוחת ה-API אנו ניצור עבורו שלוחה אישית ובנוסף נעדכן את המספר שלו ברשימת ההפניות
להלן הקוד שצריך לשים בשלוחה ה-API [שימו לב להחליף את ערכי ברירת המחדל לערכים המותאמים עבורכם]

קוד: בחירת הכל

type=api
api_link=https://הכתובת של האתר והקובץ "PrivateCreate2"
title=יצירת שלוחת השמעה אישית
api_add_0=IdListMessage=השלוחה שמפנה לשלוחות האישיות
api_add_1=PrivateMessageLine=התיקיה שבתוכה יהיו התיקיות האישיות
api_add_2=pas=סיסמת המערכת שלכם
חשוב מאוד !!! לא למקם את השלוחות האישיות בתוך התיקיה שמפנה לשלוחות האישיות, אחרת כשאין הודעות בשלוחה המאזין ילכד בתוכה עד לניתוק השיחה...

להלן תוכן הקובץ "PrivateCreate2.php"

קוד: בחירת הכל

<?php

$IdListMessage = $_GET['IdListMessage'];
$PrivateMessageLine = $_GET['PrivateMessageLine'];
$ApiDID=$_GET['ApiDID'];
$pas=$_GET['pas'];
$con = new connecting_to_yemot_api("$ApiDID", "$pas");
if(isset($_GET['ApiPhone'])){


/*================הורדת קובץ ההפניות הקיים====================*/

$body = array
(
// נתיב הקובץ
'path' => "ivr/$IdListMessage/IdListMessage.ini",
);

$a = $con -> connecting('DownloadFile', $body);
$r = (array)$a;
//print_r($a);
$a2 = implode("", $r);
//print $a2;
$ApiPhone = $_GET['ApiPhone'];
if (strpos($a2, "$ApiPhone") == false) {
//print "</br>";


/*=======העלאת קובץ הגדרת השלוחה אל השלוחה האישית=============*/

// יצירת הקובץ
$File = new oFile('ext.ini', 'text/plain', file_get_contents('pfm'));

$body = array
(
'path' => "ivr/$PrivateMessageLine/ext.ini",
'convertAudio' => 0,
'fileUpload' => $File
);

$a = $con -> connecting('UploadFile', $body);
//============================================


/*===========צירוף הסמספר החדש לרשימה הקיימת==================*/
$my_file = fopen('new', 'r');
$t ="";
while(!feof($my_file)) {
$t = $t.fgets($my_file);
//print fgets($my_file).'<br />';
}
if (strpos($t, '1234') !== false) {
$t = str_replace("1234", "$ApiPhone",$t);}
$t = $a2.$t;
fclose($my_file);

/*============העלאת הקובץ המעודכן של ההפניות==================*/

// יצירת הקובץ
$File = new oFile('ext.ini', 'text/plain', "$t");

$body = array
(
'path' => "ivr/$IdListMessage/IdListMessage.ini",
'convertAudio' => 0,
'fileUpload' => $File
);

$a = $con -> connecting('UploadFile', $body);

print "id_list_message=f-"."200";
print ".&go_to_folder=/$PrivateMessageLine/$ApiPhone&";

}
else{
print "id_list_message=t-"."אירעה שגיאה בזיהוי מספר הטלפון שלכם";
print ".&go_to_folder=/&";
}


/*===============================================================*/


}
else{
print "id_list_message=t-"."לא זוהה טלפון";
print ".&go_to_folder=/&";
}




//===============================================

class BodyPost
{
// part "multipart/form-data"
public static function PartPost($name, $val)
{
$body = 'Content-Disposition: form-data; name="' . $name . '"';
// check instance of oFile
if($val instanceof oFile)
{
$file = $val->Name();
$mime = $val->Mime();
$cont = $val->Content();

$body .= '; filename="' . $file . '"' . "\r\n";
$body .= 'Content-Type: ' . $mime ."\r\n\r\n";
$body .= $cont."\r\n";
} else $body .= "\r\n\r\n".$val."\r\n";
return $body;
}

public static function Get(array $post, $delimiter = '-------------0123456789')
{
if(is_array($post) && !empty($post))
{
$bool = true;
//foreach($post as $val) if($val instanceof oFile) {$bool = true; break; };
if($bool)
{
$ret = '';
foreach($post as $name=>$val)
$ret .= '--' . $delimiter. "\r\n". self::PartPost($name, $val);
$ret .= "--" . $delimiter . "--\r\n";
} else $ret = http_build_query($post);
} else throw new \Exception('Error input param!');
return $ret;
}
}

class oFile
{
private $name;
private $mime;
private $content;

public function __construct($name, $mime=null, $content=null)
{
if(is_null($content))
{
$info = pathinfo($name);
// check is exist and readable file
if(!empty($info['basename']) && is_readable($name))
{
$this->name = $info['basename'];
// get MIME
$this->mime = mime_content_type($name);
// load file
$content = file_get_contents($name);
if($content!==false)
{
$this->content = $content;
}
else
{
throw new Exception('Don`t get content - "'.$name.'"');
}
}
else
{
throw new Exception('Error param');
}
}
else
{
$this->name = $name;
if(is_null($mime)) $mime = mime_content_type($name);
$this->mime = $mime;
$this->content = $content;
};
}

public function Name() { return $this->name; }

public function Mime() { return $this->mime; }

public function Content() { return $this->content; }

}

class connecting_to_yemot_api
{
public $token;

const URL = 'https://www.call2all.co.il/ym/api/';

public function __construct($user_name, $password)
{
$body = array('username' => $user_name, 'password' => $password);

$body = http_build_query($body);

$opts = array('http' => array(

'method' => 'POST',

'header' => "Content-Type: application/x-www-form-urlencoded",

'content' => $body,

'follow_location' => false) );

$context = stream_context_create($opts);

$url = self::URL.'Login';

$result = file_get_contents($url, FALSE, $context);

$result = json_decode($result);

if($result -> responseStatus == 'OK')
{
$this -> token = $result -> token;

return TRUE;
}
else
{
throw new Exception('שם המשתמש או הסיסמא של המערכת שגויים');
}
}

public function __destruct()
{
$this -> connecting('Logout');
}

public function connecting($action, $body = array())
{
$delimiter = '----'.uniqid();

$body['token'] = $this -> token;

$body = BodyPost::Get($body, $delimiter);

$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-Type: multipart/form-data; boundary='.$delimiter,
'content' => $body,
'follow_location' => false
)
);
$context = stream_context_create($opts);

$url = self::URL.$action;

$result = file_get_contents($url, FALSE, $context);

$headers = $this -> parseHeaders($http_response_header);

if($headers['Content-Type'][0] == 'application/json')
{
return json_decode($result);
}
else
{
return $result;
}
}

private function parseHeaders($headers)
{
// פונקציה שמקבלת מערך של שורות הכותרות
// הפונקציה מפרקת את קבצי הקוקי לתת-מערך נפרד


// מערך הכותרות
$head = array();

foreach( $headers as $k=>$v )
{
$t = explode( ':', $v, 2 );

if( isset( $t[1] ) )
{
if($t[0] == 'Set-Cookie')
{
$CookiesArr = array();

$cookies = explode( ';', $t[1]);

foreach($cookies as $cookie)
{
$c = explode( '=', $cookie);

if( isset( $c[1] ) )
{
$CookiesArr[ trim($c[0]) ] = trim( $c[1] );
}
else
{
$CookiesArr[] = trim( $c[0] );
}
}

$head[ trim($t[0]) ] = $CookiesArr;
}
elseif($t[0] == 'Content-Type')
{
$arr = array();

$children = explode( ';', $t[1]);

foreach($children as $child)
{
$c = explode( '=', $child);

if( isset( $c[1] ) )
{
$arr[ trim($c[0]) ] = trim( $c[1] );
}
else
{
$arr[] = trim( $c[0] );
}
}

$head[ trim($t[0]) ] = $arr;
}
else
{
$head[ trim($t[0]) ] = trim( $t[1] );
}
}
else
{
$head[] = $v;
if( preg_match( "#HTTP/[0-9\.]+\s+([0-9]+)#",$v, $out ) )
{
$head['reponse_code'] = intval($out[1]);
}
}
}
return $head;
}
}
יבוא על הברכה מי שירים את הכפפה וישים את המודל על שרת לטובת הציבור. :!:
לא הבנתי בשביל מה צריכים את ה api יש את המודול להקלטה לפי id כלומר, שהקלטה נשמרת לפי id של של אותו id שהקליט
ואז אם אני רוצה להקליט למשל לטלפון 0527105271 אז אני מתחבר אם אותו id ומקליט ובשלוחה של שמיעת ההודעות אני כמובן מגידר התחברות לפי phone ולא לתת לבחור מספר אישי
רק איך אפשר להתחבר לפי הid של מאזין אחר (במודול כניסה לפי phone) ??? וגם אם אפשר לבחור טל' אחר אז צריך שכל אחד יגדיר סיסמה לשלוחת השמעת הקבצים

אלחנן למד 22
הודעות: 175
הצטרף: 18:24 27/08/2019

Re: הודעות אישיות במערכת IVR2

שליחהעל ידי אלחנן למד 22 » 20:28 11/11/2019

לכל מי שחיפש עד היום מודל של הודעות אישיות להשארת הודעות פרטיות במערכות IVR2.
להלן פיתוח חדש מבית הקול הירושלמי שיאפשר לכם ליצור את כל הנ"ל בצורה פשוטה, לעת-עתה יש צורך בשרת בשביל לשים עליו את הקובץ שמטפל ביצירת השלוחות האישיות,
הרעיון מבוסס על שלוחת השמעת נתונים והודעות אישיות שמפנה כל מתקשר ע"פ זיהוי הטלפון שלו לשלוחה האישית, ובמידה ואין לו עדיין שלוחה אישית הוא מופנה לשלוחת API שיוצרת עבורו את השלוחה האישית באמצעות המחלקה של מאזין נלהב.
בהצלחה!!

שלב 1.
בשלוחה שבה רוצים לשים את ההפניה יש לשים את הקוד הבא

קוד: בחירת הכל

type=id_list_message
black_no_phone=yes
record_name=no
say_name=no
title=הפניה לשלוחות אישיות
ובנוסף קובץ נוסף בשם "IdListMessage.ini" שיכיל את הקוד הבא [בשינויים מתבקשים !]

קוד: בחירת הכל

default=g-"מיקום שלוחת ה-API [שלב 4 להלן]"
שלב 2.
על השרת שלכם שימו את הקבצים הבאים בתיקיה אחת
(אל תשכחו לחלץ את הקבצים!!!)
הודעות אישיות.rar
שלב 3.
יצירת שלוחת ה-API
בשלוחת ה-API אנחנו מפנים את המחייג שמועבר לשלוחה זו רק בפעם הראשונה כשהוא עדיין לא נמצא ברשימת ההפניות של השלוחה הקודמת.
באמצעות שלוחת ה-API אנו ניצור עבורו שלוחה אישית ובנוסף נעדכן את המספר שלו ברשימת ההפניות
להלן הקוד שצריך לשים בשלוחה ה-API [שימו לב להחליף את ערכי ברירת המחדל לערכים המותאמים עבורכם]

קוד: בחירת הכל

type=api
api_link=https://הכתובת של האתר והקובץ "PrivateCreate2"
title=יצירת שלוחת השמעה אישית
api_add_0=IdListMessage=השלוחה שמפנה לשלוחות האישיות
api_add_1=PrivateMessageLine=התיקיה שבתוכה יהיו התיקיות האישיות
api_add_2=pas=סיסמת המערכת שלכם
חשוב מאוד !!! לא למקם את השלוחות האישיות בתוך התיקיה שמפנה לשלוחות האישיות, אחרת כשאין הודעות בשלוחה המאזין ילכד בתוכה עד לניתוק השיחה...

להלן תוכן הקובץ "PrivateCreate2.php"

קוד: בחירת הכל

<?php

$IdListMessage = $_GET['IdListMessage'];
$PrivateMessageLine = $_GET['PrivateMessageLine'];
$ApiDID=$_GET['ApiDID'];
$pas=$_GET['pas'];
$con = new connecting_to_yemot_api("$ApiDID", "$pas");
if(isset($_GET['ApiPhone'])){


/*================הורדת קובץ ההפניות הקיים====================*/

$body = array
(
// נתיב הקובץ
'path' => "ivr/$IdListMessage/IdListMessage.ini",
);

$a = $con -> connecting('DownloadFile', $body);
$r = (array)$a;
//print_r($a);
$a2 = implode("", $r);
//print $a2;
$ApiPhone = $_GET['ApiPhone'];
if (strpos($a2, "$ApiPhone") == false) {
//print "</br>";


/*=======העלאת קובץ הגדרת השלוחה אל השלוחה האישית=============*/

// יצירת הקובץ
$File = new oFile('ext.ini', 'text/plain', file_get_contents('pfm'));

$body = array
(
'path' => "ivr/$PrivateMessageLine/ext.ini",
'convertAudio' => 0,
'fileUpload' => $File
);

$a = $con -> connecting('UploadFile', $body);
//============================================


/*===========צירוף הסמספר החדש לרשימה הקיימת==================*/
$my_file = fopen('new', 'r');
$t ="";
while(!feof($my_file)) {
$t = $t.fgets($my_file);
//print fgets($my_file).'<br />';
}
if (strpos($t, '1234') !== false) {
$t = str_replace("1234", "$ApiPhone",$t);}
$t = $a2.$t;
fclose($my_file);

/*============העלאת הקובץ המעודכן של ההפניות==================*/

// יצירת הקובץ
$File = new oFile('ext.ini', 'text/plain', "$t");

$body = array
(
'path' => "ivr/$IdListMessage/IdListMessage.ini",
'convertAudio' => 0,
'fileUpload' => $File
);

$a = $con -> connecting('UploadFile', $body);

print "id_list_message=f-"."200";
print ".&go_to_folder=/$PrivateMessageLine/$ApiPhone&";

}
else{
print "id_list_message=t-"."אירעה שגיאה בזיהוי מספר הטלפון שלכם";
print ".&go_to_folder=/&";
}


/*===============================================================*/


}
else{
print "id_list_message=t-"."לא זוהה טלפון";
print ".&go_to_folder=/&";
}




//===============================================

class BodyPost
{
// part "multipart/form-data"
public static function PartPost($name, $val)
{
$body = 'Content-Disposition: form-data; name="' . $name . '"';
// check instance of oFile
if($val instanceof oFile)
{
$file = $val->Name();
$mime = $val->Mime();
$cont = $val->Content();

$body .= '; filename="' . $file . '"' . "\r\n";
$body .= 'Content-Type: ' . $mime ."\r\n\r\n";
$body .= $cont."\r\n";
} else $body .= "\r\n\r\n".$val."\r\n";
return $body;
}

public static function Get(array $post, $delimiter = '-------------0123456789')
{
if(is_array($post) && !empty($post))
{
$bool = true;
//foreach($post as $val) if($val instanceof oFile) {$bool = true; break; };
if($bool)
{
$ret = '';
foreach($post as $name=>$val)
$ret .= '--' . $delimiter. "\r\n". self::PartPost($name, $val);
$ret .= "--" . $delimiter . "--\r\n";
} else $ret = http_build_query($post);
} else throw new \Exception('Error input param!');
return $ret;
}
}

class oFile
{
private $name;
private $mime;
private $content;

public function __construct($name, $mime=null, $content=null)
{
if(is_null($content))
{
$info = pathinfo($name);
// check is exist and readable file
if(!empty($info['basename']) && is_readable($name))
{
$this->name = $info['basename'];
// get MIME
$this->mime = mime_content_type($name);
// load file
$content = file_get_contents($name);
if($content!==false)
{
$this->content = $content;
}
else
{
throw new Exception('Don`t get content - "'.$name.'"');
}
}
else
{
throw new Exception('Error param');
}
}
else
{
$this->name = $name;
if(is_null($mime)) $mime = mime_content_type($name);
$this->mime = $mime;
$this->content = $content;
};
}

public function Name() { return $this->name; }

public function Mime() { return $this->mime; }

public function Content() { return $this->content; }

}

class connecting_to_yemot_api
{
public $token;

const URL = 'https://www.call2all.co.il/ym/api/';

public function __construct($user_name, $password)
{
$body = array('username' => $user_name, 'password' => $password);

$body = http_build_query($body);

$opts = array('http' => array(

'method' => 'POST',

'header' => "Content-Type: application/x-www-form-urlencoded",

'content' => $body,

'follow_location' => false) );

$context = stream_context_create($opts);

$url = self::URL.'Login';

$result = file_get_contents($url, FALSE, $context);

$result = json_decode($result);

if($result -> responseStatus == 'OK')
{
$this -> token = $result -> token;

return TRUE;
}
else
{
throw new Exception('שם המשתמש או הסיסמא של המערכת שגויים');
}
}

public function __destruct()
{
$this -> connecting('Logout');
}

public function connecting($action, $body = array())
{
$delimiter = '----'.uniqid();

$body['token'] = $this -> token;

$body = BodyPost::Get($body, $delimiter);

$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-Type: multipart/form-data; boundary='.$delimiter,
'content' => $body,
'follow_location' => false
)
);
$context = stream_context_create($opts);

$url = self::URL.$action;

$result = file_get_contents($url, FALSE, $context);

$headers = $this -> parseHeaders($http_response_header);

if($headers['Content-Type'][0] == 'application/json')
{
return json_decode($result);
}
else
{
return $result;
}
}

private function parseHeaders($headers)
{
// פונקציה שמקבלת מערך של שורות הכותרות
// הפונקציה מפרקת את קבצי הקוקי לתת-מערך נפרד


// מערך הכותרות
$head = array();

foreach( $headers as $k=>$v )
{
$t = explode( ':', $v, 2 );

if( isset( $t[1] ) )
{
if($t[0] == 'Set-Cookie')
{
$CookiesArr = array();

$cookies = explode( ';', $t[1]);

foreach($cookies as $cookie)
{
$c = explode( '=', $cookie);

if( isset( $c[1] ) )
{
$CookiesArr[ trim($c[0]) ] = trim( $c[1] );
}
else
{
$CookiesArr[] = trim( $c[0] );
}
}

$head[ trim($t[0]) ] = $CookiesArr;
}
elseif($t[0] == 'Content-Type')
{
$arr = array();

$children = explode( ';', $t[1]);

foreach($children as $child)
{
$c = explode( '=', $child);

if( isset( $c[1] ) )
{
$arr[ trim($c[0]) ] = trim( $c[1] );
}
else
{
$arr[] = trim( $c[0] );
}
}

$head[ trim($t[0]) ] = $arr;
}
else
{
$head[ trim($t[0]) ] = trim( $t[1] );
}
}
else
{
$head[] = $v;
if( preg_match( "#HTTP/[0-9\.]+\s+([0-9]+)#",$v, $out ) )
{
$head['reponse_code'] = intval($out[1]);
}
}
}
return $head;
}
}
יבוא על הברכה מי שירים את הכפפה וישים את המודל על שרת לטובת הציבור. :!:
לא הבנתי בשביל מה צריכים את ה api יש את המודול להקלטה לפי id כלומר, שהקלטה נשמרת לפי id של של אותו id שהקליט
ואז אם אני רוצה להקליט למשל לטלפון 0527105271 אז אני מתחבר אם אותו id ומקליט ובשלוחה של שמיעת ההודעות אני כמובן מגידר התחברות לפי phone ולא לתת לבחור מספר אישי
רק איך אפשר להתחבר לפי הid של מאזין אחר (במודול כניסה לפי phone) ??? וגם אם אפשר לבחור טל' אחר אז צריך שכל אחד יגדיר סיסמה לשלוחת השמעת הקבצים
וגם אי אפשר לשמוע מי הקליט ללי את ההודעה הנ"ל

אליהו
הודעות: 52
הצטרף: 17:44 07/04/2016

Re: הודעות אישיות במערכת IVR2

שליחהעל ידי אליהו » 19:33 23/11/2019

כבר בעבר עשיתי דבר כזה בתוספת קבלת צינטוקים ממספרים אישיים כך שהמספר לא ייחסם,אפשרות לכל אחד למחוק את ההודעות שלו ועוד הרבה דברים יפים ממש כמו ווצאפון בתוספת שידרוגים וקריינות מקצועית משלי, אבל ביטלתי את זה בגלל שיש יותר מידי מקום לפריצה ולא תיהיה לי שליטה 24/7/365 (אם ביויטיוב אסור , אז קל וחומר כאן).

לכן אם משהו רוצה את זה לשימוש פרטי עם שליטה שלו אז שיפנה אלי בפרטי.

בברכה
מנחם
מנחם היקר אנא תשלח לי את ההגדרות האלו למייל שלי 5377408@gmail.com
תודה מראש

רבי יצחק
הודעות: 167
הצטרף: 10:58 02/12/2019

Re: הודעות אישיות במערכת IVR2

שליחהעל ידי רבי יצחק » 18:28 04/12/2019

שלום רב
בניתי שלוחה להודעות אישיות ב-ivr כמו בוואטסאפ איזור אישי ,
רק מה שחסר לי זה צינתוק או שיודיע למאזין בתפריט שיש לו הודעה חדשה,
אשמח אם למישהו יש פיתרון וכשנכנס לקו אני רוצה שישמיע לו הודעה "יש לך הודעה אישית חדשה".
אפשרי בתשלום סמלי.
נערך לאחרונה על ידי רבי יצחק ב 19:37 31/12/2019, נערך 2 פעמים בסך הכל.

אלחנן למד 22
הודעות: 175
הצטרף: 18:24 27/08/2019

Re: הודעות אישיות במערכת IVR2

שליחהעל ידי אלחנן למד 22 » 17:20 26/12/2019

שלום רב
בניתי שלוחה להודעות אישיות ב-ivr כמו בוואטסאפ איזור אישי ,
רק מה שחסר לי זה צינתוק או שיודיע למאזין בתפריט שיש לו הודעה חדשה,
אשמח אם למישהו יש פיתרון וכשנכנס לקו אני רוצה שישמיע לו הודעה "יש לך הודעה אישית חדשה".
אפשרי בתשלום סמלי.
לפרטים מייל gross7676@gmail.com
אני רוצה לדעת איך האם מדובר בAPI או בהגדרה רגילה אשמח אם תשתף מאוד חשוב לי
תודה מראש


חזור אל “טיפים עצות והדגמות”

מי מחובר

משתמשים הגולשים בפורום זה: אין משתמשים רשומים | 6 אורחים