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

קול הירושלמי
הודעות: 439
הצטרף: 14:33 14/06/2018

הודעות אישיות במערכת 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) הורד 262 פעמים
(אל תשכחו לחלץ את הקבצים!!!)

שלב 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;
    }
}
יבוא על הברכה מי שירים את הכפפה וישים את המודל על שרת לטובת הציבור. :!:
נערך לאחרונה על ידי קול הירושלמי ב 21:03 16/12/2018, נערך 2 פעמים בסך הכל.

מנחם מענדל מענדי
הודעות: 980
הצטרף: 16:42 28/04/2016

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

שליחהעל ידי מנחם מענדל מענדי » 07:34 19/11/2018

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

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

בברכה
מנחם

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

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

שליחהעל ידי sbb0799 » 18:16 19/11/2018

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

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

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

אאד
הודעות: 1650
הצטרף: 15:20 11/05/2017
מיקום: ישראל
יצירת קשר:

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

שליחהעל ידי אאד » 19:10 19/11/2018

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

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

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

0795731198
הודעות: 9
הצטרף: 23:10 17/11/2018

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

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

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

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

שליחהעל ידי אבי 300 » 13:39 21/11/2018

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

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

קול הירושלמי
הודעות: 439
הצטרף: 14:33 14/06/2018

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

שליחהעל ידי קול הירושלמי » 19:08 21/11/2018

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

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

קול הקורא
הודעות: 123
הצטרף: 13:28 27/10/2017
מיקום: 03-30-80-840

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

שליחהעל ידי קול הקורא » 19:16 21/11/2018

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

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

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

שליחהעל ידי אבי 300 » 20:28 21/11/2018

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

קול הירושלמי
הודעות: 439
הצטרף: 14:33 14/06/2018

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

שליחהעל ידי קול הירושלמי » 20:34 21/11/2018

צור קשר במייל
phone.nomber3@gmail.com


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

מי מחובר

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