Twilio收到短信时没有做任何事情

时间:2018-03-06 13:58:54

标签: twilio twilio-php

我正在创建一个示例应用程序,以便在发生飓风或服务中断时向网站发布警报。我没有使用Laravel。

我在帐户设置中设置了网页的网址。我第一次发送消息时收到了一个HTTP错误,它已经超时而没有得到响应。我编辑了XML并再次尝试。

我没有收到数据库中的任何内容,而且我没有收到回复。我还写了一个示例页面,它发布一个值,看看它是否可行,但确实如此。它将其发布到数据库中并显示格式正确的XML。

<?php
$response = 'This number cannot handle automated replies...';
$twiml1 = '<response><sms>';
$twiml2 = '</sms></response>';
require_once '../settings/db.php';
if (isset($_POST['body'])) {
    $body = strip_tags($_POST['body']);

    $sql = "INSERT INTO alerts (message) VALUES ('$body')";
    $result = $db->query($sql);
    if ($result) {
        $response = 'Thanks. Your message was posted on the website.';
    } else {
        $response = 'There was a query error.';
    }

}
header('Content-type: application/xml');
echo $twiml1;
echo $response;
echo $twiml2;  

1 个答案:

答案 0 :(得分:0)

Twilio开发者传道者在这里。

通过来自Twilio的webhooks发送的参数区分大小写,并以大写字母开头。传入消息的文本将作为Body参数发送,因此检查$_POST['body']无法正常工作。

我将条件更新为:

if (isset($_POST['Body'])) {
    $body = strip_tags($_POST['Body']);

    // The rest
}

另外,请注意,<Sms>元素已被弃用。我改为使用<Message>元素。标签也区分大小写,因此我将TwiML部分更新为:

$twiml1 = '<Response><Message>';
$twiml2 = '</Message></Response>';

让我知道这是否有帮助。