ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CLOVA Chatbot 카카오톡 연동하기
    Infra/ncloud 2023. 8. 30. 23:39

    CLOVA Chatbot 카카오톡 연동하기

     지난번 포스팅에서 클로바 챗봇으로 자기소개봇을 만들고 API Gateway를 활용해서 배포해 보는 작업을 진행해 보았는데요. 이번에는 API Gateway를 통해 배포할 때 얻은 Invoke URL을 가지고 CLOVA Chatbot을 카카오톡에서 사용하려면 어떻게 해야 되는지 알아보도록 하겠습니다.

     

     간단하게 결론부터 말씀드리자면 카카오톡에서 CLOVA Chatbot을 사용하려면 API Gateway에서 생성한 Invoke URL을 카카오톡 챗봇 관리자센터(카카오i 오픈빌더)에 등록해주어야 합니다. 다만, 여기서 주의할 점은 Invoke URL을 그대로 등록해하는 것이 아니라 약간의 변형이 필요합니다.

     

     그 이유는 챗봇 빌더마다 API 명세가 각기 다르기 때문인데요. 즉, 둘을 연동하기 위해서는 서로의 메시지 포맷을 맞춰줘야 합니다. 쉽게 말씀드려서 카카오톡에서 발송한 메시지를 CLOVA Chatbot이 이해할 수 있도록 도와주는 별도의 컨버터(변환기)가 필요합니다. 따라서 제가 미리 만들어 놓은 컨버터를 이용해서 CLOVA Chatbot을 카카오톡에서 사용해 보도록 해보겠습니다.

     

    *카카오톡 챗봇 관리자센터를 사용하려면 사전에 홈페이지에서 OBT 신청을 완료하셔야 합니다.

     


     

    🚀 Cloud Functions로 clova2kakao 컨버터 등록하기

     먼저 컨버터를 등록하기 위해 Cloud Functions 서비스를 사용해 보도록 하겠습니다. Cloud Functions은 Ncloud의 대표적인 서버리스 서비스입니다. 이에 관한 간단한 설명은 이전에 서버리스로 이미지 컨텐츠 서비스하기 포스팅에서 다뤄봤으므로 이곳에서 자세한 설명은 생략하도록 하겠습니다.

     

     먼저 네이버 클라우드 플랫폼 콘솔에 접속하여 왼쪽의 내비게이션바에서 [Services] 메뉴를 클릭하여 [Cloud Functions]를 선택합니다. 만약 평소에 Cloud Functions 서비스를 자주 사용하신다면 북마크에 추가해 놓는 것을 추천드립니다. 북마크에 추가해 놓으면 왼쪽 내비게이션바에서 손쉽게 원하는 서비스를 찾을 수 있게 됩니다.

     

    Services 메뉴에서 Cloud Functions 찾기

    Cloud Functions을 찾아서 들어오셨다면 하위 메뉴중에 [Action]을 선택한 뒤 화면 상단의 [Action 생성] 버튼을 클릭합니다.

     

    Action 생성하기

     

    그럼 아래와 같이 트리거를 선택하도록 되어있는데요. 별도로 사용할 수 있는 트리거가 존재하지 않기 때문에 트리거 설정 없이 액션 만들기”를 선택합니다.

     

    트리거 종류 선택

     

    그 후에는 액션을 다음과 같이 입력해 주시면 됩니다. 중요한 것은 타입을 웹 액션으로 지정해 주시고 소스코드를 java로 선택합니다. 만약 VPC 환경이라면 추가적으로 VPC 연결 정보도 적어주셔야 합니다. 아래는 Classic 환경을 기준으로 생성하였습니다.

     

    Action 정보 입력하기

     

    • 메인 클래스 : com.chucoding.Main
    • Main 함수 : main
    • 액션 메모리 : 128MB
    • 액션 Timeout : 60000

     

    java를 선택하는 이유는 저희가 등록할 컨버터가 java로 만들어져있기 때문인데요. jar소스파일은 아래 링크를 통해 다운로드할 수 있습니다. 비교적 간단한 코드이기 때문에 혹시 직접 만들어보고 싶으신 분들은 직접 만들어보셔도 좋을 것 같습니다.

     

     

    GitHub - chucoding/clova2kakao: 클로바 챗봇 답변 포맷을 카카오 요청 포맷으로 변환

    클로바 챗봇 답변 포맷을 카카오 요청 포맷으로 변환. Contribute to chucoding/clova2kakao development by creating an account on GitHub.

    github.com

     

    만약 위 링크의 jar 파일을 사용하신다면 옵션 설정을 위의 이미지와 동일하게 입력해 주신 다음 [생성] 버튼을 클릭해주시면 됩니다.

     

    액션 생성을 마치고 나면 추가적으로 CLOVA Chatbot URL을 파라미터로 등록해주셔야 하는데요. Action 수정하기 버튼을 통해 다시 디폴트 파라미터(JSON) 입력 부분에 다음과 같이 InvokeURL을 입력합니다. InvokeURL은 CLOVA Chatbot 빌더에서 메신저 연동 > Custom 연동 설정에서 APIGW Invoke URL을 복사해 오시면 됩니다. 해당 부분은 이전 포스팅에서 가이드 드렸으니 참고하시면 좋을 것 같습니다.

     

    디폴트 파라미터에 InvokeURL 등록

     


     

     🌏 clova2kakao  API Gateway 등록하기

    다음으로는 API Gateway로 이동해서 컨버터를 호출할 Invoke URL을 생성해 보도록 하겠습니다. 다음과 같이 왼쪽 내비게이션바에서 [Services] 메뉴를 선택한 뒤에 Application Services 쪽에서 [API Gateway]를 찾아서 선택합니다.

     

    Services에서 API Gateway 선택하기

     

    그다음은 이전에 CLOVA Chatbot API Gateway 연동 당시 APIGW 자동 연동 생성으로 URL을 만들었다면 다음과 같이 Product가 생성되 있는 것을 볼 수 있습니다. 해당 Product를 선택해서 [APIs] 아이콘 버튼을 클릭합니다.

     

    CLOVA Chatbot Product의 APIs 아이콘 클릭하기

     

    APIs 내부로 들어왔다면 처음에 Cloud Functions에 등록해 놓았던 clova2kakao 컨버터를 호출할 수 있는 API를 생성해 보도록 하겠습니다. 아래와 같이 리소스를 하나씩 등록해 줍니다.

     

    {channel} 리소스 등록
    {type+} 리소스 등록

     

    {type+} 리소스는 웹 액션에서 사용할 수 있는 시스템 변수로써 http, json 등 다양한 포맷으로 응답받을 수 있습니다. 웹 액션에 대한 자세한 설명은 이전 포스팅을 참고해 주시면 좋습니다. 저희는 카카오 관리자 페이지로 JSON 형식으로 응답을 전달해야 하기 때문에 {type+}을 꼭 넣어주도록 합니다.

     

    {type+} 리소스에서 POST 메서드 생성하기

     

    추가로 메소드는 위와 같이 POST로 생성을 해주시기 바랍니다. 카카오톡 플러스친구에서 요청을 발송하면 requestBody에 채팅메시지와 유저 정보를 담아서 전송하는데 저희는 Cloud Functions argument로 body 내용을 전달받아야 하기 때문에 POST로 등록을 해야 합니다.

     

    clova2kakao API 만들기

     

    리소스와 API를 만들고 나면 위와 같이 엔드포인트를 Naver Cloud Platform Service로 잡아주시고 서비스에는 Cloud Functions에 등록한 clova2kakao를 선택한 후에 API를 배포합니다.

     

    API 배포하기

     

    API를 배포하고 나면 Cloud Functions에 URL이 나타나게 됩니다. 이 URL을 복사해서 이제 카카오톡 관리자센터에 등록해 보도록 하겠습니다.

     

    API 배포 후 나타나는 외부 연결 주소를 복사

     


     

    🕊️ 카카오톡 관리자센터에 clova2kakao URL 등록하기

    카카오톡 챗봇 관리자센터에 등록하려면 OBT 참여를 신청해야 합니다. 심사결과는 대략 일주일 정도 소요되지만 진입 장벽이 크게 높지 않으므로 걱정하지 않으셔도 됩니다. 적당한 길이의 신청사유와 함께 챗봇으로 사용할 카카오톡 채널 플러스친구 URL을 입력합니다.

     

    카카오 챗봇 관리자센터 OBT 참여 신청

     

     만약 카카오톡 채널 플러스친구가 준비되지 않았다면 카카오톡채널 관리자 페이지로 이동해서 채널을 먼저 개설해 주시기 바랍니다. 적당한 채널 이름과 검색용 아이디, 카테고리 정보를 원하는 대로 입력해 주시고 [확인] 버튼을 클릭합니다.

     

    카카오 플러스친구 채널 개설하기

     

    그 이후에는 다음과 같이 채널 개설이 완료되는 것을 보실 수 있습니다.

     

    채널 개설 완료

     

    채널 개설이 완료되면 상단의 [채널] 탭을 클릭하여 채널 목록 페이지로 이동합니다. 이곳에서 개설한 채널을 클릭하면 채널 관리자 센터로 이동됩니다.

     

    채널 선택하기

     

    채널 관리자센터에 들어오시면 제일 먼저 프로필 설정에 들어가서 옵션을 설정합니다. 옵션 설정에서 채널 공개와 검색 허용을 ON 상태로 만들어주어야 카카오톡에서 검색이 가능합니다. 단, 검색 노출까지 2~3일이 소요될 수 있습니다.

     

    카카오톡 채널 옵션을 공개로 설정

     

    2~3일까지 검색에 노출될 때까지 기다리는 시간이 아까우시다면 관리 > 상세설정 메뉴에서 채널 URL로 들어가시면 바로 채널을 찾을 수 있습니다. 추후에 이곳에서 테스트를 진행해 보셔도 됩니다.

     

    만들어진 카카오톡 채널화면

     

    다음은 왼쪽 내비게이션바에서 비즈니스 도구 > 챗봇 메뉴를 클릭합니다. 여기서 [챗봇 관리자센터 바로가기 버튼을 클릭하면] 카카오톡 챗봇 관리자센터 페이지로 연결됩니다.

     

    채널 관리자 센터에서 챗봇 관리자센터 바로가기

     

    카카오톡 챗봇 관리자센터에서는 [봇 만들기] 버튼을 클릭하여 카카오톡 챗봇을 생성할 수 있습니다. 이 챗봇을 카카오톡 플러스친구에 연결할 예정입니다.

     

    카카오톡 챗봇 생성

     

    카카오톡 챗봇 생성을 완료하면 챗봇 관리자센터 화면에 접속하실 수 있게 되는데요. 이 챗봇 관리자센터가 CLOVA Chatbot과 마찬가지로 챗봇 빌더 중 하나이기 때문에 이곳에서도 챗봇에 필요한 질문 및 답변을 등록할 수 있습니다. 저희는 CLOVA Chatbot에서 구축한 챗봇을 연결시켜 줄 써드파티 용도로 사용할 것이기 때문에 이곳에서는 별도로 질문과 답변을 등록하지 않습니다.

     

    [스킬] 메뉴를 클릭하고 [생성] 버튼을 클릭하면 스킬을 등록할 수 있는 화면이 나타나는데요. 스킬은 챗봇의 응답형식을 설계할 수 있는 카카오에서 제공하는 컴포넌트입니다. 적당한 스킬명을 입력해 주시고 URL 입력란에 아까 복사해 두었던 clova2kakao의 Invoke URL을 이곳에 등록합니다.

     

    스킬에 clova2kakao URL 등록하기

     

    스킬을 생성이 완료되었다면 이번에는 화면 왼쪽의 내비게이션바에서 시나리오 탭을 클릭하고 폴백 블록 시나리오를 선택합니다. 폴백 블록은 챗봇이 응답이 실패했을 때 취하는 액션인데요. 이전에 Clova Chatbot에서 실패 메시지를 등록했을 때와 같은 원리라고 보시면 됩니다.

     

    폴백 블록에서 화면 상단에 파라미터 설정 부분에서 만들어 놓은 스킬을 연결해 놓고 하단에서 봇 응답을 스킬데이터로 변경하고 저장합니다. 이런 식으로 구성해 놓으면 이제 카카오톡에서 알아듣지 못하는 답변은 저절로 CLOVA Chatbot을 호출하여 가져오게 됩니다.

     

    폴백 블록에서 스킬데이터 등록하기

     

    폴백 블록까지 등록을 마치고 나면 왼쪽의 내비게이션바에서 [설정] 메뉴를 클릭해 봇 이름과 카카오톡 채널 연결을 등록하고 상단 오른쪽의 [저장] 버튼을 클릭합니다.

     

    카카오톡 채널 연결하기

     

    운영 채널 연결과 개발 채널 연결은 원하시는 대로 연결하시면 됩니다. 만약 운영 채널과 개발 채널을 따로 운영하고 싶으시다면 플러스친구 프로필을 두 개 만드셔서 운영하시면 됩니다. 이전에는 운영 채널에서 사용 시 일정 사용량이 넘어가면 과금이 되었지만 카카오에서 무료 정책으로 바꾸면서 부담 없이 사용할 수 있게 되었습니다.

     

     

    설정까지 전부 마치셨다면 이제 배포만 완료하면 드디어 카카오톡에서 Clova Chatbot을 호출해서 사용할 수 있게 됩니다. 왼쪽 내비게이션바에서 [배포] 메뉴를 선택한 뒤에 오른쪽 상단의 [배포] 버튼을 클릭해 주시면 됩니다.

     


     

    🌠 마치며

    카카오톡에서 CLVOA Chatbot 사용하기

     

    이전에는 CLOVA Chatbot에서 기본적으로 카카오톡 연동을 지원했었는데 지금은 deprecated 되어 있기 때문에 컨버터를 따로 만들어야 한다는 점이 다소 까다롭긴 했지만 직접 한번 만들어보는 것도 좋은 경험이 되었던 것 같습니다.

     

    사실 가장 아쉬웠던 것은 Cloud Functions에 CLOVA 트리거가 없다는 점인데요. 만약 Action을 생성할 때 CLOVA 트리거를 선택할 수 있었더라면 여러모로 다양한 시도를 해볼 수 있을 것 같고 또 유일무이한 서비스가 될 수 있을 것 같다는 생각이 듭니다. 현재로서는 다른 대안이 없어서 Cloud Functions 내부에서 Invoke URL을 파라미터를 넘겨받아 그곳에서 또다시 CLOVA Chatbot을 호출하는 방식으로 구현하여 결국 API를 두 번 호출해야 하는(돈이 두배로 나가는) 약간 불편한 진실이 숨겨져 있습니다.

     

    추가적으로 이번에는 컨버터를 java로 개발하면서 Cloud Functions에 jar를 업로드해 보는 시도를 해보았는데요. java로 개발하면 jdk8(낮은 버전)을 사용해야 한다는 점. 그리고 무조건 GSON 라이브러리를 사용해야 한다는 점이 조금 불편했습니다. 특히, GSON은 2.10.1(포스팅 당시 최신버전) 사용 시 static parser에서 오류가 발생하는 이슈가 있어서 어쩔 수 없이 deprecated 된 코드를 사용했습니다. 다행히 동작하는 데는 문제가 없지만 시한폭탄을 끌어안은 느낌입니다.

     

    jdk 같은 경우에는 왠지 낮은 버전을 지원할 수밖에 없는 이유를 알 것 같기도 한데요. 만약 jar파일을 패키징 할 때 OracleJDK를 사용하는 경우 8u202 버전 이상부터는 라이선스 정책이 유료이기 때문에 상업적으로 사용할 때 이 부분을 조심하셔야 합니다. 따라서 네이버 클라우드에서는 안전하게 jdk8로 빌드하도록 지원하는 것이 아닌가 싶은 생각이 들기도 합니다.

     

    댓글

Designed by Tistory.