기가지니 1,2 Dev Guide v2.0 logo 기가지니 1,2 Dev Guide v2.0

개발 시작 단계에서 반드시 처리 해야 할 서비스 시작과 종료 처리 작업을 진행합니다.

기가지니 서비스는 시작과 종료 처리를 반드시 해야 합니다. 개발 중인 서비스에 대한 메인 화면 진입 방법과 서비스 종료 방법에 대해 설명합니다.

2.6.1 서비스 시작 처리

기가지니 서비스를 처음 실행할 때, 셋팅해야 할 내용을 알아보겠습니다. 기가지니 서비스는 발화의 순서가 정해져 있지 않고, 발화로 인한 서비스 이동이 자유롭습니다. 이로 인해 “Invoke + Intent” 조합이면 어느 위치에 있던간에 해당 내용이 바로 실행되어 버립니다.

기가지니 서비스는 화면이 있는 서비스이기 때문에 대부분 메인화면을 가지고 있습니다. 「Service SDK 정보 수정 - Main Page」에서 설명했듯이 서비스의 메인 화면을 선택하게도 되어 있습니다. 따라서 본 글에서는 개발하고자 하는 기가지니 서비스의 메인 실행을 위한 처리 방법을 작성하도록 하겠습니다.

2.6.1.1 발화로 시작하기

1) Dialog Kit 작업

서비스 메인 실행은 대부분 “지니야, invoke + 실행 명령”으로 되어 있습니다. (예: “지니야, 지니고개 실행해줘”, “지니야, 지니고개 시작”) 인텐트에 대한 실행 규칙은 어휘 사전의 조합으로 구성된다했으니 invoke도 어휘 사전으로 생성하여 적용합니다. (서비스 실행과 종료 발화에만 Invoke 어휘 사전을 사용합니다.)

Invoke명을 포함한 어휘 사전 생성

서비스 메인 실행 인텐트 생성

메인화면 실행을 위한 대표 발화문을 입력합니다. 주어진 기본 실행 관련 어휘 사전인 PR-B-RUN을 인텐트 규칙에 적용합니다. (시작에 대한 발화문을 대화 모델 시뮬레이터에서 테스트 하고, 포함이 되지 않는 발화의 경우 PR 사전을 새로 생성하여 인텐트 규칙에 적용하도록 합니다.)

  • 인텐트 생성 : serviceStart
  • 대화입력 : “지니고개 시작해줘”
  • 인텐트 규칙 : NE-INVOKE + PR-B-RUN

발화 적용 테스트

서비스 시작에 대한 인텐트가 정상적으로 추출되는지 대화 모델 시뮬레이터를 통해 확인합니다.

2) Service SDK 정보 등록

Service SDK 정보 등록/수정에 들어가서, 생성한 인텐트에 대한 정보를 설정합니다. 서비스 시작에 대한 인텐트가 실행되었을 때 로딩할 서비스 주소를 입력합니다.

3) 리모컨으로 시작하기

개발 중에서는 리모컨으로 서비스를 선택하지 못하지만, 추후 서비스가 상용됬을 때는 앱 갤러리를 통해 서비스를 실행시킬 수 있습니다. 사용자가 리모컨으로 해당 서비스를 선택했을 때 실행될 Main Page 선택을 합니다.

2.6.1.2 코드 작업 하기

기가지니 서비스 시작 시 기가지니 Service SDK API를 사용하기 위해 코드 내에 gigagenie init 함수를 초기화 해야 합니다. 해당 내용은 「2.3 Service SDK 작업하기 - API 초기화」 편에서 확인할 수 있습니다.

2.6.2 서비스 종료 처리

해당 서비스가 발화로 종료될 수 있도록 작업을 해야 합니다. 리모컨 나가기 버튼과 발화로의 종료 처리를 위해 아래와 같은 처리를 진행합니다.

  • 종료 처리 - onRequestClose + svcFinished

2.6.2.1 발화 / 리모컨으로 종료하기

서비스 시작과 다르게 종료는 코드 내 작업만으로 가능합니다. 페이지 내 onRequestClose를 정의하면, 서비스 실행 중에 입력되는 “종료”, “나가기”의 발화에 대해 종료 처리가 가능합니다.

1) onRequestClose

해당 api는 서비스 종료 수신 API로, 음성명령(종료, 닫기 발화)과, 리모컨 나가기 키 클릭시 서비스 종료 처리를 할 수 있도록 제공합니다. 해당 코드는 이벤트 전달만 하므로, svcFinished를 호출하여 처리합니다.

2) svcFinished API

서비스 종료 요청에 대해 자체 종료 처리를 진행합니다.

// "종료", "닫기" 발화와 리모컨 나가기 버튼 클릭 시 종료 이벤트
gigagenie.voice.onRequestClose=function(){
		// 서비스 종료
		options={};
		gigagenie.voice.svcFinished(options,function(result_cd,result_msg,extra){});
};

만약, “Invoke + 종료 명령”에 대한 종료 처리를 진행할 경우, ‘서비스 시작’과 동일하게 dialog kit을 구성하고 onActionEvent로 종료 처리를 합니다. (onActionEvent의 종료 인텐트에 svcFinished 호출하면 됩니다.)