이 문서는 ChatFlow를 통하여 챗봇을 개발하고자 할 때 사용되는 API에 대해 기술합니다.
-
developer_id와 app_id는 외부에 노출되지 않도록 주의해 주시기 바랍니다.
-
ChatFlow API를 이용해 옐로아이디/톡톡친구 챗봇을 구현한 프레임워크 별 예제 코드
- 회원이 ChatFlow API 플랫폼 서비스를 이용하는 과정에서 이용자의 개인정보 수집이 필요한 경우, 이용자로부터 개인정보 수집 및 이용에 대한 명시적인 동의를 받아야 합니다.
- ChatFlow는 '개인정보 취급위탁 동의'에 따라 안전하게 개인정보 처리 업무를 진행합니다.
ChatFlow에서 API를 사용하기 위해서는 먼저 Client ID 발급을 위한 회원가입을 진행해야 합니다.
- 웹사이트의 회원가입 페이지에서 회원가입을 진행합니다.
- 나의 ChatFlow 목록 페이지가 뜨면 회원가입 절차가 완료된 것입니다.
- 내 정보 페이지에서 자신에게 부여된 developer_id를 확인할 수 있습니다.
회원가입이 완료되어 서비스 가능한 상태가 되면, 다음 단계에 따라 서비스를 시작할 수 있습니다.
- 나의 ChatFlow 목록 페이지에서 ChatFlow 추가 버튼을 클릭합니다.
- 이름과 설명을 입력합니다.
- ChatFlow 관리 페이지에서 발급된 conversation_id를 확인합니다.
챗봇 시나리오를 생성하면 개발 서버에서 직접 ChatFlow API를 실행할 수 있습니다.
카카오 옐로아이디 / 네이버 톡톡친구 뿐만 아니라 각종 웹/어플리케이션 개발 시에도 범용적으로 사용 가능합니다.
ChatFlow 관리 페이지에서도 테스트를 실행할 수 있습니다.
- ChatFlow 이용자가 특정 시나리오 상의 유저 상태를 제어하는 API입니다.
- http(s) restful api를 통하여 개발 서버 -> ChatFlow 서버를 호출합니다.
- ChatFlow에서 회원가입 시 개발자 계정에 발급되는 고유 ID 값입니다.
- 개발자를 식별하기 위해 ChatFlow API 호출 시 매번 포함해야 하는 값입니다.
- 개발자의 챗봇 시나리오를 식별할 수 있는 고유 ID 값입니다.
- developer_id와 함께 ChatFlow API 호출 시 함께 포함해야 하는 값입니다.
- 개발자 챗봇 시나리오 내의 사용자를 식별하기 위한 값입니다.
- 개발사 서버에서는 API 호출 시 각 사용자의 고유 키를 함께 전달해주어야 합니다.
- user_id는 각각의 서비스 이용자에 대해 발급된 고유한 값이어야 합니다.
- 개발사 서버에서 ChatFlow 서버를 호출하는 API에 대한 명세서입니다.
- 개발사의 애플리케이션 사용자가 입력한 메시지를 ChatFlow 서버로 전달하는 API입니다.
- Method : POST
- URL : http://chatflow.ai/api/v1/message
- Content-Type : application/json; charset=utf-8
- Parameters
| 필드명 | 타입 | 필수여부 | 설명 |
|---|---|---|---|
| developer_id | String | Required | 개발자 식별 ID |
| app_id | String | Required | 개발자의 챗봇 시나리오 식별 ID |
| user_id | String | Required | 개발자 애플리케이션 내의 사용자 식별 ID |
| message | String | Required | 개발자 애플리케이션 내의 사용자가 입력한 메시지 |
| 필드명 | 타입 | 필수여부 | 설명 |
|---|---|---|---|
| id | String | Required | 챗봇 시나리오 상의 노드 ID, 관리자 페이지에서 확인 가능. |
| action | String | Required | 노드의 액션 타입, < intent|select|slot|link|custom > |
| message | Message | Required | 자동응답 명령어에 대한 응답 메시지의 내용. 6.1에서 상세 기술 |
| keyboard | Keyboard | Required | 키보드 영역에 표현될 명령어 버튼에 대한 정보. 생략시 text 타입(주관식 답변 키보드)이 선택된다. 6.2에서 상세 기술 |
| slot | Slot | Required | 대화를 진행하면서 축적된 정보, slot 노드를 거치면서 축적된다. |
- 예제
{
"id": "qsYGKEUPKO",
"action": "slot",
"message": {
"text": "주소를 알려주세요.",
"image": null
},
"keyboard": {
"type": "text"
},
"slot": {
"커피": "아메리카노",
"사이즈": "톨"
}
}
{
"id": "DeBOArSUaB",
"action": "select",
"message": {
"text": "귀하의 성별을 알려주세요",
"image": null
},
"keyboard": {
"type": "buttons",
"buttons": [
"여자",
"남자
]
},
"slot": {}
}
- 서비스되는 애플리케이션에서 예외 상황이 발생한 경우 유저의 상태를 시나리오 상의 entry로 전이하는 API입니다.
- Method : POST
- URL : http://chatflow.ai/api/v1/init
- Content-Type : application/json; charset=utf-8
- Parameters
| 필드명 | 타입 | 필수여부 | 설명 |
|---|---|---|---|
| developer_id | String | Required | 개발자 식별 ID |
| app_id | String | Required | 개발자의 챗봇 시나리오 식별 ID |
| user_id | String | Required | 개발자 애플리케이션 내의 사용자 식별 ID |
| 필드명 | 타입 | 필수여부 | 설명 |
|---|---|---|---|
| id | String | Required | 챗봇 시나리오 상의 노드 ID, 관리자 페이지에서 확인 가능. |
| action | String | Required | 노드의 액션 타입, < intent|select|slot|link|custom > |
| message | Message | Required | 자동응답 명령어에 대한 응답 메시지의 내용. 6.2에서 상세 기술 |
| keyboard | Keyboard | Required | 키보드 영역에 표현될 명령어 버튼에 대한 정보. 생략시 text 타입(주관식 답변 키보드)이 선택된다. 6.1에서 상세 기술 |
| slot | Slot | Required | 대화를 진행하면서 축적된 정보, slot 노드를 거치면서 축적된다. |
- 예제
{
"id": "qsYGKEUPKO",
"action": "intent",
"message": {
"text": "안녕하세요. 무엇을 도와드릴까요?",
"image": null
},
"keyboard": {
"type": "text"
},
"slot": {}
}
- 시나리오 상의 특정 노드로 사용자의 상태를 강제로 변경해야 하는 경우 호출하는 API 입니다.
- Method : POST
- URL : http://chatflow.ai/api/v1/init
- Content-Type : application/json; charset=utf-8
- Parameters
| 필드명 | 타입 | 필수여부 | 설명 |
|---|---|---|---|
| developer_id | String | Required | 개발자 식별 ID |
| app_id | String | Required | 개발자의 챗봇 시나리오 식별 ID |
| user_id | String | Required | 개발자 애플리케이션 내의 사용자 식별 ID |
| node_id | String | Required | 이동하고자 하는 노드 ID |
| 필드명 | 타입 | 필수여부 | 설명 |
|---|---|---|---|
| id | String | Required | 챗봇 시나리오 상의 노드 ID, 관리자 페이지에서 확인 가능. |
| action | String | Required | 노드의 액션 타입, < intent|select|slot|link|custom > |
| message | Message | Required | 자동응답 명령어에 대한 응답 메시지의 내용. 6.1에서 상세 기술 |
| keyboard | Keyboard | Required | 키보드 영역에 표현될 명령어 버튼에 대한 정보. 생략시 text 타입(주관식 답변 키보드)이 선택된다. 6.2에서 상세 기술 |
| slot | Slot | Required | 대화를 진행하면서 축적된 정보, slot 노드를 거치면서 축적된다. |
- 예제
{
"id": "qsYGKEUPKO",
"action": "intent",
"message": {
"text": "안녕하세요. 무엇을 도와드릴까요?",
"image": null
},
"keyboard": {
"type": "text"
},
"slot": {}
}
- ChatFlow 연동 서비스 이용자가 명령어를 선택 혹은 입력했을 때 이용자에게 전송하는 응답 메시지입니다.
- String, image의 조합으로 이루어집니다.
- 2가지 타입 중 1개 이상이 반드시 들어가야 하며, 최대 2가지 타입 모두 포함될 수 있습니다.
| 필드명 | 타입 | 필수여부 | 설명 |
|---|---|---|---|
| text | String | Optional | 사용자에게 발송될 메시지 텍스트 |
| image | Image | Optional | 말풍선에 들어갈 이미지 정보. 1장 제한, JPEG/PNG 포맷. 개발 진행중 |
{
"text": "안녕하세요.",
"image": {
"url": "https://hello.photo.src",
"width": 640,
"height": 480
}
}
- 응답 메시지에 따라 사용자의 키보드 영역에 표현될 메시지 입력방식에 대한 정보입니다.
- 별도로 설정하지 않는 경우 text 타입이 기본으로 설정됩니다.
| 필드명 | 타입 | 필수여부 | 설명 |
|---|---|---|---|
| type | String | Required | buttons: 객관식 응답의 목록을 구성할 수 있음 text: 주관식 응답을 입력받을 수 있음 |
| buttons | Array[String] | Optional | 객관식 응답 내용의 목록 |
- 직접 입력
{
"type": "text"
}
- 버튼 입력
{
"type": "buttons",
"buttons": [
"선택 1",
"선택 2",
"선택 3"
]
}
- 이미지 정보
| 필드명 | 타입 | 필수여부 | 설명 |
|---|---|---|---|
| url | String | Required | 이미지 url |
| width | Int | Required | 이미지 width |
| height | Int | Required | 이미지 height |
이미지 권장 사이즈 : 720 x 630px
지원 파일형식 및 권장 용량 : jpg, png /500KB
{
"url": "https://photo.src",
"width": 640,
"height": 480
}
| http status code | code | message | comment |
|---|---|---|---|
| 200 | 0 | SUCCESS | 정상 응답 |
상단의 issue를 통해서 문의주시길 바랍니다.
