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.xml
REST 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);
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 –
Können Sie den Code teilen, den Sie für die Einrichtung Ihrer Rückrufe verwendet haben? – philnash
Ja, bearbeitet. Callback ist eine absolute URL auf demselben Server. –