2016-12-06 3 views
3

twilioを使用して大量のSMSメッセージを送信しています。ある顧客がメッセージをもう受信したくないと判断し、「停止」して返信して、それをブラックリストに追加するとしましょう。私はまだ自分の携帯電話でテストしているので、電話番号をハードコーディングしています。コードからブラックリストの数字を削除しないと、エラーメッセージが表示され、その時点でスクリプトが停止することに気付きました。Twilioブラックリストルール致命的エラー

今後、私はおそらくデータベースやファイルに格納されている数字を使用しています。その場合、どうしたらこの問題を克服できますか?基本的に私がやりたいことは:数字がブラックリストにある場合は、次の数字に移動して、例外や何かを使ってエラーを回避します。 エラーメッセージとコードは次のとおりです。

おかげで、

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<html> 
<head> 
<title>Send SMS</title> 
<?php 
    /* Send an SMS using Twilio. You can run this file 3 different ways: 
    * 
    * 1. Save it as sendnotifications.php and at the command line, run 
    *   php sendnotifications.php 
    * 
    * 2. Upload it to a web host and load mywebhost.com/sendnotifications.php 
    * in a web browser. 
    * 
    * 3. Download a local server like WAMP, MAMP or XAMPP. Point the web root 
    * directory to the folder containing this file, and load 
    * localhost:8888/sendnotifications.php in a web browser. 
    */ 

    // Step 1: Get the Twilio-PHP library from twilio.com/docs/libraries/php, 
    // following the instructions to install it with Composer. 
    //require_once "vendor/autoload.php"; 
    require __DIR__ . '/twilio-php-master/Twilio/autoload.php'; 
    use Twilio\Rest\Client; 

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

    // Step 3: instantiate a new Twilio Rest Client 
    $client = new Client($AccountSid, $AuthToken); 

    // Step 4: make an array of people we know, to send them a message. 
    // Feel free to change/add your own phone number and name here. 
    $people = array(
     "+1757" => "Chris", 
     "+17571234568" => "Hussam" 
    ); 

    // Step 5: Loop over all our friends. $number is a phone number above, and 
    // $name is the name next to it 
    foreach ($people as $number => $name) { 

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

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

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

       // the sms body 
       'body' => "Hey $name, this is Hussam. Testing Twilio SMS API!" 
      ) 
     ); 

     // Display a confirmation message on the screen 
     echo "Sent message to $name.\n"; 
    } 
?> 

致命的なエラー(!):キャッチされない例外 'Twilio \例外\ RestException'「メッセージでは、[HTTP 400]は、レコードを作成できません:メッセージを/ペアからは、ブラックリストルールに違反します。 Twilio \ Exceptions \ RestException:[HTTP 400]レコードを作成できません:From/Toペアのメッセージは、次のように違反しています。ブラックリストルール。 C:¥wamp64¥www¥Twilio¥twilio-php-master¥Twilio¥Version.php 86行目コールスタック

時間メモリ機能場所1 0.0000 239280 {main}()... \ send.php: 0 2 0.0156 799016 Twilio \ Rest \ Api \ V2010 \ Account \ MessageList-> create()... \ send.php:56 3 0.0156 814688 Twilio \ Version-> create()... \ MessageList.php:63

答えて

2

ここではTwilioの開発者のエバンジェリストです。

ブラックリストに登録された番号にメッセージを送信する要求からスローされた例外を捕捉する必要があります。あなたは、このようなtrycatchでそうすることができます。

foreach ($people as $number => $name) { 
    try { 
     $sms = $client->account->messages->create(
      $number, 
      array(
       'from' => "+18443949780", 
       'body' => "Hey $name, this is Hussam. Testing Twilio SMS API!" 
      ) 
     ); 
     echo "Sent message to $name.\n"; 
    } catch (Exception $e) { 
     echo "Couldn't send message to $number\n"; 
    } 
} 

データベースにこれをフックするとき、あなたはブロックされたとして、あなたが「ドンように番号をマークするためにフィールドを更新するためにcatchを使用したいと思いますもう一度それを送信しようとしないでください。

それがまったく役に立ったら教えてください。

+0

恐ろしいですね!出来た!!ありがとう.. –

+0

問題ありません!あなたのアプリケーションの残りの部分と幸運! – philnash

+0

あなたは私を冗談していますか?誰かがブラックリストに載っているときにクラッシュする理由は?あなたはちょうどエラーコードを返せませんか?これはとてもプロフェッショナルではありません。 –