2016-03-29 4 views
0

Lange zeit lurker, erstmals asker. Diese Aufgabe scheint relativ einfach zu sein: Erstellen Sie ein VoiceXML-Dokument, das ein Skript zum Ändern eines Textdokuments auslöst, um dann ein Spiel über verbale Befehle auszuführen.VoiceXML <submit> tag wirft einen kompilierungsfehler auf php

Relevante 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> 

Es gibt 5 Bedingungen insgesamt unter dem anfänglichen in if/else-Tags. Wenn das Telefon # angerufen wird, fordert es Sie auf, Ihren Befehl zu geben, es geht korrekt in die bedingte Verzweigung und gibt dann an, dass das Dokument "tank.php" nicht kompiliert werden kann, und trennt die Verbindung. Der Trick ist, dass die Textdatei tatsächlich durch diesen verbalen Befehl geändert worden ist und der php compiles/läuft fein. Wenn ich das "Submit" -Tag entferne, wirft das Dokument keine Fehler auf. Aus irgendeinem Grund scheint dieser "Kompilierungsfehler" von dem PHP zu verursachen, dass das VoiceXML-Formular vorzeitig getrennt wird.

komplettes PHP-Dokument:

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

Ich habe für 5 Stunden auf diesem speziellen Thema gearbeitet. Dein Vorschlag könnte meinen Verstand retten.

Antwort

0

Auflösung!

Voxeo (der Dienst, den ich verwende) bietet einen gründlicheren Debugger als die Sprachbefehle. Danke Gott.

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> 

Was wichtig ist, ist, dass diese Fehler nicht wurde zeigt sich in Postman oder durch PHP-Fehler

Es warf mich Sachen wie diese (nicht wichtig, die genaue Inhalt ist), weil, wie ich erwartet , das php selbst war nicht das Problem, aber die Art, wie die vxml es interpretierte. "Vxml" -Tags werden um das PHP-Skript herumgeschleudert (wobei die Endung .php beibehalten wird) und das Programm ist 100% glücklich und ich habe fast 9 Stunden damit zugebracht, eine Zwei-Zeilen-Änderung zu finden.

Hoffe, das kann jemand anderen helfen, Prost!

Neue 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

"Eintragen" ist eine Anforderung für ein gültiges VoiceXML-Dokument; siehe the official specification. Indem Sie das Dokument mit "vxml" -Tags versehen, haben Sie ein ausreichend legales VoiceXML-Skript erstellt, das der Interpreter lesen und interpretieren kann.

Persönlich für diese Situation würde ich die "data" tag available in VoiceXML 2.1 verwenden und von Voxeo unterstützt. Rückgabe eines minimalen XML-Dokuments ignoriere es; Verarbeite deine VoiceXML mit einem schönen, sauberen und gut definierten Ausgang.