Получение XML-файла через размещенный скрипт php tropo

Как сделать телефонный звонок с помощью tropo, отправив xml в сценарий, размещенный на tropo? Предполагается, что этот скрипт php использует curl для отправки xml в другой скрипт php (hosted @ tropo). В этом случае сценарий, размещенный в тропо, должен использовать xml для телефонного звонка. В приведенном ниже примере тропический отладчик получает правильную информацию, так как подобные сообщения отображаются в отладчике:

customerName:Kent is added into the context of app instance : ApplicationInstance[http://hosting.tropo.com/107029/www/ExternalPhoneHelper.php , sas_2-14-sm25ogjh4vlab5tropo]

Вот скрипт curl php, который отправляет данные xml в tropo:

$token = "mytoken";//removed actual token
$url = PhoneHelper::$TROPO_URL;
$xml = "
    <session>
        <token>" . $token . "</token>
        <var name=\"action\" value=\"create\"/>
        <var name=\"customerName\" value=\"Kent\" />
        <var name=\"numberToDial\" value=\"##########\" />
        <var name=\"msg\" value=\"XML Test\" />
     </session>";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($ch, CURLOPT_POSTFIELDS, "$xml");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
echo curl_error($ch);
echo $output;
curl_close($ch);

Принимающий скрипт пуст:

 <?php

 ?>

Если нужно использовать методы call() и say(), как бы я сослался на опубликованный xml, чтобы получить numberToDial и msg?

Вот журнал отладчика:

    |-----------------------------------------------------------------------|
    |00000|00-1|02:18:47 AM|Set logging context for http/0.0.0.0/8080-t-31  |
    |     |    |           |to accountID=107029 host=tropo203.orl.voxeo.net |
    |     |    |           |sessionGUID=-1 sessionNumber=-1 callID=-1       |
    |-----------------------------------------------------------------------|
    |00001|00-1|02:18:47 AM|Attempting to determine application type via    |
    |     |    |           |tropo-engine URL parameter in  myURL            |
    |-----------------------------------------------------------------------|
    |00002|00-1|02:18:47 AM|Attempting to determine application type by     |
    |     |    |           |requesting HEAD from                            |
    |     |    |           |myURL to get Content-Type header                |
    |-----------------------------------------------------------------------|
    |00003|00-1|02:18:47 AM|Opened URLConnection                            |
    |-----------------------------------------------------------------------|
    |00004|00-1|02:18:47 AM|Connecting for HEAD                             |
    |-----------------------------------------------------------------------|
    |00005|00-1|02:18:47 AM|Got HEAD response                               |
    |-----------------------------------------------------------------------|
    |00006|00-1|02:18:47 AM|No Content-Type header provided by HEAD.        |
    |-----------------------------------------------------------------------|
    |00007|00-1|02:18:47 AM|Attempting to determine application type based  |
    |     |    |           |on file extension for myURL                     |
    |-----------------------------------------------------------------------|
    |00008|00-1|02:18:47 AM|Determined type=php from filename suffix        |
    |-----------------------------------------------------------------------|
    |00009|00-1|02:18:47 AM|Trying to create application for URL=myURL      |
    |-----------------------------------------------------------------------|
    |00010|00-1|02:18:47 AM|Tropo app dir is /tropo_app_home                |
    |-----------------------------------------------------------------------|
    |00011|0000|02:18:47 AM|Set logging context for http/0.0.0.0/8080-t-31  |
    |     |    |           |to accountID=107029 host=tropo203.orl.voxeo.net |
    |     |    |           |sessionGUID=0 sessionNumber=0 callID=0          |
    |-----------------------------------------------------------------------|
    |00012|0000|02:18:47 AM|Application[myURL ver(1.0.56092) has been       |
    |     |    |           |created.                                        |
    |-----------------------------------------------------------------------|
    |00013|0000|02:18:47 AM|Found hosted Application[myURL ver(1.0.56092)   |
    |     |    |           |[token=myToken]                                 |
    |-----------------------------------------------------------------------|
    |00014|0000|02:18:47 AM|Set logging context for http/0.0.0.0/8080-t-31  |
    |     |    |           |to accountID=107029 host=tropo203.orl.voxeo.net |
    |     |    |           |sessionGUID=0 sessionNumber=0 callID=0          |
    |-----------------------------------------------------------------------|
    |00015|0000|02:18:47 AM|Application[myURL ver(1.0.56092) has been found.|
    |-----------------------------------------------------------------------|
    |00016|0000|02:18:47 AM|Set logging context for http/0.0.0.0/8080-t-31  |
    |     |    |           |to accountID=107029 host=tropo203.orl.voxeo.net |
    |     |    |           |sessionGUID=0                                   |
    |     |    |           |sessionNumber=a8f0ba032d2a377e8fdcc8b68d82c766  |
    |     |    |           |callID=0                                        | 
    |-----------------------------------------------------------------------|
    |00017|0000|02:18:47 AM|Thread http/0.0.0.0/8080-t-31 acquired engine   |
    |     |    |           |QuercusScriptEngine[] of type php,              |
    |     |    |           |activeEngines = 5                               |
    |-----------------------------------------------------------------------|
    |00018|0000|02:18:47 AM|Thread http/0.0.0.0/8080-t-31 got engine to     |
    |     |    |           |compile script                                  |
    |-----------------------------------------------------------------------|
    |00019|0000|02:18:47 AM|?><?php    // line 1121                         |
    |-----------------------------------------------------------------------|
    |00020|0000|02:18:47 AM|if ($currentCall != null)    // line 1122       |
    |-----------------------------------------------------------------------|
    |00021|0000|02:18:47 AM|{    // line 1123                               |
    |-----------------------------------------------------------------------|
    |00022|0000|02:18:47 AM|    say("I'm sorry, but I can not find or       |
    |     |    |           |compile the Tropo script for this phone number."|
    |     |    |           |);    // line 1124                              |
    |-----------------------------------------------------------------------|
    |00023|0000|02:18:47 AM| hangup();    // line 1125                      |
    |-----------------------------------------------------------------------|
    |00024|0000|02:18:47 AM|}    // line 1126                               |
    |-----------------------------------------------------------------------|
    |00025|0000|02:18:47 AM|?>    // line 1127                              |
    |-----------------------------------------------------------------------|
    |00026|0000|02:18:47 AM|Thread http/0.0.0.0/8080-t-31 returning engine  |
    |     |    |           |after compiling script                          |
    |-----------------------------------------------------------------------|
    |00027|0000|02:18:47 AM|Thread http/0.0.0.0/8080-t-31 returned engine   |
    |     |    |           |QuercusScriptEngine[] of type php,              |
    |     |    |           |activeEngines = 4                               |
    |-----------------------------------------------------------------------|
    |00028|0000|02:18:47 AM|In SimpleApplication.execute() for token launch,|
    |     |    |           |HttpSession                                     |
    |     |    |           |hssn-9541A863A42B7294412DF27003FE67BF associated|
    |     |    |           |with SipApplicationSession                      |
    |     |    |           |sas_2-14-sm86gosslpnlz6tropo                    |
    |-----------------------------------------------------------------------|
    |00029|0000|02:18:47 AM|SipApplicationSession                           |
    |     |    |           |sas_2-14-sm86gosslpnlz6tropo associated with    |
    |     |    |           |Tropo session a8f0ba032d2a377e8fdcc8b68d82c766  |
    |-----------------------------------------------------------------------|
    |00030|0000|02:18:47 AM|customerName:Kent is added into the context  of |
    |     |    |           |app instance : ApplicationInstance[myURL,       |
    |     |    |           |sas_2-14-sm86gosslpnlz6tropo]                   |
    |-----------------------------------------------------------------------|
    |00031|0000|02:18:47 AM|numberToDial:2087401235 is added into the       |
    |     |    |           |context  of app instance : ApplicationInstance[ |
    |     |    |           |myURL , sas_2-14-sm86gosslpnlz6tropo]           |
    |-----------------------------------------------------------------------|
    |00032|0000|02:18:47 AM|action:create is added into the context  of app |
    |     |    |           |instance : ApplicationInstance[myURL ,          | 
    |     |    |           |sas_2-14-sm86gosslpnlz6tropo]                   |
    |-----------------------------------------------------------------------|
    |00033|0000|02:18:47 AM|format:xml is added into the context  of app    |
    |     |    |           |instance : ApplicationInstance[myURL ,          |
    |     |    |           |sas_2-14-sm86gosslpnlz6tropo]                   |
    |-----------------------------------------------------------------------|
    |00034|0000|02:18:47 AM|msg:XML Test is added into the context  of app  |
    |     |    |           |instance : ApplicationInstance[myURL ,          | 
    |     |    |           |sas_2-14-sm86gosslpnlz6tropo]                   |
    |-----------------------------------------------------------------------|
    |00035|0000|02:18:47 AM|ApplicationInstance[myURL ,                     |
    |     |    |           |sas_2-14-sm86gosslpnlz6tropo] has been created. |
    |-----------------------------------------------------------------------|
    |00036|0000|02:18:47 AM|com.voxeo.tropo.core.SimpleCallFactory@44d6123f |
    |     |    |           |is added into the context of app instance :     |
    |     |    |           |ApplicationInstance[myURL ,                     |
    |     |    |           |sas_2-14-sm86gosslpnlz6tropo]                   |
    |-----------------------------------------------------------------------|
    |00037|0000|02:18:47 AM|Clearing logging context for                    |
    |     |    |           |http/0.0.0.0/8080-t-31                          |
    |-----------------------------------------------------------------------|
    |00038|0000|02:18:47 AM|Set logging context for                         |
    |     |    |           |Tropo-Thread-a8f0ba032d2a377e8fdcc8b68d82c766   |
    |     |    |           |to accountID=107029 host=tropo203.orl.voxeo.net | 
    |     |    |           |sessionGUID=0                                   |
    |     |    |           |sessionNumber=a8f0ba032d2a377e8fdcc8b68d82c766  |
    |     |    |           |callID=-1                                       | 
    |-----------------------------------------------------------------------|
    |00039|0000|02:18:47 AM|ApplicationInstance[myURL ,                     |
    |     |    |           |sas_2-14-sm86gosslpnlz6tropo] starts execution  | 
    |     |    |           |on Thread                                       |
    |     |    |           |Tropo-Thread-a8f0ba032d2a377e8fdcc8b68d82c766   |
    |-----------------------------------------------------------------------|
    |00040|0000|02:18:47 AM|Thread                                          |
    |     |    |           |Tropo-Thread-a8f0ba032d2a377e8fdcc8b68d82c766   |
    |     |    |           |acquired engine QuercusScriptEngine[] of type   |
    |     |    |           |php, activeEngines = 5                          |
    |-----------------------------------------------------------------------|
    |00041|0000|02:18:47 AM|ApplicationInstance[myURL ,                     |
    |     |    |           |sas_2-14-sm86gosslpnlz6tropo] replaced script   |
    |     |    |           |engine [QuercusScriptEngine[]] -->              |
    |     |    |           |[QuercusScriptEngine[]] in field <_engine>      |
    |-----------------------------------------------------------------------|
    |00042|0000|02:18:47 AM|ApplicationInstance[myURL ,                     |
    |     |    |           |sas_2-14-sm86gosslpnlz6tropo] ends execution on |
    |     |    |           |Thread                                          |
    |     |    |           |Tropo-Thread-a8f0ba032d2a377e8fdcc8b68d82c766   |
    |-----------------------------------------------------------------------|
    |00043|0000|02:18:47 AM|Thread                                          |
    |     |    |           |Tropo-Thread-a8f0ba032d2a377e8fdcc8b68d82c766   |
    |     |    |           |returned engine QuercusScriptEngine[] of type   | 
    |     |    |           |php, activeEngines = 4                          |
    |-----------------------------------------------------------------------|
    |00044|0000|02:18:47 AM|sas_2-14-sm86gosslpnlz6tropo invalidated        |
    |-----------------------------------------------------------------------|
    |00045|0000|02:18:47 AM|Instance a8f0ba032d2a377e8fdcc8b68d82c766       |
    |     |    |           |removed                                         |
    |-----------------------------------------------------------------------|
    |00046|0000|02:18:47 AM|Clearing logging context for                    |
    |     |    |           |Tropo-Thread-a8f0ba032d2a377e8fdcc8b68d82c766   |
    |-----------------------------------------------------------------------|

1 ответ

Решение

Похоже, что здесь есть несколько моментов путаницы / проблем, поэтому я постараюсь сделать все возможное, чтобы решить их все для вас. Первое, что я хотел обсудить, это то, что публикация XML в API сеанса является совершенно необязательной, это всего лишь один из способов, которым вы можете отправить свой "запрос токена", чтобы начать исходящий вызов. Если у вас возникли проблемы с тем, чтобы заставить это работать, давайте просто пропустим его и попробуем HTTP GET "самолет-джейн" прямо из браузера, пока вы не почувствуете себя наиболее комфортно:

api.tropo.com/1.0/sessions?action=create&token=123456&customerName=Kent&numberToDial=4075551212&msg=XML%20Test

Теперь по самому сценарию я нашел ваш accountID (да, я работаю в Voxeo Labs / Tropo: P), и я заметил несколько вещей. Прежде всего, вы неправильно написали приложение startURL, я почти уверен, что вы имели в виду ExternalPhoneHelper.php, но вы ввели ExterMalPhoneHelper.php, поэтому вам нужно сначала это исправить. Теперь, во-вторых, ваш файл фактически пуст, за исключением тегов PHP.

Поэтому, если вы хотите позвонить и сказать что-то, вы можете использовать call(); с сказать (); или вы можете просто использовать комбо / ярлык сообщения (); метод в вашем скрипте Tropo:

<?php
 message("Received office voice mail.", array("to" => "+14075550100"));
?>

Теперь перейдем к последнему вопросу: как получить опубликованные данные в контексте приложения Tropo? Что ж, хорошая новость в том, что это просто DEAD, мы фактически используем их как глобальные переменные в вашем приложении, поэтому параметром строки запроса numberToDial становится, например, $numberToDial:

<?php
 message($msg, array("to" => "+".$numberToDial));
?>

Я действительно надеюсь, что это поможет, и если вы все еще сталкиваетесь с проблемами, обратитесь в нашу службу поддержки или найдите нас в IRC на freenode (#tropo). Моя ручка красотка, и я часто прячусь в канале;)

Береги себя!

-John

Другие вопросы по тегам