在我的DB中,我有这样的调用SID,在Twilio中不存在。这是另一个问题为什么,但这是一个事实。
以下代码:
$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是这样编写的,因此实际上无法在代码失败之前检查调用项是否具有某些属性。
当某些调用(或任何其他调用)可能不存在时,适当的代码应该准备好处理这种情况。
因此,我有一个问题:如何使用Twilio 验证调用SID ?
https://www.twilio.com/docs/php/install
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当然应该有一个内置的方式来实现它,但我只是没有注意到。
发布于 2015-08-13 09:02:44
两位开发人员在这里传道。
Twilio库都是基于数组返回的属性构建为动态的,并且很懒,因此在需要时才进行API调用。这就解释了为什么isset($call->price) 属性返回false,但是有一个值。
我对SID的电话很感兴趣,虽然它没有价格,你介意把它发送到philnash@twilio.com,这样我就可以看看那里发生了什么。我可以看看如何修复API中的错误消息,因为它不是您所展示的404。
https://stackoverflow.com/questions/31981753
复制相似问题