我正在创建一个示例应用程序,以便在发生飓风或服务中断时向网站发布警报。我没有使用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;
答案 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>';
让我知道这是否有帮助。