Twilio API -从传入的文本消息中存储回复


Twilio API - Storing Replies from Incoming Text Messages

我正在使用Twilio API接收SMS文本消息。我想要存储收到的消息的号码和正文。它在xml php页面中被接收,我想在不同的php页面中使用它。我该怎么做呢?消息是通过Post请求接收的,twilio一旦接收到消息就更新xml php文件。

这是xml php文件代码:

    <?php
         header("content-type: text/xml");
         echo "<?xml version='"1.0'" encoding='"UTF-8'"?>'n";
    ?>
    <Response>
        <Sms>Hello again, Dr. Evil</Sms>
    </Response>
    <?php
        $body = $_POST['Body'];
        $responder = $_POST['From'];
        if ($body) {  
        // if some response has been received, tell us what it is  
           // echo "<Body>".$body."</Body>"; <--wrong
           // echo "<Responder>".$responder."</Responder>"; <--wrong
        };
    ?>

最后几行中的"if"语句似乎不起作用。我应该使用javascript(&jquery)代替吗?如何?我是个新手,所以请宽容点……

谢谢!

Update1:

我试着按照你的建议保存到数据库,它仍然不工作…(

下面是新代码:

    <?php
        header("content-type: text/xml");
        echo "<?xml version='"1.0'" encoding='"UTF-8'"?>'n";
    ?>
    <Response>
        <Sms>Hows it going, Dr. Evil</Sms>
    </Response>
    <?php
        $body = $_POST['Body'];
        $responder = $_POST['From'];
        if ($body) { 
            require_once "../includes/functions.php";
            connectDatabase();
            //storing message and sender in database                                                        
            mysql_query("INSERT INTO sms_received (responder, body) 
                        VALUES ('$responder', '$body')");
            mysql_close();
        };
    ?>

更新2:

好吧,我调试了它,这是最后一次我有一个问题的路径,但这段代码现在工作!!

谢谢大家:-)

PHP不会在任何地方存储有关文本消息的信息,因此您将丢失它。您所描述的内容意味着PHP文件将被加载两次。第一次,Twilio服务器将加载您的PHP文件并读取Evil

第二次,您将在web浏览器中加载PHP文件。$_POST变量取决于浏览器中的信息(以及Twilio请求中的信息),因此在这两种情况下它是不一样的。这意味着您需要将数据保存在某个地方,以免丢失。当Twilio发出请求时,您可以使用数据库或将其写入文本文件,然后从文件或数据库加载数据。这也有助于在您收到多个传入文本消息的情况下-您可以将它们全部存储在文件或数据库中。

您没有将它存储在此代码中的任何地方。你只是输出它。你需要将其保存到某种类型的数据库中,而不是将其回显到Twilio(这会忽略<Response>块之外的任何内容)。

JavaScript在这里不起作用有两个原因——它是一个XML文件,Twilio不执行JS代码。