naver_api chatbot(booksearch) - ParkKeonHo/chatbot GitHub Wiki

dialogflow->agent생성->fullfillment 연동->line integration->line provider생성->channerid연동->ngrok실행->dialogflow와 공인ip 연동->python 코딩

#동작 원리 dialog->라인->공인ip->네이버책검색->라인으로 답변

from flask import Flask, request import pprint import requests import re app = Flask(name)

@app.route('/webhook', methods=['GET', 'POST']) def process_webhook(): request_json = request.json

# naver-book 인텐트 중 book 파라미터 데이터 추출
query = request_json["queryResult"]["parameters"]["book"]

# 인증 정보
client_id = "6xSK3DafLlDE1knfqjw9"
client_secret = "VXTFOkwlO0"

# 기본 url 정보
url = "https://openapi.naver.com/v1/search/book.json"

# url 호출 시 전달할 요청 변수 정보
params = {"query": query,
          "display": 3,
          "sort": "count"}

# requests 라이브러리를 이용한 책 검색 api 호출
# get 방식으로 호출(url)/ 요청 변수 전달(params)/ 인증 정보 및 인코딩 정보 전달(header)
response = requests.get(url=url, params=params,
                        headers={"X-Naver-Client-Id": client_id,
                                 "X-Naver-Client-Secret": client_secret,
                                 "Content-Type": "application/json; charset=utf-8"})
# 호출 처리 상태 정보 recode 변수에 할당
rescode = response.status_code

if (rescode == 200):
    # 호출 처리 상태가 정상(200) 일 경우리턴 받은 책 조회 정보 출력
    pprint.pprint(response.json())
    data = response.json()

else:
    print("Error Code:", rescode)

# Naver 책 검색 API 응답 중 실제 책 아이템 데이터 추출 및 출력
item_list = data["items"]
pprint.pprint(item_list)
def remove_tag(content):
    cleanr = re.compile('<.*?>')
    cleantext = re.sub(cleanr, '', content)
    return cleantext
# Dialogflow로 응답되는 최종 문자열 데이터 구성
book_list = ""
n = 1
for item in item_list:
    #book_list += remove_tag(item["title"])
    print(str(n)+". "+remove_tag(item['title']))
    book_list += str(n)+". "+remove_tag(item['title'])
    book_list += "\n"
    n+=1


# Dialogflow로 응답되는 최종 데이터 확인

return {"fulfillmentText": book_list}

if name == 'main': app.run(debug=True)

⚠️ **GitHub.com Fallback** ⚠️