Spicy Tuna Sushi
본문 바로가기
정보

Dialogflow와 카카오톡 챗봇 연동(구름 IDE,챗봇 스킬)

by 말린malin 2022. 8. 16.

https://malin.tistory.com/19

 

Dialogflow api 사용하기(파이썬/Python)

웹서버에서 Dialogflow를 활용하기 위해서는, 인증을 받아야 한다. V1은 종료되었고, V2 방식으로 진행한다 private key 발급하기 https://cloud.google.com/gcp/?hl=ko https://cloud.google.com/gcp/?hl=ko clou..

malin.tistory.com

이전 게시물에서는 "안녕"이라는 메시지에 대한 다이얼로그 플로우의 답변만 확인했다면

이제는 카카오톡에서 입력하는 모든 말에 반환할 수 있도록 테스트한다.

 

구름IDE에서 플라스크 생성 후, 이전 게시물 코드를 참고하여 카카오톡 챗봇 JSON 규격에 맞게 작성한다.

https://i.kakao.com/docs/skill-response-format#%EC%98%88%EC%A0%9C%EC%BD%94%EB%93%9C-1

 

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

<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

가장 기본적인 simple text를 활용하였다.

import os
import google.cloud.dialogflow_v2 as dialogflow
import requests
import json
from flask import Flask, request,jsonify

#dialogflow 인증
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] ='private_key.json'
DIALOGFLOW_PROJECT_ID ='[PROJECT_ID]'
DIALOGFLOW_LANGUAGE_CODE ='ko'

SESSION_ID ='me'
session_client = dialogflow.SessionsClient()
session = session_client.session_path(DIALOGFLOW_PROJECT_ID,SESSION_ID)

#dialogflow에서 텍스트 반환
def get_answer(test_query):
    our_input =dialogflow.types.TextInput(text=test_query, language_code=DIALOGFLOW_LANGUAGE_CODE)
    query = dialogflow.types.QueryInput(text=our_input)
    response = session_client.detect_intent(session=session,query_input=query)
    return response.query_result.fulfillment_text;

app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False

@app.route('/test', methods=['POST'])
def test():
    #카카오 json 규격
    req = request.get_json()
    input_text=req['userRequest']['utterance']
    res={
        "version":"2.0",
           "template":{
               "outputs":[
                   {
                       "simpleText":{
                           "text":get_answer(input_text)
                    }
                }
            ]
           }
       }
    return jsonify(res)

#메인 함수
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, threaded=True)

python 파일명.py 5000으로 실행한다.

외부에서 접속할 수 있도록 하는 설정이 필요한데, 프로젝트 속성-실행 URL과 포트에서 할 수 있다.

포트 5000번으로 도메인 주소를 등록하였다.

외부에서는 이 주소로 접근할 수 있는 것이다.

웹 서버를 동작시켰다면, 챗봇 관리자 센터에서 챗봇을 생성한다.

챗봇 사용을 위해서는 카톡 측의 승인이 필요하다.

스킬을 등록할 때 아까 등록한 도메인 주소를 입력하면 된다.

코드에서 루트 명이 test이었으므로, 뒤에 /test를 붙여주었다.

각자 코드에 맞게 수정하면 된다.

그리고 폴백 블록에서 스킬을 지정해 주고, 봇 응답에서 스킬 데이터 사용으로 추가해 준다.

봇테스트에서 안녕 뿐만 아니라 다른 말로도 확인해 보았다.

다이얼로그 플로우에서 지정해둔 텍스트로 반환된다면 성공이다!

댓글