2017-09-21 33 views
3

私はTwilio PHP Libraryを使用しています.Twilio PHP REST APIを使用して多数の人にSMSメッセージを送信します。私は一意の電話番号(約1000人のメンバー)のリストを含むテキストファイルを持っています。Twilio Rest API(PHP付き)を使用したバルクSMSの送信

私の計画は、テキストファイルを解析し、ファイル内の各電話番号に対してREST APIを呼び出すcronジョブを作成することでした。

例:

<?php 
require_once 'vendor/autoload.php'; 
use Twilio\Rest\Client; 
$sid = "ACXXXXXXXXXXXXXXXXXXXXXXXX"; 
$token = "XXXXXXXXXXXXXXXXXXXXXXXXXX"; 
$client = new Client($sid, $token); 

$sms_sent = $client->messages->create(
    '+1xxxxxxxxxx', 
    array(
     'from' => '+1xxxxxxxxxx', 
     'body' => "XXXXXX XXXXXX", 
     'statusCallback' => "http://myapplication_callback_url" 
    ) 
); 

が、私はTwilioにテキストファイルをアップロードしますようTwilioは(私のために仕事をすることができ、Twilioは、ファイルを処理し、各番号にSMSを送信するかどうか、知りたいと思いましたその中に)。

Twilioでこのようなオプションはありますか?私はBULK SMSのオプションhereについて読んだが、それはすべてのユーザーに静的なメッセージを送信するようだ。私は各ユーザーに一意のメッセージを送信する必要があります。 Twilioではどのようにこれが可能ですか?私にお知らせください。

EDIT:27-09-2017: 私は約Twilio COPILOTではなく、そのサービスを利用する方法がわから聞いたことがあります。

+1

https://support.twilio.com/hc/en-us/requests/newに質問してみませんか?それはかなりのプログラミング問題ではありません。 –

+1

Twilioに数字のあるテキストファイルをアップロードしたいのですが、「各ユーザへのユニークなメッセージ」はどこから来ますか? –

+0

@AlexBaban私は、Twilioがテキストファイルの解析中にユーザーにメッセージを送信するためにおそらく使用できる、各呼び出しごとに固有のメッセージを出力するWebサービスURLを指定することもできます。 –

答えて

1

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

問題を解決するには、約1000件のユニークなメッセージをユーザーに送信する必要があります。

これが当てはまる場合は、これが必要です。

メッセージは各番号に固有のものなので、個別にmake an API call to the Twilio REST API to send each messageにする必要があります。 Twilioはメッセージを1秒あたり1メッセージで送信します。すでにこの制限を超えている場合、Twilioはそれらのメッセージをあなたのためにキューに入れます。 API呼び出しあたり5秒かかることはありません。

元の例のように、1つの番号を使用する場合に当てはまります。 1000のメッセージの場合、それらをすべて送信するのに約17分かかります。

ただし、メッセージングサービスを使用してこれをスピードアップすることができます。メッセージングサービスは、Copilotが提供する数字やその他のサービスのプールです(地理的に一致する番号、英数字の送信者のフォールバックなど)。この場合のように多くのメッセージを送信するには、送信元のTwilio番号が1秒あたり1メッセージを送信できるため、番号プールが重要です。したがって、メッセージングサービスに2つの番号を追加すると、1秒あたり2つのメッセージを送信できます。プールに10の番号を追加すると、10秒を送信できます。

メッセージングサービスと番号プールを使用してメッセージを送信するには、このようにcreate a messaging service in your Twilio consoleが必要です。プールの番号を追加または購入します。その後、メッセージングサービスのSIDを取得:

Find the messaging service SID in your Twilio console where you created the service.

その後、APIへの呼び出しで番号からの代わりに、メッセージングサービスSIDを使用することができます。

$sms_sent = $client->messages->create(
    '+1xxxxxxxxxx', 
    array(
     'from' => 'MESSAGING SERVICE SID', 
     'body' => "XXXXXX XXXXXX", 
     'statusCallback' => "http://myapplication_callback_url" 
    ) 
); 

メッセージがメッセージングサービスによって取り出されます。

特に、1日に1000通のメッセージを送信する必要がある場合は、アメリカの通信事業者がそれ以上使用される長いコード番号をブロックし始めるため、少なくとも4つの番号に拡散することをおすすめします。詳しくはguidelines for sending SMS messages to the USをご覧ください。

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

+0

これは間違いなく多くを助けます。ご回答有難うございます。私はメッセージの送信に関して1つの質問があります。あなたのコードでは、どこで複数の数字を指定する必要がありますか?私が見ることができる限り、ただ1つの番号があります( '+ 1xxxxxxxxxx')。これを1000個の数字の配列にすることはできますか? –

+1

ああ、申し訳ありません。 1000個の数値を繰り返し、それぞれに '$ client-> messages-> create'を呼び出す必要があります。 – philnash

+0

私はそれを試して、それがどのように行ったのかを知らせるでしょう...迅速な返信のためにありがとう:) –

-1

SQL接続を作成できますか?コールする番号を格納する1列、メッセージの内容に1列

上記のスクリプトを使用してテーブルの行をループして、メッセージを一度に1つずつ消去できます。

//spaghetti code, will not work 
//1. Create MySQL Connection 
//2. loop through table 
foreach($row as $number=>$message) { 
$sms_sent = $client->messages->create(
    $number, 
    array(
     'from' => '+1xxxxxxxxxx', 
     'body' => $message, 
     'statusCallback' => "http://myapplication_callback_url" 
     ) 
    ); 
} 
+0

このアイデアはcronジョブとしては良いと思われますが、1000レコードをループし、メッセージを1つずつ送信するには1時間以上かかります(API呼び出しあたり5秒と仮定します)。私はTwilioからのより簡単なソリューションを期待しています。 –

関連する問題