Долгое время скрывался, впервые спрашивал. Эта задача кажется относительно простой: создайте документ VoiceXML, который будет запускать скрипт для изменения текстового документа, а затем запускать игру с помощью словесных команд.
Соответствующий 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 условий ниже исходного в тегах if / else. Когда вызывается номер телефона, он просит вас дать команду, он корректно переходит в условную ветку, а затем заявляет, что документ tank.php «не может быть скомпилирован», и отключается. трюк является то, что текстовый файл действительно был изменен с помощью этой словесной команды и php компилируется / работает нормально. Когда я убираю тег ‘submit’, документ не выдает ошибок. По какой-то причине эта «ошибка компиляции» из php вызывает преждевременное отключение формы voiceXML.
Полный документ php:
<?php
$myfile = fopen("gismoCommand.txt", "w") or die("Unable to open file!");
$command = $_GET["command"];
fwrite($myfile, $command);
fclose($myfile);
?>
Я работал над этим конкретным вопросом в течение 5 часов. Ваше предложение может спасти мое здравомыслие.
Разрешение!
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>
Важно то, что этот ошибка не появлялась в Postman или из-за ошибок 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>
«submit» — это запрос на действительный документ VoiceXML; увидеть официальная спецификация. Поместив теги «vxml» вокруг документа, вы создали достаточно легальный сценарий VoiceXML, который интерпретатор может читать и интерпретировать.
Лично для этой ситуации я бы использовал тег «data» доступен в VoiceXML 2.1 и поддерживается Voxeo. Вернуть минимальный XML-документ; игнорируй это; продолжайте обработку вашего VoiceXML с хорошим, чистым, четко определенным выходом.