Réception asynchrone d’un message externe

Dernière mise à jour : Nov 09, 2023 |
Informations sur le prologue
Pour recevoir un message externe de façon asynchrone, une application définit un gestionnaire d'événements de « message externe ». Si la charge utile d'un message externe comprend un nom d'événement, le nom est ajouté au nom de l'événement qui est envoyé à l'application séparé par un point, ou par un exemple, « externalmessage.ready ». Cela permet aux applications de gérer les messages externes à l’aide de différents gestionnaires d’événements.
Les messages externes asynchrones sont traités de la même manière qu’un événement de déconnexion est traité dansVXML2.
Les événements sont envoyés à l’application en série. Étant donné que l'interprète ne reflète que les données associées à un seul message externe à la fois, l'application traite les données associées à chaque message externe après la livraison de ce message. Si plusieurs événements arrivent, VB les traite un à la fois, jusqu’à ce que tous les événements soient traités, ou lorsque l’exécution passe à un élément où les événements externes se produisent. activez les virages à faux, selon la première éventualité.
L’exemple suivant montre la réception asynchrone d’un message externe. Le gestionnaire de capture copie le message externe reflété dans un tableau au niveau de l’application.
<vxml version="2.1"
  xmlns="http://www.w3.org/2001/vxml">
  <property name="externalevents.enable" value="true"/>
  <var name="myMessages" expr="new Array()"/>

  <catch event="externalmessage">
    <var name="lm" expr="application.lastmessage$"/>
    <if cond="typeof lm.content == 'string'"/>
      <log>reçu <value expr="lm.content"/></log>
    <else/>
      <log>type de message externe inconnu reçu
        <value expr="typeof lm.content"/>
      </log>
    </if>
    <script>
      myMessages.push({'content' : lm.content, 'ctype' : lm.contenttype});
    </script>
  </catch>

  <form>
  <field name="num" type="digits">
    <prompt>choisir un numéro n’importe quel numéro</prompt>
    <catch event="noinput nomatch">
      désolé. n’a pas compris.
      <reprompt/>      
    </catch>
    <filled>
      vous avez dit <value expr="num"/>
      <clear/>
    </filled>
  </field>
  </form>
</vxml>