Twilio 接收短信时不执行任何操作

Twilio Not doing anything when receiving SMS

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

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

我在数据库中没有得到任何东西,也没有得到响应。我还编写了一个示例页面,其中 post 是一个值,以查看它是否有效并且确实有效。它 post 将其输入数据库并显示格式正确 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;  

这里是 Twilio 开发人员布道者。

从 Twilio 通过 webhook 发送的参数区分大小写并以大写字母开头。传入消息的文本作为 Body 参数发送,因此检查 $_POST['body'] 将不起作用。

我会将您的条件更新为:

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

    // The rest
}

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

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

如果有帮助请告诉我。