J'ai besoin de construire un système de dialogue similaire à celui utilisé dans les centres d'appels. Mon système n'est pas basé sur le téléphone, mais le dialogue est similaire. Quelque chose commeSystème de dialogue de style IVR/workflow/menu
System: "Main menu: Enter [1] for menu1, [2] for menu2"
User: [1]
System: "menu1: enter [1] for apples, [2] for oranges, [3] for main menu"
User: [7]
System: "What??"
System: "menu1: enter [1] for apples, [2] for oranges, [3] for main menu"
User: [2]
... and so on
Je veux avoir une belle déclarative description de toutes les options possibles et une belle façon de courir à travers cet arbre, guidé par l'entrée utilisateur.
Déjà considéré: lexer ANTLR généré/analyseur (semble être un surpuissant), machine d'état à base SCXML (semble que les transitions peuvent être déclarées, le reste doit être codé)
SCXML est mon candidat au moment, chose mauvaise entrée peut être contourné. Ce que je n'aime pas, c'est que je ne peux pas bien incorporer les invites système là-bas, ça a l'air horrible quand j'essaye. DSL => génération SCXML pourrait être une option, y penser – unbeli
Qu'en est-il de pousser les invites dans la vue et prendre SCXML seulement pour modéliser la machine d'état? (-> MVC/MVP pattern) –
oui, bonne idée, c'est aussi possible. Mais je me demande toujours s'il existe un outil plus spécifique que SCXML. Par exemple, il y a http://en.wikipedia.org/wiki/VoiceXML mais il est trop attaché à la communication vocale (pauses, etc.) – unbeli