使用 PHP 通过 Twilio Rest API 发送群发短信
Send Bulk SMS via Twilio Rest API with PHP
我正在使用 Twilio PHP Library,我想向一大群使用 Twilio PHP REST API 的人发送 SMS 消息。我有一个文本文件,其中包含唯一 phone 号码列表(大约 1000 个成员)。
目前我的计划是创建一个 cron 作业,它解析文本文件,并对文件中的每个 phone 数字进行 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,但不确定如何使用该服务。
您有能力创建 SQL 连接吗? 1 列用于呼叫号码,1 列用于消息内容?
然后您可以使用上面的脚本遍历 table 中的行,一次发送一条消息。
//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"
)
);
}
这里是 Twilio 开发人员布道者。
为了提炼您的问题,您需要向用户发送大约 1000 条不同的消息,对吗?
如果是这样,那么这就是您需要做的。
由于消息对于每个号码都是唯一的,因此您需要单独 make an API call to the Twilio REST API to send each message。 Twilio 将消息发送限制为每秒每个数字 1 条消息。如果您已经超过此限制,那么 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.
中查看更多信息
如果有帮助请告诉我。
很简单。首先正确配置您的号码以进行通知,然后使用我的代码:
$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
]);
我正在使用 Twilio PHP Library,我想向一大群使用 Twilio PHP REST API 的人发送 SMS 消息。我有一个文本文件,其中包含唯一 phone 号码列表(大约 1000 个成员)。
目前我的计划是创建一个 cron 作业,它解析文本文件,并对文件中的每个 phone 数字进行 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,但不确定如何使用该服务。
您有能力创建 SQL 连接吗? 1 列用于呼叫号码,1 列用于消息内容?
然后您可以使用上面的脚本遍历 table 中的行,一次发送一条消息。
//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"
)
);
}
这里是 Twilio 开发人员布道者。
为了提炼您的问题,您需要向用户发送大约 1000 条不同的消息,对吗?
如果是这样,那么这就是您需要做的。
由于消息对于每个号码都是唯一的,因此您需要单独 make an API call to the Twilio REST API to send each message。 Twilio 将消息发送限制为每秒每个数字 1 条消息。如果您已经超过此限制,那么 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.
中查看更多信息如果有帮助请告诉我。
很简单。首先正确配置您的号码以进行通知,然后使用我的代码:
$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
]);