2015-08-13 62 views
0

在我的數據庫中,我有這樣的調用SID,Twilio中不存在。這是另一個問題,但這是事實。驗證呼叫SID

下面的代碼:

$call = $client->account->calls->get(
     'YYYYYYYYYYYY7' 
    ); 

    var_dump($call->price); 

拋出:

Services_Twilio_RestException 

The requested resource /2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXX/Calls/YYYYYYYYYYYY7.json was not found 

但下面的代碼:

$call = $client->account->calls->get(
     'YYYYYYYYYYYY7' 
    ); 

    var_dump($call->sid); 

正常工作:

string(34) "CAYYYYYYYYYYYYYYYYYY7" 

如果我採取有效呼叫SID,並做到這一點:

$call = $client->account->calls->get(
     'CASSSSSSSSSSSSSSSSSSSSSSS' 
    ); 

    var_dump(isset($call->price)); 
    echo '<br />'; 
    var_dump(!empty($call->duration)); 
    echo '<br />'; 
    var_dump($call->price); 
    echo '<br />'; 
    var_dump($call->duration); 

我會得到這樣的:

bool(false) 
bool(false) 
string(8) "-0.01400" 
string(2) "32" 

問題

Twilio SDK是這麼寫的,原來有沒有在代碼失敗之前檢查該呼叫項目是否具有某種屬性的方法。

當某些呼叫(或其他任何內容)可能不存在時,適當的代碼應準備好處理這種情況。

所以我有一個問題:如何驗證使用Twilio PHP SDK調用SID

https://www.twilio.com/docs/php/install

附:

當然我也

function validateCallSID($callsid) { 
     $ch = curl_init("https://api.twilio.com/2010-04-01/Accounts/" . TWILIO_SID . "/Calls/" . $callsid . ".json"); 
     curl_setopt($ch, CURLOPT_USERNAME, TWILIO_SID); 
     curl_setopt($ch, CURLOPT_PASSWORD, TWILIO_ST); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     $json = curl_exec($ch); 
     if (!empty($json)) { 
      $decoded = json_decode($json, true); 
      if (!empty($decoded['sid'])) { 
       return true; 
      } 
     } 
     return false; 
    } 

但我相信,Twilio SDK通過這樣的大公司發展成爲當然的Twilio應該有一個內置的方式做到這一點,但我根本就沒有注意到這一點。

回答

1

Twilio開發人員在這裏傳播。

的Twilio庫都是建立是動態的基礎上,從陣列,和懶惰返回的屬性,讓你不調用API,直到您需要。這就解釋了爲什麼isset($call->price)property返回false但後來有一個值。

我對SID沒有任何價格的電話很感興趣,你可以把它發送到[email protected],這樣我就可以看看那裏發生了什麼。我可以看看如何修復API中的錯誤消息,因爲它不像您展示的那樣是404。

+0

我該如何檢查$ call-> sid是否有效? –

+0

你是什麼意思?從API返回的所有調用對象都有一個'sid'。 – philnash

相關問題