그 외 개발관련/etc.

[챗봇] 그래서 스킬 데이터를 어떻게 주고받는데? ( 카카오 챗봇 )

HMHA 2023. 3. 21. 14:56
300x250
반응형
300x250

최근 챗봇을 개발하면서 찾아본 여러 글들을 보면서,

카카오 오픈 i 빌더가 뭔지, 챗봇을 통해 간단한 응답은 어떻게 하는지는 알 수 있었다.

[챗봇] 카카오톡 챗봇을 위한 카카오 i 오픈 빌더 이해하기 (tistory.com)

 

[챗봇] 카카오톡 챗봇을 위한 카카오 i 오픈 빌더 이해하기

지난 포스팅에서는 챗봇이 무엇이고, 카카오톡 챗봇을 만들기 위한 준비단계에 대해 설명했었습니다. 아래 원글 작성자분의 포스팅을 먼저 읽으면 본문을 읽는데 도움이 됩니다. [챗봇] 간단하

a-curious.tistory.com

 

그런데 문제는 카카오에서 JSON으로 요청도 받았고,

호출도 확인을 했는데 그래서 스킬 데이터는 어떻게 쓰는거야? 라는 조금 헤맨 내용을 공유하고자 작성한다!

 

우선 여러 스킬들을 만들며 테스트를 해보며 무난하게 했던 스킬 하나를 보면

이미지 가장 첫번째 스킬인 deli_number_search 스킬이다.

위와 같이 URL과 TEST URL을 지정한 후, 각 헤더 값을 입력하면 된다.

여기까지는 무난했다!

얼른 스킬을 써보고싶은 마음도 컸지만..

 

이후로 기존 시나리오로 돌아가서 사용자 발화를 열심히 작성하고

 

버튼도 하나 만들었고, 다음 발화 페이지로의 연결도 끝이났다.

이제 스킬을 적용하기 위해 중단의 파라미터 설정을 바꿔주었다

이미지에 보다시피 조금 전 세팅했던 deli_number_search 스킬을 지정해두고,

필수 파라미터를 설정하였다.

필요하다면 검증 실패 에러메시지를 추가해줘도 좋지만, 굳이 추가하지는 않았다.

아래의 검증 API 주소는,

이후 되묻기 질문을 설정하였고,

 

여기서 한가지 팁은 어차피 다음 발화를 내가 직접 지정하지 않는 한, 그냥 되묻기 질문에 하고싶은 말을 써서 입력받는게 속 시원하다

 

또한 이때, 스킬 데이터 사용하기와 다음 시나리오로 굳이 넘어가서 처리하고 싶은 욕심이 났지만,

스킬을 사용하는 시나리오에서 처리하는게 가장 깔끔하다!

 

지정 후, 아까 스킬로 돌아가서 응답으로 돌아와서 아래의 response된 데이터를 보자

그전에!

우측 상단의 저장 버튼은 항상 누르는 습관을 가지자 ㅠㅠ

돌아와서 당연하게도 Skill Test를 통해 정확한 값을 가져오는지 먼저 검증하며 진행하는 것이 좋고,

 

Skill Data

{
  "response": {
    "data": {
      "location": "군산수송(대)",
      "description": "배달 완료하였습니다.",
      "company": "롯데택배",
      "status": "배송완료",
      "allProgress": [
        {
          "description": "고객님의 상품을  12~14시에 배달 예정 입니다.",
          "location": {
            "name": "군산수송(대)"
          },
          "time": "2023-03-17T08:47:00+09:00",
          "status": {
            "id": "out_for_delivery",
            "text": "배송출발"
          }
        },
        {
          "description": "배달 완료하였습니다.",
          "location": {
            "name": "군산수송(대)"
          },
          "time": "2023-03-17T13:13:00+09:00",
          "status": {
            "id": "delivered",
            "text": "배송완료"
          }
        }
      ],
      "carrierId": "송장번호",
      "time": "2023-03-17T13:13:00+09:00",
      "deliveryWorker": "담당기사"
    },
    "version": "2.0"
  }
}

보면, response아래의 data항목이 있다.

기본적으로 카카오 챗봇은 response 되는 값의 data를 사용하기 때문에, 최종 return하는 값에 data라는 key로 작성해주면 좋다

 

이제 정상적인 스킬 데이터 송수신이 마무리 되었다면,

다시 시나리오로 돌아가서 보는데,

왼쪽 이미지를 보면, {{#webhook.company}}와 같이

{{#webhook.<json_path>}}의 형태로 사용된 것을 알 수 있다.

 

위의 Json으로 response된 skill data안에

company, location, status를 가져다 보여주는 형태의 응답으로 

작성을 완료했고,

 

실제 사용 내용은 아래의 이미지에 첨부해두었다.

또한, 현재 발화에서 입력받아 저장된 변수는

@sys_deli_no와 같이 사용할 수 있다!

 

* 위에 작성했듯 스킬을 활용하는 시나리오에서 작성하는 응답이다

챗봇을 통해 실제 조회를 한 결과

대략적인 기초 사용법은 이렇고,

디테일한 스킬 사용이나, 다양한 방법은 아래 챗봇 관리자 센터를 통해 공부할 수 있다

 

(card나, image 형태로 돌려주는 방법도 있으니 단순한 정보전달의 스킬이 아니라면 보시는걸 추천드립니다.)

 

챗봇 관리자센터 개요 · 도움말 - 챗봇 관리자센터

<h2><a class="anchor" aria-hidden="true" id="챗봇-관리자센터-소개"></a><a href="#챗봇-관리자센터-소개" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width

i.kakao.com

 

https://i.kakao.com/docs/skill-dev-guide-v1#%EB%A7%90%ED%92%8D%EC%84%A0-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A1%9C-%EC%9D%B4%EC%9A%A9

 

챗봇은 쓰고자 하는데, 스킬 데이터 사용방법을 찾다가 답답했을 분들에게도 도움이 되었으면 하며

마무리한다.

 

 

 

300x250
반응형