개발자가 아니라면, 개발자 동료에게 도움을 요청하세요. API관련 튜토리얼에서는 개발자가 아니더라도 동작원리를 이해할 수 있도록 따라할 수 있는 예제가 제공됩니다.
개요
API 노드는 챗봇이 ‘날씨’, ‘검색’ 등과 같이 다양한 컨텐츠 서비스 정보를 활용하여 대답할 수 있도록 컨텐츠 서비스들과 연계하기 위해 관련 정보를 설정하는 노드입니다. 컨텐츠 서비스들은 공공기관에서 오픈 된 컨텐츠 뿐만 아니라 기업 내에 제공하는 기간계 서비스들과도 연계가 가능합니다.
API 설정
API 노드는 API관리 메뉴에 등록된 API들 중 하나를 선택하여 사용할 수 있습니다. 동일한 API를 서로 다른 챗봇, 서로 다른 시나리오에서 쓰고자 할 경우, 매번 등록 설정해야하는 번거로움이 해소됩니다. 아직 API관리메뉴에서 API를 등록하지 않았다면 API 관리페이지 내용을 먼저 확인하시기 바랍니다.
아래는 미리 등록한 API 목록을 보여주는 ‘사용 API’ 선택박스에서 하나의 API를 선택한 예시입니다.
API를 선택하여 ‘적용’ 버튼을 누르면 등록해둔 Header, 요청 파라미터 등 기본 정보를 불러옵니다.
기본 정보 외에 추가로 Header나 요청 파라미터를 사용하고 싶다면 각 각의 추가버튼을 클릭하여 추가할 수 있습니다.
API설정은 외부의 데이터 서비스와 연계시 서비스에 보내야할 요청 파라미터와 받아야할 출력 파라미터 정보를 설정합니다. API 설정은 2개의 Tab으로 구성이 됩니다.
요청 파라미터
대화 상황에 맞춰 API에 동적으로 파라미터 값을 입력할 수 있도록 API 요청값은 모두 공란으로 입력됩니다. API 요청값에는 고정된 값을 입력할 수 있으며, 대화 흐름에 지정된 파라미터값을 받아서 입력하고 싶다면 #{파라미터명}과 같이 입력하면 파라미터값을 동적으로 입력할 수 있습니다.
시스템에서 제공하는 요청파라미터
시스템에서 제공하는 파라미터도 사용가능합니다. 시스템 파라미터는 대화 흐름에서도 #{@message}와 같은 양식으로 사용하실 수 있습니다.
시스템 파라미터 | 표기 | 설명 |
---|---|---|
사용자 식별정보 | @userId | 사용자ID가 표시됩니다. (ex: email ) |
챗봇명 | @chatbotName | 챗봇 생성시 명명했던 이름이 표시됩니다. |
채널아이디 | @channelId | 접속한 채널 아이디가 표시됩니다. (ex : 5-facebook / 3-kakaotalk / 2-line / 7-navertalk / 6-telegram / 4-slack) |
받은 메시지 | @message | 사용자로부터 받은 질문 메시지 입니다. 사용자가 마지막으로 입력한 메시지로 최초 발화어 또는 Slot노드에서 마지막으로 입력받은 메시지입니다. |
현재년도 | @currentDateYYYY | 현재년도 정보입니다. (예:2019) |
현재월 | @currentDateMM | 현재월 정보입니다. (예:12) |
현재일 | @currentDateDD | 현재일 정보입니다. (예:31) |
현재년월 | @currentDateYYYYMM | 현재년월 정보입니다. (예:201912) |
현재년월일 | @currentDateYYYYMMDD | 현재년월일 정보입니다. (예:20191231) |
현재시간 | @currentTimeHH | 현재시간 정보입니다. (예:23) |
현재분 | @currentTimeMI | 현재분 정보입니다. (예:59) |
현재초 | @currentTimeSS | 현재초 정보입니다. (예:59) |
현재요일 | @currentDateWeek | 현재요일 정보입니다. (예: 1:일, 2:월, 3:화, 4:수, 5:목, 6:금, 7:토) |
응답 파라미터와 출력 파라미터
API 서비스로 Request를 성공적으로 보냈다면 응답(Response) 결과를 받게 됩니다. 그 결과 데이터는 아래와 같이 Tree 로 표현되며, 이렇게 응답으로 받은 데이터를 ‘출력 파라미터’에 담아서 사용할 수 있습니다.
API를 통해 응답으로 받은 출력 파라미터를 대화 흐름 파라미터에 담기위해 매핑을 하는 방법에는 다음 두가지 방법이 있습니다.
- 매핑할 경로 자동 입력 : ‘Api Tree’에서 노드를 drag&drop 으로 ‘출력 파라미터’ JsonPath 입력부로 끌어오기
- 매핑할 경로 직접 입력 : ‘출력 파라미터’의 JsonPath를 직접 입력
이와 같이 API Request를 통해 응답받은 데이터를 원하는 ‘출력 파라미터’에 담아 사용할 수 있습니다.
데이터 묶음을 파라미터로 설정하는 경우
API에서 제공하는 정보가 데이터 묶음으로 제공되는 경우, Tree의 말단정보(Leaf)를 파라미터로 모두 설정하려면 작업이 오래 걸릴 수 있습니다.
단비Ai에서는 중간 노드에 해당하는 경로를 ‘출력 파라미터’의 변수로 매핑을 하면 해당 데이터 묶음을 사용할 수 있습니다.
단, 데이터 묶음을 이용할 경우 Function 노드를 이용해서 Leaf정보를 추출할 수 있으며, 그 방법은 예시를 통해 알아보겠습니다.
응답 결과 Tree는 크게 Root, Node, Leaf로 구성되어있습니다.
Root
최상위를 의미 ($ 로 표시)
노드
데이터 구조의 중간지점을 의미하며 노드 명을 key 로 사용 (첫번째 노드 명이 ‘node1’ 일경우 $.node1 로 표시)
Leaf
더이상 하위 Node가 없는 Node, 최하위 노드를 의미
아래 그림과같이 ‘test’ 라는 ‘출력 파라미터’ 변수에 데이터 묶음(JSON객체, 배열)을 담는다고 할 때,
JSON 객체의 경우
‘soap:Body’ 라는 객체를 담는다고 할 경우, 해당 노드를 마우스로 드래그 하거나 ‘$.soap:Envelope.soap:Body’ 를 직접 입력하여 매핑합니다.
배열의 경우
‘newAddressListAreaCd’ 라는 배열을 담을경우, 해당 노드를 마우스로 드래그 하거나 ‘$.NewAddressListResponse.newAddressListAreaCd’ 를 직접 입력하여 매핑합니다.
매핑이 완료한 뒤 API 노드 다음에 Function 노드를 연결합니다.
연결한 Function Node에서 각 경우에 맞게 데이터를 Parsing 하여 사용합니다.
함께해요! 챗봇시대 :)
모든 사물, 디지털 매체와 말이 통하는 시대! 단비Ai와 함께 반드시 오게될 챗봇시대를 열어갔으면 좋겠습니다.
혹시 서비스 소개서를 찾고 있나요?
단비Ai 서비스 소개서는 아래 링크를 클릭해 다운로드 하실 수 있습니다.
서비스 소개서 다운로드
챗봇을 교육용도로 활용하고 싶으신가요?
단비Ai를 기반으로 만들어진 Ai교육, 에이아이런을 만나보세요 :)