기가지니 앱을 개발을 할 때 사용자의 발화를 인식해서 결괏값을 받아 액션을 취하려면 Dialog Kit을 필수로 사용을 합니다.
일반적으로 Dialog Kit에서 대화모델 관리에 어휘사전을 등록 -> 인텐트에 등록 -> 배포 요청 -> 배포 완료 후 사용이 가능한데요.
저 같은 경우는 Dialog Kit에 대화 모델 등록 프로세스로 어휘를 등록하고 통합 시험 시뮬레이터에서 결괏값을 테스트했는데도 불구하고 실제 기가지니에서는 인식이 안되더군요. 기존에 같은 방법으로 등록을 하고 개발을 잘 해왔는데도 불구하고 '죄송하지만 말씀하신 명령어는 아직 지원하지 않습니다.'라는 결과만 받았습니다.
기가지니 앱 개발을 할 때 기술 문의를 할 수 있도록 담당 개발자가 매칭이 됩니다. 담당자에게 수차례 증상을 얘기하고 문의를 했지만 끝끝내 대답을 못 받았고 직접 찾아낸 방법을 알려드립니다.
제가 찾은 방법은 setVoiceFilter와 onVoiceFilterMsg를 쓰는 것입니다. 이것을 진작에 알았더라면 개발 기간 며칠은 단축시켰을 겁니다.
onVoiceFilterMsg는 사용자가 "지니야" 발화 후 setVoiceFilter로 등록한 값들을 인식해서 인식한 값을 돌려주는데요. 사용 예시는 아래와 같습니다.
setVoiceFilter 함수의 첫 번째 인자로 filterOption을 넣는데 filterOption은 객체이며 keword라는 키값에 등록 하고자 하는 값들을 배열로 넣으면 됩니다.
이 부분은 제가 0.1 단위로 소수점까지 숫자를 발화했을 때 인식하도록 하기 위함입니다.
그리고 onVoiceFilterMsg를 이렇게 쓰는데요 사용자가 "지니야" 발화 후 setVoiceFilter로 등록한 값들을 인식해서 인식한 값을 저 message로 보내줍니다. dispatchSetVoiceFilterRes는 제가 만든 ContextAPI에 값을 저장할 함수입니다.
그리고 사용하고자 하는 컴포넌트에서 아래처럼 사용하면 됩니다. dispatchSetVoiceFilterRes에서 인식된 값을 getInfoState.voiceFilterRes에 저장됩니다.
그럼 사용자가 "지니야" 발화 후"다음"이라고 말하면 setVoiceFilter에 "다음"이라는 값이 셋팅 됐는지 확인하고 있다면 onVoiceFilterMsg로 "다음"이라는 값을 보내주어 dispatchSetVoiceFilterRes를 통해 getInfoState.voiceFilterRes 저장되고