SCXML : State Chart XML
Le CCXML
Introduction
Le CCXML (Call Control XML) est un langage basé sur le XML qui permet de gérer les évènements asynchrones lors de communications téléphoniques entre un serveur vocal et un utilisateur. Ce langage est certifié par le W3C et est actuellement en version 1.
Le CCXML a été créé dans le but de pouvoir interagir avec Voice XML, mais peut fonctionner sans. Là où Voice XML permet de gérer la navigation d'un serveur vocal selon les requêtes d'un utilisateur, le CCXML permet de gérer l'instance du flux de voix à travers le système. Il utilise les notions d'évènements et de transitions.
Principe
Sur ce premier schéma, on observe que ce n'est plus le système Voice XML qui est en communication avec l'utilisateur mais le système CCXML. Ce dernier interagit avec l'application de navigation vocale, et transmet les réponses à l'utilisateur. On constate donc que le CCXML agit comme une couche au-dessus de Voice XML. Néanmoins, il est assez difficile de voir comment fonctionne le CCXML sur ce schéma, voici donc un second schéma plus technique qui vous permettra de mieux le comprendre.
Sur ce second schéma, on observe qu'un appel est associé à un document CCXML. Ce document contient plusieurs évènements distincts (Event Handler). Chaque évènement contient des transitions qui permettent de gérer la navigation (Trigger). Pour chaque transition, une action est possible (Trigger Action).
Pour illustrer ce schéma, prenons l'exemple d'un serveur téléphonique qui demande un numéro de poste avant de transmettre l'appel à ce dernier. L'utilisateur contacte le serveur vocal, un évènement est donc déclenché comme appel entrant. Cet évènement déclenchera un dialogue VoiceXML qui permet à l'utilisateur d'entendre le message de bienvenue. Vient alors une transition qui déclenchera un autre dialogue VoiceXML qui demandera à l'utilisateur de saisir le numéro de poste demandé. Une fois le choix de l'utilisateur fait, une transition sera exécutée pour rechercher la ligne correspondante au numéro de poste. En fonction du succès de cette recherche, soit un appel sera lancé sur cette ligne pour mettre en relation l'utilisateur et le poste, soit un autre évènement sera déclenché, comme par exemple un message VoiceXML indiquant que ce poste n'existe pas. Si le poste ne répond pas, le système peut lever un nouvel évènement indiquant que le poste ne répond pas.