2016-03-29 4 views
0

Долгое время lurker, впервые обжаловался. Эта задача кажется относительно простой: создайте документ VoiceXML, который запустит скрипт для изменения текстового документа, чтобы затем запустить игру через вербальные команды.VoiceXML <submit> тег, бросающий ошибку компиляции на php

Соответствующие VoiceXML:

<!--Encoding details--> 
<?xml version="1.0" encoding="UTF-8" ?> 
<vxml version="2.1" xmlns="http://www.w3.org/2001/vxml"> 

<if cond="command =='t1 go'"> 
    <submit next="tank.php?command=t1%20go" method="get" namelist="command"/> 
</if> 

Есть 5 общая условия ниже исходной в если/другое тегов. Когда телефон # называется, он просит вас дать команду, он правильно переходит к условной ветке, а затем заявляет, что документ tank.php «не может быть скомпилирован» и отключается. трюк заключается в том, что текстовый файл действительно был изменен этой вербальной командой, а php компилирует/работает отлично. Когда я вынимаю тег 'submit', документ не вызывает ошибок. По какой-то причине эта «ошибка компиляции» из php, по-видимому, заставляет форму voiceXML преждевременно отключиться.

Complete PHP документ:

<?php 
    $myfile = fopen("gismoCommand.txt", "w") or die("Unable to open file!"); 
    $command = $_GET["command"]; 
    fwrite($myfile, $command); 
    fclose($myfile); 
?> 

Я работаю по этому конкретному вопросу в течение 5 часов. Ваше предложение может спасти мое здравомыслие.

ответ

0

Разрешение!

Voxeo (сервис, который я использую) предлагает более тщательный отладчик, чем вокальные команды. Слава Богу.

Он бросил мне вещи, как это (точное содержание не важно)

TTS: Sorry, that content has an internal error. 
RTSP MESSAGE(o): ANNOUNCE rtsp://localhost:9974/synthesizer/ RTSP/1.0 Cseq: 11 Session: b5bdeff3d79236676847995d294d3445-9468 Content-Type: application/mrcp Content-Length: 649 SPEAK 946796007 MRCP/1.0 Kill-On-Barge-In: true Voice-Name: Allison-EnglishUS Speech-Language: en-us Vendor-Specific-Parameters: Voxeo-Resource="en-us.TTS.fc808afe12384bcb90415baee30fc0d7.Staging-Loquendo;plugin=vxttsloq7;speechLanguage=en-us;voiceName=Allison-EnglishUS;type=loquendo";Voxeo-Playback-Mode=VXML;Voxeo-Community-ID=f25af74e6f994e15ae7214ca83a2fcd9;Voxeo-Virtual-Platform=Staging-Loquendo;Voxeo-Site-ID=fc808afe12384bcb90415baee30fc0d7 Content-Type: application/synthesis+ssml Content-Length: 129 <?xml version="1.0" encoding="UTF-8"?> <speak version="1.0" xml:lang="en-us"> Sorry, that content has an internal error. </speak> 

Что важно, что этой ошибки не отображались в Почтальон или через ошибку PHP, потому что, как я ожидал , сам php не был проблемой, а тем, как интерпретировал vxml. Бросание тегов «vxml» вокруг скрипта php (сохранение окончания .php), а программа на 100% счастлива, и я потратил почти 9 часов на поиск двух строк.

Надеюсь, это поможет кому-то другому, приветствует!

Новый PHP:

<vxml version="2.0"> 
<?php 
    $myfile = fopen("gismoCommand.txt", "w") or die("Unable to open file!"); 
    $command = $_GET["command"]; 
    fwrite($myfile, $command); 
    fclose($myfile); 
?> 
</vxml> 
0

"отправить" является запрос действительного VoiceXML документа; см. the official specification. Поместив теги «vxml» вокруг документа, вы создали достаточно законный скрипт VoiceXML, который интерпретатор может читать и интерпретировать.

Лично для этой ситуации я бы использовал "data" tag available in VoiceXML 2.1 и поддерживал Voxeo. Вернуть минимальный XML-документ; игнорируй это; продолжайте обрабатывать свой VoiceXML с помощью чистого, чистого, четко определенного выхода.

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