在我的數據庫中,我有這樣的調用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應該有一個內置的方式做到這一點,但我根本就沒有注意到這一點。
我該如何檢查$ call-> sid是否有效? –
你是什麼意思?從API返回的所有調用對象都有一個'sid'。 – philnash