验证呼叫SID

时间:2015-08-13 07:12:10

标签: php validation rest twilio

在我的数据库中,我有一个在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

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当然应该采用内置方式来实现,但我根本没有注意到它。

1 个答案:

答案 0 :(得分:2)

Twilio开发者传道者在这里。

Twilio库都是基于从数组返回的属性而构建的,并且是惰性的,因此在您需要之前不要进行API调用。这解释了为什么isset($call->price) property会返回false,但之后会有一个值。

我对没有价格的电话SID很感兴趣,你介意把它发送到philnash@twilio.com所以我可以看看那里发生了什么。我可以看看修复API中的错误消息,因为它不是你所展示的404。