벤더 인터페이스 연동
벤더 인터페이스(Vendor Interface)란 Kakao i agent Virtual Service(KVS)에서 제공하는 인터페이스 이외에 클라이언트가 독자적으로 추가 구현할 수 있는 인터페이스입니다. 카카오 i 인터페이스의 기본 구성 요소인 Event, Instruction, State를 이용하여 KVS가 아닌 독자적인 Skill을 구성하고 다양한 기능들을 확장할 수 있습니다.
벤더 인터페이스를 연동하기 위해서는 1) 벤더 인터페이스 설정, 2) 벤더 인터페이스 수신, 3) Event 등록 작업이 필요합니다.
표Kakao i 인터페이스 구성안내
벤더 인터페이스 연동을 위해서는 사전에 카카오 i 담당자와 협의가 필요합니다.
- 벤더 인터페이스의 명명, 설계 방법 및 Skill 구성 등의 자세한 설명은 Service Agent Interface 문서를 참고하시기 바랍니다.
프로토콜 | 필수 여부 | 설명 |
---|---|---|
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를 설정하는 메서드 | |
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
....
}
}
메서드 | 설명 |
---|---|
벤더에 특화된 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)
}
메서드 | 설명 |
---|---|
커스텀 Event를 카카오 i 서버로 전송하는 메서드 | |
type | 해당 커스텀 Event의 타입 |
token | 해당 커스텀 Event를 식별하기 위한 토큰 |
dataJson | 해당 커스텀 Event의 JsonData |