Twilio-Callback-URL wird nicht aufgerufen – PHP und WordPress

Lesezeit: 4 Minuten

Twilio Callback URL wird nicht aufgerufen – PHP und Wordpress
U2Pride15

Ich versuche, Twilio in meine WordPress-Site zu integrieren.

Die Idee ist, dass Benutzer ihre Telefonnummer eingeben können, um einen Download-Link zu unserer App zu erhalten. Wir haben hier ein einfaches Formular aufgestellt – http://evntr.co/download – und beim Absenden des Formulars, die EvntrPHP.php Code wird ausgeführt.

Mithilfe des Vorlagencodes war es uns leicht möglich, das Formular zum Senden einer Nachricht an eine verifizierte Nummer (diejenige, die derzeit im Feld „An“ steht) mithilfe einer kostenlosen Twilio-Nummer zu erhalten. Wenn wir jedoch den StatusCallback-Parameter hinzufügen, ruft er niemals unsere auf callback.php Code. Beide EvntrPHP.php und callback.php befinden sich im Stammverzeichnis – evntr.co/.

<?php
 require 'twiliophp/Services/Twilio.php';

 $AccountSid = "--------";
 $AuthToken = "---------";

 $client = new Services_Twilio($AccountSid, $AuthToken);

 $phonenum = $_POST["phonenum"];
 $callbackURL = "https://evntr.co/callback.php";

 $client->account->messages->create(array( 
    'To' => "XXXXXXXXXX", 
    'From' => "+XXXXXXXXXX", 
    'Body' => "Test Message",  
    'StatusCallback' => "https://evntr.co/callback.php", 
 ));
?>

Mein Verständnis ist, dass der Fluss so sein sollte:

  1. Benutzer navigiert zu evntr.co/download
  2. Benutzer sendet das Formular mit seiner Nummer
  3. form ruft EvntrPHP.php auf und sendet eine Textnachricht an ihre Nummer
  4. Twilio sendet an callback.php, wenn sich der Status der Nachricht ändert (Gesendet, Zugestellt, Abgebrochen usw.).

Jedes Mal, wenn ich das Formular absende, wird die Nachricht jedoch gesendet und die Seite bleibt einfach bei evntr.co/EvntrPHP.php und lädt niemals callback.php. Vielleicht ist dies ein Missverständnis meinerseits mit der Funktionsweise von Callback-URLs? Oder funktioniert der StatusCallback-Parameter nicht mit einer kostenlosen Twilio-Nummer?

Twilio Callback URL wird nicht aufgerufen – PHP und Wordpress
philnash

Twilio-Entwickler-Evangelist hier.

Sie haben Recht, dass die Twilio-Callbacks nicht wie erwartet funktionieren. Wie McCann betont, erfolgt die Anforderung asynchron von Twilio an die von Ihnen angegebene URL. Sie können den Rückruf verwenden, um den Fortschritt der Nachricht zu verfolgen, aber die Anfrage des Benutzers nicht beeinflussen.

In Ihrem Beispiel möchten Sie also entweder etwas rendern, nachdem Sie die Nachricht gesendet haben:

<?php
  require 'twiliophp/Services/Twilio.php';

  // other stuff

  $client->account->messages->create(array( 
    'To' => $phonenum, 
    'From' => "+14708655xxx", 
    'Body' => "Test Message",  
    'StatusCallback' => "https://evntr.co/callback.php", 
  ));
?>

<h1>You should receive an SMS, click the link in the SMS to download the app on the platform of choice.</h1>

Mit etwas mehr Stil als ein Uni <h1> Natürlich! Oder Sie könnten auf eine Seite mit einer Erfolgsmeldung weiterleiten. (PHP ist nicht mein stärkstes Thema, aber Diskussionen über Umleitungen sind bei dieser StackOverflow-Frage weit verbreitet.)

Viel Glück mit der App und lassen Sie es mich wissen, wenn Sie weitere Twilio-Fragen haben!

[edit]

Wie in den Kommentaren besprochen, sollten Sie Folgendes tun, wenn Sie sehen möchten, ob die API-Anfrage erfolgreich war:

<?php
  require 'twiliophp/Services/Twilio.php';

  // other stuff

  try {
    $client->account->messages->create(array( 
      'To' => $phonenum, 
      'From' => "+14708655xxx", 
      'Body' => "Test Message",  
      'StatusCallback' => "https://evntr.co/callback.php", 
    ));

    // Success! Redirect to success page!
    header("Location: http://evntr.co/success.php");
    die();

  } catch (Services_Twilio_RestException $e) {
    // Something went wrong!
    // Do something about it!
  }

?>

Wenn Sie also den API-Aufruf in einen try/catch-Block einpacken und entsprechend reagieren, sollten die meisten Fehler aufgrund falscher Telefonnummern oder anderer API-Fehler abgefangen werden. Es garantiert nicht, dass die SMS zugestellt wurde (Sie erhalten das vom Rückruf-Webhook), aber es garantiert, dass Sie alles getan haben, um die SMS zu erhalten.

  • Ah, also nach dem Absenden der Nachricht leite ich auf meine Seite – evntr.co/callback.php – weiter und reagiere dann anhand der Statusmeldung. Haben Sie einen Beispielcode zum Abfangen der Statusmeldungen, die an diese Rückruf-URL gesendet werden? Ich habe ein einfaches Echo der Variablen – $_POST – versucht[‘SmsStatus’] – aber das zeigte nie etwas.

    – U2Pride15

    22. Juli 15 um 20:14 Uhr

  • Ah, nein, Ihre Weiterleitung ist völlig unabhängig von den Statusrückrufen von Twilio. Sie geschehen asynchron, gießen Sie das Band Ihres REST-API-Aufrufs. Dies könnte fast sofort erfolgen oder einige Minuten dauern, daher würde ich keine Benutzerinteraktion darauf stützen. Ich bin mir nicht sicher, welche Benutzerinteraktion Sie mit den Rückrufen erreichen möchten, daher bin ich mir nicht sicher, wie ich Sie von diesem Punkt an führen soll.

    – Philnasch

    22. Juli 15 um 20:26 Uhr

  • Erwischt. Ich versuche, Benutzer entweder auf eine Erfolgsseite oder eine Fehlerseite zu leiten (z. B. konnte Twilio den Text aufgrund einer ungültigen Nummer nicht senden). Vielleicht gehe ich das falsch an.

    – U2Pride15

    22. Juli 15 um 21:06 Uhr

  • Ich habe meiner Antwort noch etwas hinzugefügt, das helfen könnte. Was denkst du?

    – Philnasch

    23. Juli 15 um 9:53 Uhr

  • Das funktioniert. Was ist dann ein Anwendungsfall für die Rückruf-URL? Ich scheine das falsch angegangen zu sein.

    – U2Pride15

    23. Juli 15 um 14:36 ​​Uhr

Der Rückruf funktioniert nicht so, wie Sie es sich vorstellen.

Call-End-Callback-Anfragen (StatusCallback).

Nachdem Sie einen Anruf erhalten, TwiML von Ihrer App angefordert, ihn verarbeitet und den Anruf schließlich beendet haben, sendet Twilio eine asynchrone HTTP-Anforderung an die StatusCallback-URL, die für die angerufene Twilio-Nummer konfiguriert ist (falls vorhanden). Indem Sie eine StatusCallback-URL für Ihre Twilio-Nummer angeben und diese Anfrage erfassen, können Sie feststellen, wann ein Anruf endet, und Informationen über den Anruf erhalten.

https://www.twilio.com/docs/api/twiml/twilio_request

.

784920cookie-checkTwilio-Callback-URL wird nicht aufgerufen – PHP und WordPress

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy