Twilio-如何根据传入消息的正文发送SMS?

问题描述 投票:1回答:2

我正在我的网站上使用Twilio PHP API。我们的目标是让我们游戏部落的成员填写一份表格,其中包括他们的姓名和手头的问题。然后,文本将被发送到预定的管理员列表,这些管理员具有修复服务器的权限。

此部分效果很好。我可以在我的网站上填写表格,它可以毫无问题地发送文本。

<?php
require_once "autoload.php";
use Twilio\Rest\Client;

$AccountSid = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$AuthToken = "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy";

$client = new Client($AccountSid, $AuthToken);

$sms = $client->account->messages->create(
  $_REQUEST["to"],
    array(
      'from' => "+zzzzzzzzzz", 
      'body' => "Help!". $_REQUEST["name"]. " says "
                . $_REQUEST["message"]."
                . Reply GOTIT to alert other techs."
    )
);

我希望管理员能够回复“ GOTIT”,以提醒其他管理员有人已经在解决此问题。当我的Twilio号码收到“ GOTIT”文本时,我希望它发送预定的SMS到预定的管理员列表(此处不需要任何动态信息)。

我已将Webhook配置为指向我的alert-response.php文件(如下)。

到目前为止,我只能找到有关回复邮件发件人的Twilio文档(我想回复指定的用户列表)https:// www.twilio.com/docs/guides/how-to-receive-and-reply-in-php#what-is-a-webhook

有人对我有任何起点吗?我已经尝试过了,但是效果不佳(alert-response.php):

<?php

require_once "autoload.php";
use Twilio\Rest\Client;

// make an associative array of senders we know,
// indexed by phone number
$people = array(
    "+zzzzzzzzzz"=>"Tech 1",
    "+zzzzzzzzzz"=>"Tech 2",
    "+zzzzzzzzzz"=>"Tech 3",
);

// if the sender is known, then greet them by name
// otherwise, consider them just another monkey
if(!$name = $people[$_REQUEST['From']]) {
    $name = "unknown";
}

$body = $_REQUEST['body'];

if( $body == 'GOTIT' ){
    $response->message('$name GOTIT message. Reply HELP for help.');
}else if( $body == 'HELP' ){
    $response->message('$name HELP message.');
}
print $response;

基于以下两个帮助文档的科学怪人:

谢谢您的协助!


更新:

这里是根据您显示给我的内容的更新alert-response.php。进行一些小的更改后,调试器中没有出现任何错误,但是我也没有得到任何SMS答复。有什么想法吗?

注意:由于wepaste.com不再存在,因此缺少以下代码参考:((此外,我无法正确格式化PHP代码,因此实际上可以在此处发布它,所以我想我将使用某些第三方剪贴板网站?希望这不违反规则吗?)http://www.wepaste.com/46258103/

twilio twilio-api twilio-php
2个回答
0
投票

似乎您已经很接近答案了。

当Twilio收到SMS(Inbound SMS)时,它可以调用服务器中的特定URL端点(HTTP Request)。Twilio webhook

网页(HTTP Response)的内容将作为回复(Outbound SMS)发送回用户。因此,print $response;打印将作为对Inbound SMS的作者的答复而发送的消息的内容。

如果要向其他用户发送消息,作为对该消息的响应,则需要添加更多代码来创建新消息。

您的alert-response.php既可以回复发件人,也可以向其他管理员发送消息:

<?php

require_once "autoload.php";
use Twilio\Rest\Client;

// make an associative array of senders we know, indexed by phone number
$people = array(
    "+zzzzzzzzzz"=>"Tech 1",
    "+zzzzzzzzzz"=>"Tech 2",
    "+zzzzzzzzzz"=>"Tech 3",
);

// if the sender is known, then greet them by name
// otherwise, consider them just another monkey
if(!$name = $people[$_REQUEST['From']]) {
    $name = "unknown";
}

$body = $_REQUEST['body'];

if( $body == 'GOTIT' ){
    // response to admin that send GOTIT
    $response->message('Thanks for taking care of it.');

    // now creates a message to tell other admins that someone
    // is taking care of it
    $client = new Client($AccountSid, $AuthToken);
    $sms = $client->account->messages->create(
         TO,
         array(
        'from' => "+zzzzzzzzzz", 
        'body' => "Looks like $name is taking care of this server alert!"
    );
);

}else if( $body == 'HELP' ){
    // response to the admin that replied with HELP
    $response->message('Ok. I will tell others that you need help');


    // now creates a message to tell other admins that someone
    // is taking care of it
    $client = new Client($AccountSid, $AuthToken);
    $sms = $client->account->messages->create(
         TO,
         array(
        'from' => "+zzzzzzzzzz", 
        'body' => "Looks like $name needs help!!"
    );
}

// keep in mind that response is sent to the person that sent the
// SMS in first place, not to the other admins.
print $response;

2
投票

Twilio开发人员推广人员在这里。

© www.soinside.com 2019 - 2024. All rights reserved.