2011-12-22 6 views
1

Я использую Twilio API для получения текстовых SMS-сообщений. Я хочу сохранить номер и тело полученного сообщения. Он принимается на PHP-странице xml, я хочу использовать его в середине другой php-страницы. Как мне это сделать? Сообщение принимается через запрос на отправку, twilio обновляет xml-файл php после его получения.Twilio API - Сохранение ответов от входящих текстовых сообщений

Это 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 
     }; 
    ?> 

«тогда» утверждение в последних строках, кажется, не работает. Должен ли я использовать 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(); 
     }; 
    ?> 

Update2:

Хорошо, я отлаживал это, в прошлый раз у меня была проблема с p ath, но этот код работает сейчас !!!

Спасибо всем :-)

ответ

1

PHP не будет хранить информацию о текстовом сообщении в любом месте, поэтому вы потеряете его. То, что вы описываете, означает, что ваш PHP-файл будет загружен два раза . В первый раз сервер Twilio загрузит ваш файл PHP и прочитает Evil < Response>.

Во второй раз вы загрузите файл PHP в своем веб-браузере. $_POST зависит от информации в вашем браузере (и в запросе Twilio), поэтому в обоих случаях это не будет одинаковым. Это означает, что вам нужно где-то сохранять данные, чтобы они не потерялись. Вы можете использовать базу данных или записать ее в текстовый файл, когда Twilio отправит запрос, а затем загрузит данные из файла или базы данных позже. Это также помогает, если вы получаете более одного входящего текстового сообщения - вы можете сохранить их все в файле или в базе данных.

+0

Хорошо, спасибо за объяснение! Я думаю, что я понял это сейчас, это twilio, которые запускают эту страницу, поэтому я должен позволить ей выполнить это только один раз и не забудьте сохранить данные, которые они мне отправляют, и получить этот вывод из другого места (например, db/текстовый файл) , –

+0

Могу ли я перенаправить на другую веб-страницу и продолжать делать что-то после того, как twilio запустит этот файл? –

+0

Кто бы вы перенаправляли, ваш собственный запрос на веб-сайт или сервер Twilio? –

0

Вы не хранящий его где-нибудь в этом коде. Вы просто выводите его. Вам нужно будет сохранить его в какой-либо базе данных вместо того, чтобы повторять его обратно в Twilio (который будет игнорировать что-либо за пределами блока <Response>.

JavaScript не работает в этом по двум причинам: это XML-файл и Twilio не выполняет JS-код.

+0

Я не пытался повторить его обратно в twilio. Я думал, чтобы повторить его на странице, чтобы я мог отправить этот xml на другую страницу php. У меня все работает. Как я могу это сделать? либо через БД? или сеанс? –

+0

Эта страница - ваш ответ, который вы отправляете в Twilio, так что эхо его отправка в Twilio. Сессия не будет работать, так как сессия будет сеансовым файлом Twilio, а не вашим. Вам нужна база данных. – ceejayoz

+0

Хорошо, я сейчас вижу, я попробую. Благодаря! –

Смежные вопросы