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

使用PHP通过Twilio Rest API发送批量短信,php,twilio,twilio-api,twilio-php,Php,Twilio,Twilio Api,Twilio Php,我正在使用,我想用Twilio PHP REST API向一大群人发送短信。我有一个文本文件,其中包含唯一的电话号码列表(约1000名成员) 目前我的计划是创建一个cron作业,它解析文本文件,并为文件中的每个电话号码调用restapi 例: 您是否能够创建SQL连接?1列用于容纳要呼叫的号码,1列用于消息内容 然后,您可以使用上面的脚本在表中的行中循环,一次发送一条消息 //spaghetti code, will not work //1. Create MySQL Connection /

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

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

例:


您是否能够创建SQL连接?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"
        )
    );
}

这里是Twilio开发者福音传道者

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

如果是这样,那么这就是你需要做的

由于消息对于每个号码都是唯一的,因此您需要单独发送消息。Twilio将消息发送限制为每秒1条消息。如果您已经超过此限制,那么Twilio将为您排队等待这些消息。每次API调用不应花费5秒

如果您使用一个数字,如原始示例中所示,则会出现这种情况。对于1000条消息,几乎需要17分钟才能全部发送

但是,您可以使用消息传递服务来加快速度。消息服务是由副驾驶提供的号码池和其他服务(包括地理匹配号码、字母数字发送者回退等)。对于发送大量消息,例如在本例中,号码池是重要的部分,因为您发送的每个Twilio号码每秒可以发送一条消息。因此,如果向消息服务添加2个号码,则每秒可以发送2条消息;如果向池中添加10个号码,则每秒可以发送10条消息

要使用消息服务和号码池发送消息,如下图所示,您需要。为游泳池添加或购买号码。然后,获取消息服务SID:

然后,您可以在对API的调用中使用消息传递服务SID代替from号码

$sms_sent = $client->messages->create(
    '+1xxxxxxxxxx',
    array(
        'from' => 'MESSAGING SERVICE SID',
        'body' => "XXXXXX XXXXXX",
        'statusCallback' => "http://myapplication_callback_url"
    )
);
然后,您的消息将由消息服务扇出

值得注意的是,如果您需要在一天内发送1000封邮件,我们建议您将其分散到至少4个号码上,因为美国运营商开始屏蔽使用次数超过此数的长代码号码。在我们的网站上查看更多信息


如果有任何帮助,请告诉我。

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

$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,那么给每个用户的
唯一消息是从哪里来的?@AlexBaban我还可以指定一个web服务url,该url为每个呼叫输出唯一消息,Twilio可能可以使用该url向用户发送消息,在解析文本文件时。这个想法似乎可以作为cron工作,但循环1000条记录并逐个发送消息需要一个多小时(假设每个API调用5秒)。我期待Twilio提供一个更简单的解决方案。这肯定会有很大帮助。谢谢你的回答。我有一个关于发送消息的问题。在代码中,我应该在哪里指定多个数字?据我所知,只有一个号码(“+1xxxxxxxxxx”)。我能把它做成1000个数字的数组吗?哦,对不起。你需要迭代你的1000个号码,并为每个号码调用
$client->messages->create
。我会尝试一下,让你知道它是如何运行的。。。谢谢你的及时回复:)不用担心,告诉我进展如何!我想知道,我在发送个人信息时使用的From电话号码是否可以用作信息服务中的电话号码。根据:,我不确定我购买的电话号码是否是我可以使用的号码。
$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
]);