2010-06-10 3 views
2

콜 센터에서 사용되는 IVR과 유사한 대화 시스템을 구축해야합니다. 내 시스템은 전화 기반이 아니지만 대화 상자는 비슷합니다.IVR 스타일 대화 시스템/워크 플로/메뉴

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 

같은 뭔가 내가 사용자 입력에 의해 인도 가능한 모든 옵션의 좋은 선언 설명과 그 나무를 통해 실행하는 좋은 방법을 갖고 싶어.

이미 고려 : ANTLR 생성 렉서/파서는, SCXML 기반 상태 머신은

답변

1

난 적이 없다 (, 나머지는 코딩 할 필요가 선언 할 수 있습니다 만 전환처럼 보인다) (잔인한 것 같다) 전에 SCXML을 보았지만, 프로젝트 페이지와 예제를 잠시 훑어 본 후에 나에게 필요한 모든 것이있는 것처럼 보였다. IVR은 상태 다이어그램으로 모델링 할 수 있습니다. 주에 들어가는 것은 다음 선택을 제시하거나 활동을 시작합니다 (다음 메뉴 레벨을 제시하는 것도 활동 임).

'잘못된 사용자 입력'상태 (또는 SCXML에는 이미이 공통 작업에 대한 해결책이 있음)를 구현하는 것이 까다로울 수 있습니다.

작은 DSL을 만들면이 상태 기록을 간단하게 편집 할 수 있습니다. 이 DSL로 작성된 문서는 IVR 시스템을 구동하는 SCXML 파일로 변환됩니다.

(SCXML 포인터 주셔서 감사합니다.)

+0

SCXML은 현재 내 후보입니다. 잘못된 입력 문제를 해결할 수 있습니다. 내가 싫어하는 것은 시스템 프롬프트를 제대로 포함 할 수 없다는 것입니다. 시도 할 때 끔찍한 것처럼 보입니다. DSL => SCXML 생성은 옵션 일 수 있습니다. – unbeli

+0

상태 시스템을 모델링하기 위해 프롬프트 SCXML을보기로 푸시하는 방법은 무엇입니까? (-> MVC/MVP 패턴) –

+0

네, 좋은 생각이 가능합니다. 그러나 SCXML보다 더 구체적인 도구가 있는지 궁금합니다. 예를 들어 http://en.wikipedia.org/wiki/VoiceXML이 있지만 음성 커뮤니케이션 (일시 중지 등)에 너무 얽혀 있습니다. – unbeli