我正在使用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,但不知道如何使用该服务。
答案 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:
然后,您可以使用消息服务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
};