2015-07-21 54 views
0

我想將Twilio整合到我的Wordpress網站上。Twilio回調URL不稱爲 - PHP&Wordpress

這個想法是讓用戶輸入他們的電話號碼來獲得我們的應用程序的下載鏈接。我們在此提出了一個簡單的表單 - http://evntr.co/download - 並且在提交表單後,將運行EvntrPHP.php代碼。

使用模板代碼,我們很容易就能夠使用免費的Twilio號碼將消息發送到驗證號碼(當前位於To字段中的號碼)。但是,當我們添加StatusCallback參數時,它永遠不會調用我們的callback.php代碼。 EvntrPHP.phpcallback.php位於根目錄 - 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", 
)); 
?> 

我的理解是,流動應該是這樣的:

  1. 用戶導航到evntr.co/download
  2. 用戶提交他們的數字形式
  3. 形式調用EvntrPHP .php併發送文本消息到他們的號碼
  4. Twilio POSTs到callback.php,只要消息的狀態發生變化(發送,發送,取消等)。

但是,每次我提交表單時,都會發送消息,頁面只停留在evntr.co/EvntrPHP.php,並且不會加載callback.php。也許這是我與回調網址的工作方式的誤解。或者,也許StatusCallback參數不適用於免費的Twilio號碼?

回答

0

Twilio開發者傳道這裏。

你是對的,Twilio回調沒有按照你的預期工作。正如麥肯指出的那樣,該請求是從Twilio到您提供的URL不同步的。您可以使用回調來跟蹤消息的進度,但不會影響用戶的請求。

所以,在你的榜樣,你要麼要呈現的東西,你發出的信息後:

<?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> 

與一些當然比普通<h1>更多的風格!或者,您可以重定向到帶有成功消息的頁面。(PHP不是我最強的話題,但是discussions of redirects are rife on this StackOverflow question

祝你好運與應用程序,並讓我知道如果你有任何更多的Twilio問題!

[編輯]

正如評論討論的,如果你想看看如果API請求成功,你會想要做的事,如:

<?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! 
    } 

?> 

所以,包裹在try/catch塊中調用API並正確響應應從錯誤的電話號碼或其他API錯誤中捕獲大多數錯誤。它不能保證短信已經發送(你會從回叫webhook中獲得),但它可以保證你已經盡你所能來發送短信。

+0

啊,所以在發送消息後,我重定向到我的頁面 - evntr.co/callback.php - 然後根據狀態消息作出反應。你有關於如何捕獲發送到該回調url的狀態消息的示例代碼?我嘗試了一個簡單的回聲變量 - $ _POST ['SmsStatus'] - 但從未顯示任何東西。 – U2Pride15

+0

啊,不,你的重定向完全獨立於任何Twilio的狀態回調。它們異步發生,傾注你的REST API調用。這可能幾乎立即或需要幾分鐘,所以我不會基於任何用戶交互。我不確定你想用回調來完成哪些用戶交互,所以我不確定如何從這一點引導你。 – philnash

+0

Gotcha。我試圖將用戶引導至成功頁面或失敗頁面(例如,由於數字無效,twilio無法發送文本)。我可能會接近這個錯誤。 – U2Pride15

0

回調不像你想象的那樣工作。

通話結束回調(StatusCallback)請求

接收呼叫,從您的應用程序請求TwiML,處理它,終於結束通話後,Twilio會作出異步HTTP請求配置的叫StatusCallback網址Twilio號碼(如果有的話)。通過爲您的Twilio號碼提供StatusCallback URL並捕獲此請求,您可以確定通話何時結束並接收有關通話的信息​​。

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