1

我正在使用 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) 吗?如何?我是新手,请善待...

谢谢!

更新1:

我尝试按照您的建议保存到数据库,但它仍然无法正常工作...... :(

这是新代码:

    <?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:

好的,我调试了,上次我的路径有问题,但是这段代码现在可以工作了!!!

谢谢你们 :-)

4

2 回答 2

1

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

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

于 2011-12-22T19:07:47.277 回答
0

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

JavaScript 不能在这方面工作有两个原因 - 它是一个 XML 文件,并且 Twilio 不执行 JS 代码。

于 2011-12-22T18:54:15.583 回答