דף 1 מתוך 4

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

נשלח: 20:10 18/11/2018
על ידי קול הירושלמי
לכל מי שחיפש עד היום מודל של הודעות אישיות להשארת הודעות פרטיות במערכות 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
(2.97 KiB) הורד 263 פעמים
(אל תשכחו לחלץ את הקבצים!!!)

שלב 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, '2345') !== false) {
$t = str_replace("2345", "$PrivateMessageLine",$t);}
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;
    }
}
יבוא על הברכה מי שירים את הכפפה וישים את המודל על שרת לטובת הציבור. :!:

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

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

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

בברכה
מנחם

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

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

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

בברכה
מנחם
למה הודעות אישיות בוואצאפ פון זה בסדר וכאן לא?

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

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

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

בברכה
מנחם
למה הודעות אישיות בוואצאפ פון זה בסדר וכאן לא?
בוואצאפון, לא הוא עשה את זה אלא ימות המשיח
והם אכן לוקחים אחריות מלאה
ואין בזה פריצוֹת, ב"ה

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

נשלח: 12:02 21/11/2018
על ידי 0795731198
לכל מי שחיפש עד היום מודל של הודעות אישיות להשארת הודעות פרטיות במערכות 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 ולא לתת לבחור מספר אישי

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

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

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

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

נשלח: 19:08 21/11/2018
על ידי קול הירושלמי
לא הבנתי בשביל מה צריכים את ה api יש את המודול להקלטה לפי id כלומר, שהקלטה נשמרת לפי id של של אותו id שהקליט
ואז אם אני רוצה להקליט למשל לטלפון 0527105271 אז אני מתחבר אם אותו id ומקליט ובשלוחה של שמיעת ההודעות אני כמובן מגידר התחברות לפי phone ולא לתת לבחור מספר אישי
המודל הזה המיועד למנהלי מערכות שרוצים להשאיר הודעה אישית לאחד מהמאזינים בלי צורך להתקשר אליו ובלי שאף אחד אחר יוכל להאזין להודעה הזו(כמובן אם הוא לא יזייף את המספר).

.
אולי @אדד יפתח אשכול מיוחד לעניין.
כבר קיים
בנוסף, שים לב לשינוי הנחוץ בקובץ ext.ini ובקובץ ה-PHP, לכל מי שהוריד כבר מומלץ להוריד את החבילה החדשה, [אחרת עלולה להיווצר שגיאה בשלוחת ההפניות].

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

נשלח: 19:16 21/11/2018
על ידי קול הקורא
לא הבנתי בשביל מה צריכים את ה api יש את המודול להקלטה לפי id כלומר, שהקלטה נשמרת לפי id של של אותו id שהקליט
ואז אם אני רוצה להקליט למשל לטלפון 0527105271 אז אני מתחבר אם אותו id ומקליט ובשלוחה של שמיעת ההודעות אני כמובן מגידר התחברות לפי phone ולא לתת לבחור מספר אישי
המודל הזה המיועד למנהלי מערכות שרוצים להשאיר הודעה אישית לאחד מהמאזינים בלי צורך להתקשר אליו ובלי שאף אחד אחר יוכל להאזין להודעה הזו(כמובן אם הוא לא יזייף את המספר).
עד הרגע הזה אני לא מבין מה יש כאן שאין במודול הקלטות למאזינים.
אף אחד לא יכול לשמוע הודעות של מישהו אחר.
גם מנהל המערכת יכול להשאיר הודעות למאזינים.
ואם אתה רוצה שיהיה שלוחה נפרדת למנהל אז תעשה שלוחה נפרדת. אבל מה המודול הזה נותן שלא קיים במודול הקלטות למאזינים?

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

נשלח: 20:28 21/11/2018
על ידי אבי 300
בנוסף, שים לב לשינוי הנחוץ בקובץ ext.ini ובקובץ ה-PHP, לכל מי שהוריד כבר מומלץ להוריד את החבילה החדשה, [אחרת עלולה להיווצר שגיאה בשלוחת ההפניות].
אשמח עם תשלח (PR ( Pull Request עם תיקונים לקובץ README.md עם הסברים על השינויים הנצרכים ותהליך ההתקנה.

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

נשלח: 20:34 21/11/2018
על ידי קול הירושלמי
צור קשר במייל
phone.nomber3@gmail.com