Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 验证呼叫SID_Php_Validation_Rest_Twilio - Fatal编程技术网

Php 验证呼叫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'

在我的数据库中,我有这样一个在Twilio中不存在的调用SID。这是另一个问题,为什么,但这是一个事实

以下代码:

    $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