代码之家  ›  专栏  ›  技术社区  ›  burnedfaceless

Twilio在接收短信时不做任何事情

  •  0
  • burnedfaceless  · 技术社区  · 6 年前

    我正在创建一个示例应用程序,它将在飓风或服务中断时向网站发布警报。我没有用拉维尔。

    我在我的帐户设置中设置页面的URL。第一次发送消息时,我收到一个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 回复  |  直到 6 年前
        1
  •  0
  •   philnash    6 年前

    Twilio开发者布道者。

    Twilio通过webhooks发送的参数区分大小写,并以大写字母开头。传入消息的文本作为 Body 参数so检查 $_POST['body'] 行不通。

    我会将您的条件更新为:

    if (isset($_POST['Body'])) {
        $body = strip_tags($_POST['Body']);
    
        // The rest
    }
    

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

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

    如果有帮助,请告诉我。