2016-08-16 3 views
0

Mit dem Twilio REST API beendet und Conference Sie einen Anruf zwischen dem Anrufer erstellen und der rep, dass der rep verlassen und wieder betreten, indem Sie * oder 0, wenn ein Twilio REST-API-Aufruf

Wenn die rep drückt * innerhalb einer Conference das Skript auf dem Ende der Wiederholungen entfernt sie von der Conference und bringt sie zu einem Backend, wo sie herausfinden können, was der Kunde benötigt, den Anrufer in einem leeren Conference lassen, bis die Wiederholung durch Drücken von 0 erneut verbindet.

Wenn der Rep aufhängt innerhalb der Conference, der Rückruf "$_POST['CallStatus'] = completed "ist gemacht. Dadurch kann das Skript alle offenen Conference s beenden und so alle wartenden Anrufer zum Hauptmenü umleiten.

jedoch, wenn die rep auflegt, während außerhalb der Conference(das Backend verwenden, während ein Anrufer bleibt abzuwarten) der gleiche Rückruf wird nicht vorgenommen.

Welche Variablen würden anzeigen, dass der Anruf REST API an den Vertreter aufgelegt hat?Ich dachte, es war $_POST['CallStatus'] oder $_POST['DialCallStatus'], aber ich habe für beide angehört, aber war nicht in der Lage, einen Rückruf bei der Trennung für das Ende des Rep zu erzeugen.

From => $from

To => $to

Url => $script_url

StatusCallback => $callback_url

:

Die folgenden Variablen werden über den Calls.xmlREST API geschickt

$callback_url funktioniert und erkennt $_POST['CallStatus'] = in-progress aber nicht completed. (Es sei denn, der Reiseleiter innerhalb der Konferenz auflegt, dann funktioniert es wie beabsichtigt)

CALL FUNCTION

class Call 
{ 
    var $url = 'https://api.twilio.com/2010-04-01/Accounts/XXXXXX/Calls.xml'; 
    var $from = '+1XXXXXX'; 

    function dial($number, $script, $callback = false) 
    { 
     $switch = 'http://XXXXXX.com/' . $script . '.php'; 

     $post = array('From' => $this->from, 'To' => $number, 'Url' => $switch); 

     if ($callback) 
     { 
      $post['StatusCallback'] = $callback; 
      $post['StatusCallbackEvent'] = array("initiated", "ringing", "answered", "completed"); 
     } 

     $curl = curl_init(); 

     curl_setopt($curl, CURLOPT_URL, $this->url); 
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($curl, CURLOPT_VERBOSE, 1); 
     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); 
     curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); 
     curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
     curl_setopt($curl, CURLOPT_USERPWD, 'XXXXXX:XXXXXX'); 

     if ($post) 
     { 
      $data = array(); 

      foreach ($post as $property => $value) 
      { 
       array_push($data, $property . '=' . $value); 
      } 

      curl_setopt($curl, CURLOPT_POST, 1); 
      curl_setopt($curl, CURLOPT_POSTFIELDS, implode('&', $data));   
     } 

     $page = curl_exec($curl); 

     curl_close($curl); 

     return $page; 
    } 
} 

DER RUF

$call = new Call; 
$call->dial($number, $script, $callback); 

Antwort

1

Twilio Entwickler Evangelist hier.

Sie erhalten diesen Rückruf mit dem completed Status, wenn der Rep aufgrund des Wesens des Verbs action attribute on the <Dial> während des Anrufs auflegt. Sobald Sie jedoch außerhalb eines <Dial> sind, haben Sie das nicht mehr.

Es gibt einen Weg, dies zu tun! Sie müssen eingerichtet werden, um Anruffortschrittsereignisse zu empfangen. Sie können sich registrieren, um Webhooks für verschiedene Ereignisse zu empfangen, die ein Anruf durchläuft, von der Warteschlange bis hin zum Abschluss. Sie können sich bei der Generierung eines Aufrufs aus der REST-API unter Verwendung der StatusCallback and StatusCallbackEvent parameters für diese registrieren. Sie können dann einen Webhook erhalten, wenn der Anruf beendet ist, auch wenn Sie außerhalb einer <Dial> sind.

+0

Danke!Ich habe diejenigen vermisst, bearbeitet. Im Moment erstellt die Callback-Seite einfach eine zufällige Textdatei mit den '$ _POST' und' $ _GET'. Ich kann direkt auf die Seite zugreifen und es funktioniert. Diese Seite ist auch eine absolute URL unter "StatusCallBack". Mit zwei Telefonen habe ich beide Personen simuliert und nach dem Auflegen als Rep wird noch keine Anfrage an die Rückrufseite gesendet. (keine neuen Textdateien, aber wenn ich direkt auf die Seite zugreife, ja). Findest du zufällig etwas in meinem Skript oder in meiner Methodik, das das erklären würde? Vielen Dank nochmal –

+0

Können Sie den Code teilen, den Sie für die Einrichtung Ihrer Rückrufe verwendet haben? – philnash

+0

Ja, bearbeitet. Callback ist eine absolute URL auf demselben Server. –