【问题标题】:Twilio API - Storing Replies from Incoming Text MessagesTwilio API - 存储来自传入文本消息的回复
【发布时间】:2011-12-22 18:33:13
【问题描述】:

我正在使用 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:

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

谢谢大家:-)

【问题讨论】:

    标签: php javascript xml twilio


    【解决方案1】:

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

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

    【讨论】:

    • 好的,谢谢您的解释!我想我现在明白了,运行此页面的是 twilio,所以我应该让它执行一次,并确保保存他们发送给我的数据,并从其他地方获取此输出(例如 db/文本文件) .
    • 在 twilio 运行此文件后,我可以重定向到另一个网页并继续执行操作吗?
    • 您将重定向谁,您自己对网站或 Twilio 服务器的请求?
    • 我想重定向我自己的请求,但也许不可能?我正在实现 db 解决方案,也许我会从其他页面中查找 db sms 条目,而不要管这个 xml
    • 嗨 Lucy,如果您要重定向自己的请求,您可能只想在不同的 URL 上创建一个新的 .php 文件,然后直接加载其他文件。
    【解决方案2】:

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

    JavaScript 无法在其中工作有两个原因 - 它是一个 XML 文件,并且 Twilio 不执行 JS 代码。

    【讨论】:

    • 我并没有试图将它回显给 twilio。我正在考虑将它回显到页面,以便我可以将此 xml 发送到另一个我正在运行的 php 页面。那我该怎么做呢?要么通过数据库?还是会议?
    • 此页面是您发送给 Twilio 的响应,因此响应它会将其发送给 Twilio。会话将不起作用,因为会话将是 Twilio 的会话 cookie,而不是您的。你需要一个数据库。
    • 好的,我知道了,我试试。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    相关资源
    最近更新 更多