如何在使用可变字母数字的发件人ID时发送给多个收件人(无循环)?

时间:2019-02-11 04:59:32

标签: sms twilio twilio-api twilio-php

我想知道是否有一种方法可以设置多个收件人,而不会在我的结尾遍历收件人列表?同样重要的是,在使用可变的字母数字发件人ID而不购买twilio数字时?

我可以像这样对单个收件人执行所有操作:

$twilio_client->messages->create(
'+64*******', //to
[
    'from'=> 'foo',
    'body' => 'bar'
]);

工作正常。但是,不适用于多个接收器。


还请注意,实现smsbroadcast.com.au并通过一个简单的调用(简单的调用,快速的快速,超级简单的文档)传递所有这些步骤很容易流血,第一步很简单-不像twilio,它有十亿行混乱文档,200种类似产品,还没有直接的api来检查余额,或做一些简单的事情,例如多个收件人!!

1 个答案:

答案 0 :(得分:0)

经过大量的支持和支持,再加上阅读了所有改写的文章(所谓的文档),终于我找到了完成所有任务的方法。

[第1步:配置]

您必须实现通知产品,该产品是与消息产品不同的产品。

因此,从左侧菜单Notify> Service> add New。在这里,您需要添加一个Messaging Service并在此处为通知选择它。

消息服务页面上,它将要求您购买一个twilio号码。只需从左侧菜单中单击Configure,然后输入您需要的所有详细信息即可。

特别重要的是,请确保已选中Alpha Sender ID,并在其中输入了默认的Alpha Sender文本。如果您的api调用未能接受from参数,这将是默认的备用。

[步骤2:API调用]

//$notify_service_SID = the SID from the Notify Service you added in step 1
$client = new Client($this->Account_SID, $this->auth_token);
$notify_obj = $client->notify->services($notify_service_SID);

//you need receivers in a JSON object such as the following, plus make sure numbers are starting with country code to ensure alpha sender works correctly
$receivers_json = [0=>'{"binding_type":"sms","address":"+614********"}']+[1=>'{"binding_type":"sms","address":"+614*******"}']

$call_ret = $notify_obj->notifications->create([
    'toBinding'=> $receivers_json,
    'body' => $msg, //actual message goes here
    'sms' => [
        'from'=> $sender //alphanumeric variable sender
    ],
]);

[第3步:检查错误] 实施通知时,没有直接的方法可以检查twilio中的所有错误。这是我的混合方法。

  1. notifications->create调用的异常处理

  2. 如果通知失败,
  3. $call_ret将具有err,但消息失败时不会。因为Notify只是将呼叫传递给Message,并且没有直接方法可以通过Notify呼叫检查Message错误。因此,您需要检查$call_ret['err']

  4. 调用Alerts API;提取所有最近的警报,并与您从上次呼叫中收到的Notification SID相匹配。

-

以下是执行警报检查的方法:

$alerts = @$client->monitor->v1->alerts->read();

if(is_array($alerts))
foreach($alerts as $av)
{
    $t = @$av->toArray();
    @parse_str($t['alertText'], $alert_details);

    if(isset($alert_details['notificationSid']) && $alert_details['notificationSid'] == $call_retx['sid'])
    {
        $alert_err = $alert_details['description'];
        break;
    }
}
如果出现错误,

$alert_err将带有错误。除此之外,没有直接的方法可以做到这一点。您可以通过权杖获取这些警报,也可以设置一个Webhook使其进行回叫。或者只是实现一个调用简单的api,它以超级简单的方式(例如smsbroadcast)来完成所有操作。