Twilio — не удалось декодировать тело ответа как JSON. Вероятно, это указывает на ошибку сервера 500.

Я использую Twilio Rest API для извлечения некоторых журналов использования.

foreach ($client->account->usage_records->last_month as $record) {
    if ($record->count > 0) {
        $call_record[] = array(
            'category' => $record->category,
            'count' => $record->count,
            'usage' => $record->usage,
            'price'=>$record->price,
            'price_unit'=>$record->price_unit
        );
    }
}

Это дает мне эту ошибку: Неперехваченное исключение «Services_Twilio_RestException» с сообщением «Не удалось декодировать тело ответа как JSON. Вероятно, это указывает на ошибку сервера 500 в /Users/enmanuelcorvo/development/demos/twilio_usage/vendor/twilio/sdk/Services/Twilio.php:28.

Я попытался обернуть код внутри попытки поймать, как это

try {
    // Loop over the list of records and echo a property for each one
    foreach ($client->account->usage_records->last_month as $record) {
        if ($record->count > 0) {
            $call_record[] = array(
                'category' => $record->category,
                'count' => $record->count,
                'usage' => $record->usage,
                'price'=>$record->price,
                'price_unit'=>$record->price_unit
            );
        }
    }
} catch (Exception $e) {
   echo($e->getMessage());
}

и мне удалось вернуть некоторые данные об использовании, но не все. Мне не хватает таких вещей, как исходящие звонки, которые, я точно знаю, у нас есть. Поэтому я думаю, что он ломается, пытаясь получить некоторые категории, и поэтому он выдает ошибку, но это просто очень дикое предположение. Любые идеи, что может быть причиной этого?

Вот трассировка стека:

Stack trace:
**0 /Users/enmanuelcorvo/development/demos/twilio_usage/vendor/twilio/sdk/Services/Twilio.php(265): Base_Services_Twilio->_processResponse(Array)
1 /Users/enmanuelcorvo/development/demos/twilio_usage/vendor/twilio/sdk/Services/Twilio.php(236): Base_Services_Twilio->_makeIdempotentRequest(Array, '/2010-04-01/Acc...', 1)
2 /Users/enmanuelcorvo/development/demos/twilio_usage/vendor/twilio/sdk/Services/Twilio/ListResource.php(120): Base_Services_Twilio->retrieveData('/2010-04-01/Acc...', Array, true)
3 /Users/enmanuelcorvo/development/demos/twilio_usage/vendor/twilio/sdk/Services/Twilio/ListResource.php(179): Services_Twilio_ListResource->getPage(1, 50, Array, '/2010-04-01/Acc...')
4 [internal function]: Services_Twilio_ListResource->getPageGenerator(1, 50,  in /Users/enmanuelcorvo/development/demos/twilio_usage/vendor/twilio/sdk/Services/Twilio.php on line 287**

person ecorvo    schedule 27.08.2015    source источник
comment
Проблемы с сертификатом с завитком? github.com/twilio/twilio-php/issues/226   -  person mansilladev    schedule 27.08.2015
comment
Если это ошибка 500 на стороне Twilio, я бы обратился к нашей команде поддержки. Просто напишите им по адресу [email protected] и сообщите им все подробности.   -  person philnash    schedule 28.08.2015
comment
Служба поддержки Twilio порекомендовала мне переустановить Curl. Попробую.   -  person ecorvo    schedule 28.08.2015
comment
Как переустановить Керл? Я использую его на XAMPP   -  person Rashad    schedule 19.01.2016
comment
Есть ли способ обойти это при разработке на локальном хосте с чем-то вроде XAMPP или WAMP/MAMP?   -  person Xtremefaith    schedule 01.04.2016
comment
Ребята, выходите из MAMP/XAMPP/WAMP и переходите на бродягу, намного лучше   -  person ecorvo    schedule 01.04.2016
comment
Я согласен, что пробовал, и мне понравилось, но узел в основном ломал окна (действительно длинные глубокие каталоги), поэтому, пока я не на Mac, это не вариант :(   -  person Xtremefaith    schedule 01.04.2016
comment
@Xtremefaith, мой следующий совет — выйти из Windows, лол. Я мало что знаю о настройке MAMP. Мне всегда это казалось чрезвычайно сложным. Удачи, надеюсь, вы можете найти помощь   -  person ecorvo    schedule 01.04.2016


Ответы (2)


У Росса Маккея есть статья, в которой предполагается, что проблема связана с установкой PHP. Как он выразился:

Ошибка вызвана отсутствием обновленного пакета корневых сертификатов ЦС. Обычно это текстовый файл с набором криптографических подписей, которые curl использует для проверки SSL-сертификата хоста. Вам необходимо убедиться, что в вашей установке PHP есть один из этих файлов и что он обновлен.

Просто загрузите последний пакет корневых сертификатов ЦС отсюда

Затем в вашем файле php.ini найдите раздел с именем [curl] (в моем случае внизу) и установите curl.cainfo в соответствии с тем, где вы разместили cacert.pem, например:

curl.cainfo=D:\Bitnami\wampstack\php\cacert.pem

Работает как шарм!

Ссылка:

http://snippets.webaware.com.au/howto/stop-turning-off-curlopt_ssl_verifypeer-and-fix-your-php-config/

person Xtremefaith    schedule 01.04.2016

В моем случае ошибка была вызвана неверным вводом accountSID и AuthToken. Убедитесь, что они отформатированы следующим образом:

$AccountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$AuthToken = "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY";

Замените идентификатор вашей учетной записи и AuthToken, найденные на странице www.twilio.com/Console.

person Aclwitt    schedule 16.05.2016