안경잡이개발자

728x90
반응형

  다이얼로그 플로우(Dialog Flow)로 챗봇(Chat Bot)을 개발한 뒤에 이를 실제 상용 서비스에서 활용하기 위해서는 웹 서버와 함께 사용하는 것이 가장 효과적입니다. 웹 서버 중에서는 가장 가벼우면서도 빠르게 구현할 수 있는 플라스크(Flask)를 이용하면 효율적입니다. 따라서 아래 과정을 차근차근 따라하면서 자신만의 플라스크 웹 서버에서 다이얼로그 플로우를 사용할 수 있도록 하세요.


※ 다이얼로그 플로우 API V1 테스트하기 ※


  먼저 자신이 사용하고자 하는 에이전트(Agent) 프로젝트의 클라이언트 액세스 토큰(Client Access Token)을 확인합니다.



  이후에 API를 어떻게 사용할 수 있는지 확인해 봅시다.


  Dialog Flow API V1 문서: https://dialogflow.com/docs/reference/agent/query


  기본적으로 다이얼로그 플로우는 매우 간단하게 초기 버전의 API를 사용할 수 있습니다. 가장 중요한 부분만 추출하면 다음과 같습니다.



  먼저 POST 방식 전송 예제는 위와 같습니다. 헤더에 CLIENT ACCESS TOKEN을 넣은 뒤에 아래쪽에 'query'로 실질적인 질의문을 넣는 것을 알 수 있습니다. 이제 이를 파이썬을 이용해 동일하게 동작하는 클라이언트를 작성하면 됩니다. 전체 Flask 웹 서버의 소스코드는 다음과 같습니다.



  위 사진은 결과 예제 사진입니다. 보시면 JSON 형태로 'result' -> 'fulflilment' -> 'speech'에 결과 값이 담겨 오는 것을 알 수 있습니다. 따라서 요청 데이터를 보낸 이후에 결과 값에서 이를 파싱하도록 소스코드를 작성하면 됩니다.


※ Flask 웹 서버의 소스코드


# -*- encoding: utf-8 -*-

import requests

import json


from flask import Flask, request, jsonify


def get_answer(text, user_key):

    

    data_send = { 

        'query': text,

        'sessionId': user_key,

        'lang': 'ko',

    }

    

    data_header = {

        'Authorization': 'Bearer CLIENT ACCESS TOKEN',

        'Content-Type': 'application/json; charset=utf-8'

    }

    

    dialogflow_url = 'https://api.dialogflow.com/v1/query?v=20150910'

    

    res = requests.post(dialogflow_url, data=json.dumps(data_send), headers=data_header)


    if res.status_code != requests.codes.ok:

        return '오류가 발생했습니다.'

    

    data_receive = res.json()

    answer = data_receive['result']['fulfillment']['speech'] 

    

    return answer


app = Flask(__name__)

app.config['JSON_AS_ASCII'] = False


@app.route('/', methods=['POST', 'GET'])

def webhook():


    content = request.args.get('content')

    userid = request.args.get('userid')


    return get_answer(content, userid)


if __name__ == '__main__':

    app.run(host='0.0.0.0')    


  위와 같이 API 문서의 내용을 그대로 따라 작성한 것을 알 수 있습니다. 대신에 자신의 웹 서버에서는 'content'와 'userid'라는 두 파라미터로 값을 받습니다. 이후에 해당 소스코드를 실행하고 자신의 로컬 환경에서 테스트를 진행하면 됩니다.


728x90
반응형