2015-05-25 8 views
5

Ich benutze Twilio PHP-Bibliothek, aber die Frage ist eigentlich sprachunabhängig. Ich habe versucht, so etwas wie folgendes zu tun:Gibt es eine Möglichkeit, einen benutzerdefinierten Parameter zu übergeben, wenn Sie mit Twilio telefonieren?

$client = new Services_Twilio('MyAccountSID', 'My auth token'); 
$client->account->calls->create($from_number, $to_number, $url_or_AppSID, array(
    'TwilioParam1' => 'value1', 
    'TwilioParam2' => 'value2', 
    'MyCustomParameter1' => 'CustomValue1', 
    'MyCustomParamete2' => 'CustomValue2' 
)); 

Dann habe ich erwartet, dass diese Parameter zu empfangen, wenn Twilio my $ url_or_AppSID angefordert (meine TwiML App), aber es ist nicht geschehen. Ich weiß, dass eine Möglichkeit besteht, eine URL zu erstellen, indem ich diese Parameter in Abfragezeichenfolge hinzufüge und meine benutzerdefinierte URL in $ url_or_AppSID -Parameter übergebe, aber das zwingt mich, die GET-Methode zu setzen und meine benutzerdefinierten Parameter durch eine POST-Anfrage zu übergeben. nicht bekommen. Auch ist es wahrscheinlich, dass ich eine AppSID verwenden muss, die bereits eine Anfrage URL über POST registriert hat.

Gibt es eine Möglichkeit, benutzerdefinierte Parameter mit der POST-Methode zu übergeben?

Antwort

5

Schließlich erhielt ich eine Antwort von Twilio Support:

Leider können Sie benutzerdefinierte Parameter wie unten hinzufügen. Sie haben Recht damit, dass Sie die Parameter nur der Querystring hinzufügen können, und wir würden diese Parameter einfach an Ihre Anwendung weitergeben.

Dann schickte ich ihnen eine Feature-Anfrage:

Ich denke, das für zukünftige Versionen in Betracht gezogen werden sollte.

Sie antworteten mir:

Wenn diese Funktion Anfrage nicht bereits vorhanden ist. Ich werde es hinzufügen.

Nun bleiben Sie dran für zukünftige Veröffentlichung.

+2

Es steht noch aus: D – yunas

0

Es gibt wahrscheinlich keine Möglichkeit, benutzerdefinierte Parameter im POST zu senden. Die einzige Möglichkeit zum Senden ist das Erstellen der URL in GET.

Das letzte Parameter-Array kann nur spezifische keys enthalten, d. H. SendDigits, IfMachine, Timeout.

Docs for reference

+0

Dank @mansoor.Ich habe die gesamte Dokumentation überprüft und sie haben nichts über benutzerdefinierte Parameter erwähnt, aber ich habe die Hoffnung, dass jemand einen Weg kennt, um dies zu tun, aber schließlich bestätigt Twilio Support unsere Vermutung :( – Delmo

3

Twilio weist jedem Aufruf eine eindeutige Anruf-SID zu, und da dieser Parameter sowohl beim Erstellen des Anrufs als auch beim Senden einer Anfrage an den Handler verfügbar ist, kann ich meine eigene Datenbank verwenden, um die Parameter zu übergeben.

Die Verwendung einer Datenbank mag ziemlich viel Overhead erscheinen, aber wenn ich auch das "Ergebnis" des Anrufs speichern möchte (zB hat der Kunde den Hörer abgenommen? Sind wir zu einem Automaten gekommen?), Ich ' m sowieso schon alle notwendigen Funktionen implementieren.

mein Java-Code So sieht einen Anruf zu tätigen, wie folgt:

Map<String, String> params = new HashMap<String, String>(); 
params.put("From", myTwilioPhoneNumber); 
params.put("To", customerPhone); 
params.put("Url", myHandlerUrl)); 
Call call = client.getAccount().getCallFactory().create(params); 
// THE LINE BELOW IS THE KEY TO PARAMETER PASSING 
db.store(call.getSid(), myCustomParametersJSON); 

Nun, mein Handler Servlet-Code beginnt wie folgt aus:

Sting callSid = request.getParameter("CallSid"); 
// Optionally sleep 20 ms to make sure that data written by 
// db.store(call.getSid(), myCustomParametersJSON); 
// can now be read. 
CustomData customData = parseJSON(db.fetchKey(callSid)); 
TwiMLResponse twimlResponse = new TwiMLResponse(); 
Say sayMessage = new Say(makeCustomMessage(customData)); 
twimlResponse.append(sayMessage); 
...