Twilio API - 存储来自传入文本消息的回复

时间:2011-12-22 18:33:14

标签: php javascript xml twilio

我正在使用Twilio API接收短信。我想存储收到的消息的编号和正文。它是在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(&amp; 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();
        };
    ?>

UPDATE2:

好的,我调试了它,上次我遇到路径问题,但这段代码现在正在运行!!!

谢谢大家: - )

2 个答案:

答案 0 :(得分:1)

PHP不会在任何地方存储有关短信的信息,因此您将失去它。您描述的内容意味着您的PHP文件将被加载两次。第一次,Twilio服务器将加载您的PHP文件并阅读Evil&lt; Response&gt;。

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

答案 1 :(得分:0)

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

由于两个原因,JavaScript无法解决这个问题 - 它是一个XML文件,Twilio不会执行JS代码。