使用PHP通过Twilio Rest API发送批量短信

时间:2017-09-21 15:27:28

标签: php twilio twilio-api twilio-php

我正在使用Twilio PHP Library,我想使用Twilio PHP REST API向一大堆人发送短信。我有一个文本文件,其中包含唯一电话号码列表(约1000名成员)。

目前我的计划是创建一个解析文本文件的cron作业,并为文件中的每个电话号码进行REST API调用。

例如:

<?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将处理文件并向其中的每个号码发送短信)。

Twilio有这样的选择吗?我已经阅读了BULK SMS选项here,但这似乎向所有用户发送了静态消息。我需要向每个用户发送唯一的消息。这怎么可能与Twilio?请告诉我。

编辑:27-09-2017: 我听说过Twilio COPILOT,但不知道如何使用该服务。

3 个答案:

答案 0 :(得分:1)

Twilio开发者传道者在这里。

为了提炼您的问题,您需要向用户发送大约1000条独特的消息,对吗?

如果是这种情况,那么这就是你需要做的事情。

由于邮件对每个号码都是唯一的,因此您需要单独make an API call to the Twilio REST API to send each message。 Twilio限制每秒每个号码发送一条消息的消息。如果您已经超过此限制,那么Twilio将为您排队这些消息。每个API调用不应该花费5秒钟。

如果您使用一个数字,就像在原始示例中一样。对于1000条消息,发送它们将花费将近17分钟。

但是,您可以使用消息传递服务来加快速度。消息服务是由Copilot提供的数字池和其他服务(包括地理匹配号码,字母数字发送者后备和其他此类事物)。对于发送大量消息,例如在这种情况下,数字池是重要的部分,因为您发送的每个Twilio号码每秒可以发送1条消息。因此,如果您向消息传递服务添加2个号码,您可以每秒发送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.

然后,您可以使用消息服务SID代替API调用中的起始号码。

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

然后,您的消息将由消息传递服务扇出。

值得注意的是,如果您需要在一天内发送1000条消息,我们建议您在至少4个号码上传播这些消息,因为美国运营商开始阻止使用超过该代码的长代码。请查看我们的guidelines for sending SMS messages to the US

中的更多内容

让我知道这是否有帮助。

答案 1 :(得分:0)

非常简单。首先正确配置您的电话号码以进行通知,然后使用我的代码:

$message = 'Any text message';
$to = array();
foreach ($users as $user) { 
    $to[] = '{"binding_type":"sms", "address":"'.$user->phone_number.'"}';
}

$sid    = 'TWILIO_ACCOUNT_SID';
$token  = 'TWILIO_AUTH_TOKEN';
$services_id = 'TWILIO_SERVICE_ID';
$twilio = new Client($sid, $token);


$notification = $twilio
->notify->services($services_id)
->notifications->create([
    "toBinding" => $to,
    "body" => $message
]);

答案 2 :(得分:-1)

您是否有能力创建SQL连接? 1列用于容纳要呼叫的号码,一列用于消息内容?

然后,您可以使用上面的脚本遍历表格中的行,一次启动一条消息。

vector<int> vec;

//a
auto foo = [&vec](){
    //do something
};

//b
auto foo = [&v = vec](){
    //do something
};