2015-11-28 5 views
8

Sono nuovo in voiceXML e mi chiedo come leggere un valore restituito dal server dopo la pubblicazione. Voglio voiceXML per leggere la risposta del server. According to voiceXML documentation, ho capito che il risultato dovrebbe essere in XML.rendere voiceXML per leggere il risultato restituito dal server

Ecco il mio codice Node.JS/express.js che riceve il risultato:

app.post("/getData", function (req, res) { 
    console.log(JSON.stringify(req.body)); 
    res.header('Content-Type','text/xml').send('<?xml version="1.0" ?> <vxml version="2.0"> <block> <prompt> The time in Milwaukee is 10 </prompt> </block> </vxml>'); 
}); 

Ecco lo screenshot mostra che sto ricevendo con successo il contenuto pubblicato:

enter image description here

Ecco lo screenshot che mostra che sto inviando il risultato XML: enter image description here

Ecco il mio file VoiceXML:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE vxml PUBLIC "-//BeVocal Inc//VoiceXML 2.0//EN" "http://cafe.bevocal.com/libraries/dtd/vxml2-0-bevocal.dtd"> 
<vxml xmlns="http://www.w3.org/2001/vxml" xmlns:bevocal="http://www.bevocal.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"> 
    <form scope="dialog"> 
     <field name="name" modal="false"> 
      <grammar src="grammars.grammar#Names"/> 
      <prompt>Whats your name?</prompt> 
      <filled> 
       <prompt>Hello <value expr="name"/> 
       </prompt> 
      </filled> 
     </field> 

     <field name="city" modal="false"> 
      <grammar src="grammars.grammar#Cities"/> 
      <prompt>What city are you from?</prompt> 
      <filled> 
       <prompt>You are from <value expr="city"/> 
       </prompt> 
      </filled> 
     </field> 

     <field name="country" modal="false"> 
      <grammar src="grammars.grammar#Countries"/> 
      <prompt>What country are you from?</prompt> 
      <filled> 
       <prompt>You are from <value expr="country"/> 
       </prompt> 
      </filled> 
     </field> 

     <field name="cityTime"> 
      <prompt> 
       What city would you like the time for? 
      </prompt> 
      <grammar type="application/x-nuance-gsl"> 
       [denver (san francisco) ] 
      </grammar> 
     </field> 
     <field name="formatTime"> 
      <prompt> 
       Twelve hour or twenty four hour clock? 
      </prompt> 
      <grammar type="application/x-nuance-gsl"> 
       [[twelve (twenty four)] ?hour] 
      </grammar> 
     </field> 
     <block> 
      <submit next="http://65.29.170.122/getData" method="post" namelist="name city country cityTime formatTime" /> 
     </block> 
    </form> 
</vxml> 

risposta

7

due approcci sono disponibili: In primo luogo, dopo aver raccolto l'input inviare il modulo e la risposta dovrebbe essere un nuovo documento VoiceXML che riproduce i dati.

In secondo luogo, se il browser lo supporta (la maggior parte lo fanno), è possibile utilizzare l'elemento Dati per effettuare una richiesta all'interno del modulo VoiceXML. La risposta deve essere XML. VoiceXML fornisce un modo per percorrere il DOM risultante per ottenere i tuoi dati.

Per quanto riguarda i dati, la maggior parte dei browser supporta l'elemento di risposta di SSML all'interno di un prompt. Per la maggior parte delle applicazioni professionali, l'approccio tipico è quello di creare una libreria javascript per assemblare e riprodurre una serie di registrazioni per riprodurre il tempo.

0

aggiungi codice php in un file, aggiungi script xml ed echo la risposta del server dove vuoi. In questo modo l'XML finale che il server vocale ottiene ha effettivamente anche il codice php, ma non importa in quanto ignorerà il php, solo prendere i tag xml tra i quali avresti ottenuto il risultato. Per esempio:

<?php 
$appointmentTime = $_REQUEST['appointment_time']; 
?> 
<Response> 
    <Play> <?php echo $appointmentTime ?> </Play> 
</Response>