ошибка отлова твилио не работает

Я реализую Twilio в моем приложении Laravel 5. Чтобы использовать его в рамках, которые я использую aloha/laravel-twilio интеграция.

Отправка действительного запроса с тест-учетные работает отлично. У меня есть проблемы, когда я хочу реализовать обработка ошибок.

По какой-то причине перехват не получает ошибку, которая приводит к сбою приложения. Ошибка, кажется, в twilio-sdk если я правильно прочитал сообщение об ошибке.

Вот что я сделал до сих пор:

<?php namespace App;

use Illuminate\Database\Eloquent\Model;
use Aloha\Twilio\TwilioInterface;

class Activation extends Model {
protected $fillable = array( 'a', 'b', 'c');
public static function send() {

// Testaccount
// $toNumber = '+15005550006'; // valid number; works fine
$toNumber = '+15005550001'; // @todo will throw an exeption, and breaks the app
try {
\Twilio::message( $toNumber, 'Pink Elephants and Happy Rainbows');
} catch ( Services_Twilio_RestException $e ) {
elog( 'EACT', $e->getMessage(  ) , __FUNCTION__ );  // this is not called when an twilio error occurs
}
}
}

Это приводит к следующей ошибке:

Whoops, looks like something went wrong.
Services_Twilio_RestException in /path/to/my/laravel/vendor/twilio/sdk/Services/Twilio.php line 297
Exception_message: The 'To' number +15005550001 is not a valid phone number.

Из документации должна быть выброшена эта ошибка (не действительный номер телефона), но у меня должна быть возможность отловить и обработать ее. В настоящее время это не работает. Я не получаю ошибку поймали …

Как я могу получить и обработать twilio-ошибки?

1

Решение

Класс находится в пространстве имен, поэтому я должен сослаться на исключение абсолютного класса — \Services_Twilio_RestException — в улове.

Это работает с этим кодом:

    try {
\Twilio::message( $toNumber, 'Pink Elephants and Happy Rainbows');
} catch ( \Services_Twilio_RestException $e ) {
elog( 'EACT', $e->getMessage(  ) , __FUNCTION__ );
}
13

Другие решения

Сегодня (19 мая-2017) код такой:

    // Step 1: set our AccountSid and AuthToken from https://twilio.com/console
$AccountSid = "XXX";
$AuthToken = "XXX";

$client = new Client($AccountSid, $AuthToken);

try {
$sms = $client->account->messages->create(

// the number we are sending to - Any phone number
$number,

array(
// Step 2: Change the 'From' number below to be a valid Twilio number
// that you've purchased
'from' => "+XXXXXXXXXXX",

// the sms body
'body' => $sms
)
);

// Display a confirmation message on the screen
echo "Sent message to $name";

} catch (TwilioException $e) {
die( $e->getCode() . ' : ' . $e->getMessage() );
}
2

Смотрите ниже, который действует с сегодняшнего дня. TwilioException не действует и не является Services_Twilio_RestException, Вы должны использовать Exception вместо.

Мой вариант использования — мне пришлось отправить в базу данных номеров, а не из-за неправильного номера телефона сломать мой сценарий. Месяц или два назад мы проделали некоторую работу, которая включала ведение журнала при отправке сообщения и проверку cron, где мы останавливались каждые две минуты … неэффективно при отправке десятков тысяч текстовых сообщений.

require_once '../Twilio/autoload.php'; // Loads the library

use Twilio\Rest\Client;

//some test fail numbers
$arr = array(1234567890,"11855976lend1",321619819815,198198195616516);


/* ==================================================================================
//create a function to send SMS using copilot (uses an SID instead of a phone number)
================================================================================*/
function sendSMS($to){
// Download the PHP helper library from twilio.com/docs/php/install
// These vars are your accountSid and authToken from twilio.com/user/account
$account_sid = 'xxx';
$auth_token = 'xxx';
$client = new Client($account_sid, $auth_token);

//this nifty little try/catch will save us pain when we encounter bad phone numbers
try{
$client->messages->create(
$to,
array(
'messagingServiceSid' => "MGxxx",
'body' => "This is the body we're sending.")
);

//sent successfully
echo "sent to $to successfully<br>";
}catch(Exception $e){
echo $e->getCode() . ' : ' . $e->getMessage()."<br>";
}

}


foreach($arr as &$value){
sendSMS($value);
}

//remember to unset the pointer so you don't run into issues if re-using
unset($value);
2
По вопросам рекламы [email protected]