Php 验证呼叫SID
在我的数据库中,我有这样一个在Twilio中不存在的调用SID。这是另一个问题,为什么,但这是一个事实 以下代码:Php 验证呼叫SID,php,validation,rest,twilio,Php,Validation,Rest,Twilio,在我的数据库中,我有这样一个在Twilio中不存在的调用SID。这是另一个问题,为什么,但这是一个事实 以下代码: $call = $client->account->calls->get( 'YYYYYYYYYYYY7' ); var_dump($call->price); $call = $client->account->calls->get( 'YYYYYYYYYYYY7'
$call = $client->account->calls->get(
'YYYYYYYYYYYY7'
);
var_dump($call->price);
$call = $client->account->calls->get(
'YYYYYYYYYYYY7'
);
var_dump($call->sid);
抛出:
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->price);
$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);
问题
TwilioSDK是这样编写的,以至于在代码失败之前,实际上无法检查调用项是否具有特定属性
当某些调用(或任何其他调用)可能不存在时,适当的代码应该准备好处理这种情况
所以我有一个问题:如何使用Twilio PHP SDK验证调用SID
p.S.
当然了
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这样的大公司开发的Twilio SDK当然应该有一种内置的方式来实现,但我根本没有注意到这一点。Twilio开发者布道者 Twilio库都是动态构建的,基于从数组返回的属性,并且是惰性的,因此在需要时才进行API调用。这就解释了为什么
isset($call->price)
返回false
但随后有一个值
我对SID的电话很感兴趣,但是没有价格,你介意把它发送给我吗philnash@twilio.com所以我可以看看那里发生了什么。我可以考虑修复API中的错误消息,因为它不是您显示的404。如何检查$call->sid是否有效?您的意思是什么?从API返回的所有调用对象都将具有
sid
。