Kakao i Agent SDK::iOS::벤더 인터페이스 연동

페이지 이동경로

벤더 인터페이스 연동

벤더 인터페이스(Vendor Interface)란 Kakao i agent Virtual Service(KVS)에서 제공하는 인터페이스 이외에 클라이언트가 독자적으로 추가 구현할 수 있는 인터페이스입니다. 카카오 i 인터페이스의 기본 구성 요소인 Event, Instruction, State를 이용하여 KVS가 아닌 독자적인 Skill을 구성하고 다양한 기능들을 확장할 수 있습니다.
벤더 인터페이스를 연동하기 위해서는 1) 벤더 인터페이스 설정, 2) 벤더 인터페이스 수신, 3) Event 등록 작업이 필요합니다.

안내
벤더 인터페이스 연동을 위해서는 사전에 카카오 i 담당자와 협의가 필요합니다.

  • 벤더 인터페이스의 명명, 설계 방법 및 Skill 구성 등의 자세한 설명은 Service Agent Interface 문서를 참고하시기 바랍니다.
Kakao i 인터페이스 구성
프로토콜 필수 여부 설명
Event 선택 클라이언트에서 KVS로 보내지는 일련의 명령들
Instruction 필수 KVS에서 클라이언트로 보내지는 일련의 명령들
State 필수 클라이언트 구현체의 현재 상태를 서버에 고지하기 위해 마련된 장치
- Interface에 매우 종속적이며, Event 전송 시 매번 전송됨

벤더 인터페이스 설정

Kakao i SDK 초기화 시, 벤더 인터페이스 정보를 KakaoI.shared.vendorInterfaces 변수에 다음의 코드예제를 참고하여 설정합니다. 벤더 인터페이스가 한 개 이상일 경우에는 리스트로 구성해야 합니다.

Sample Code

코드예제벤더 인터페이스 설정

let vendorEmotionInterface = KIVendorInterface(vendorName: "Vendor.Company.Group",
																				interfaceName: "Emotion",
																				version: "1.0")
KakaoI.shared.vendorInterfaces = [vendorInterface]

KIVendorInterface
메서드 설명
KIVendorInterface를 설정하는 메서드
vendorName 벤더 이름
- 카카오 i 담당자와 협의 필요
interfaceName 벤더 인터페이스 이름
- 카카오 i 담당자와 협의 필요
version 벤더 인터페이스 버전
- 카카오 i 담당자와 협의 필요
KakaoI.shared.vendorInterfaces 벤더 인터페이스 목록
- 한 개 이상일 경우에는 리스트로 구성

벤더 인스트럭션 수신

벤더 인스트럭션(Instruction) 수신 시에는 서비스에 맞게 동작을 정의하기 위해 KakaoIDelegate 메서드의 kakaoIVendorInstructionReceived를 활용합니다.

코드예제벤더 인스트럭션 수신

class KakaoIGateway: KakaoIDelegate {
..
	func kakaoIVendorInstructionReceived(type: String, body: [String : Any], bodyJson: String) {
		switch type {
			/// ex
			case "Vendor.Company.Group.ExampleType"
			....
			break
			....
	}
}

kakaoIVendorInstructionReceived
메서드 설명
벤더에 특화된 Instruction을 수신하는 메서드
type Instruction의 타입
body JSON을 Dictionary 형태로 변경한 값
bodyJson JSON String 값

Event 등록

다음 코드를 참고하여 커스텀 이벤트를 Kakao i Agent SDK에서 카카오 i 서버로 전달하기 위해 sendCustomEvent 메서드를 활용합니다.

코드예제Event 등록

public func sendCustomEvent(type: String, token: String, dataJson: [String: Any]) {
	KakaoI.shared.sendCustomEvent(type: type, token: token, dataJson: dataJson)
}

sendCustomEvent
메서드 설명
커스텀 Event를 카카오 i 서버로 전송하는 메서드
type 해당 커스텀 Event의 타입
token 해당 커스텀 Event를 식별하기 위한 토큰
dataJson 해당 커스텀 Event의 JsonData
이 문서가 만족스러운 이유를 알려주세요.
이 문서에 아쉬운 점을 알려주세요.
평가해주셔서 감사합니다.

더 자세한 의견은 contact.dkt@kakaocorp.com 으로 제보해주세요.