API 노드에 대한 이해와 설정하는 방법을 설명합니다.
Edit
화면 위치 : 챗봇 만들기 > 챗봇 제작 > 주요 대화 > 대화 흐름

개요

API 노드는 챗봇이 ‘날씨’, ‘검색’ 등과 같이 다양한 컨텐츠 서비스 정보를 활용하여 대답할 수 있도록 컨텐츠 서비스들과 연계하기 위해 관련 정보를 설정하는 노드입니다. 컨텐츠 서비스들은 공공기관에서 오픈 된 컨텐츠 뿐만 아니라 기업 내에 제공하는 기간계 서비스들과도 연계가 가능합니다.

Api 노드

API 설정

API 노드는 API관리 메뉴에 등록된 API들 중 하나를 선택하여 사용할 수 있습니다. 동일한 API를 서로 다른 챗봇, 서로 다른 시나리오에서 쓰고자 할 경우, 매번 등록 설정해야하는 번거로움이 해소됩니다. 아직 API관리메뉴에서 API를 등록하지 않았다면 API 관리페이지 내용을 먼저 확인하시기 바랍니다.

아래는 미리 등록한 API 목록을 보여주는 ‘사용 API’ 선택박스에서 하나의 API를 선택한 예시입니다. API를 선택하여 ‘적용’ 버튼을 누르면 등록해둔 Header, 요청 파라미터 등 기본 정보를 불러옵니다.

기본 정보 외에 추가로 Header나 요청 파라미터를 사용하고 싶다면 각 각의 추가버튼을 클릭하여 추가할 수 있습니다.

API 선택

API설정은 외부의 데이터 서비스와 연계시 서비스에 보내야할 요청 파라미터와 받아야할 출력 파라미터 정보를 설정합니다. API 설정은 2개의 Tab으로 구성이 됩니다.

요청 파라미터

대화 상황에 맞춰 API에 동적으로 파라미터 값을 입력할 수 있도록 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 응답 데이터 매핑하기

데이터 묶음을 파라미터로 설정하는 경우

API에서 제공하는 정보가 데이터 묶음으로 제공되는 경우, Tree의 말단정보(Leaf)를 파라미터로 모두 설정하려면 작업이 오래 걸릴 수 있습니다. 단비Ai에서는 중간 노드에 해당하는 경로를 ‘출력 파라미터’의 변수로 매핑을 하면 해당 데이터 묶음을 사용할 수 있습니다.
단, 데이터 묶음을 이용할 경우 Function 노드를 이용해서 Leaf정보를 추출할 수 있으며, 그 방법은 예시를 통해 알아보겠습니다.

응답 결과 Tree는 크게 Root, Node, Leaf로 구성되어있습니다.

Root

최상위를 의미 ($ 로 표시)

노드

데이터 구조의 중간지점을 의미하며 노드 명을 key 로 사용 (첫번째 노드 명이 ‘node1’ 일경우 $.node1 로 표시)

Leaf

더이상 하위 Node가 없는 Node, 최하위 노드를 의미

응답 파라미터 Tree

아래 그림과같이 ‘test’ 라는 ‘출력 파라미터’ 변수에 데이터 묶음(JSON객체, 배열)을 담는다고 할 때,

응답 파라미터 Tree
JSON 객체의 경우

‘soap:Body’ 라는 객체를 담는다고 할 경우, 해당 노드를 마우스로 드래그 하거나 ‘$.soap:Envelope.soap:Body’ 를 직접 입력하여 매핑합니다.

배열의 경우

‘newAddressListAreaCd’ 라는 배열을 담을경우, 해당 노드를 마우스로 드래그 하거나 ‘$.NewAddressListResponse.newAddressListAreaCd’ 를 직접 입력하여 매핑합니다.

매핑이 완료한 뒤 API 노드 다음에 Function 노드를 연결합니다.

응답 파라미터 Tree

연결한 Function Node에서 각 경우에 맞게 데이터를 Parsing 하여 사용합니다.

Function Node에서의 Parsing, 각 파라미터는 #{}

함께해요! 챗봇시대 :)

모든 사물, 디지털 매체와 말이 통하는 시대! 단비Ai와 함께 반드시 오게될 챗봇시대를 열어갔으면 좋겠습니다.


인공지능 챗봇빌더 단비Ai 시작하기

혹시 서비스 소개서를 찾고 있나요?

단비Ai 서비스 소개서는 아래 링크를 클릭해 다운로드 하실 수 있습니다.
서비스 소개서 다운로드

챗봇을 교육용도로 활용하고 싶으신가요?

단비Ai를 기반으로 만들어진 Ai교육, 에이아이런을 만나보세요 :)