Python에서 Slackbot에 Docomo 자연 대화 API 도입 및 환경 변수로 API 키 관리
지난번에는 가상 환경에 slackbot을 도입해 동작 확인하는 곳까지를 했습니다.
이번에 한 일은
slackbot 데코레이터
slackbot은 편리한 데코레이터를 제공합니다.
@respond_to
데코레이터: bot에의 리플라이중에 지정한 캐릭터 라인에 반응@default_reply
데코레이터: @respond_to
로 정의되어 있지 않은 경우의 디폴트 반응@listen_to
데코레이터: bot가 join 하고 있는 channel로 지정한 캐릭터 라인에 반응기본적으로는 이러한 데코레이터를 사용해 bot의 기능을 구현해 갑니다.
마지막으로 slackbot_settings.py에 설정한 DEFAULT_REPLY 삭제
전회는 동작 확인을 위해, 설정 파일에 디폴트의 회신을 쓰고 있었으므로 우선은 이것을 삭제해 둡니다.
slackbot_settings.py
# デフォルトの返答
DEFAULT_REPLY = "Sorry but I didn't understand you"
Docomo 자연 대화 API 도입
Docomo 잡담 대화 API의 후계라고 합니다.
appId 취득부터 말할 때까지 이 기사 가 상세합니다.
이 API는 여러가지 할 수 있어 즐거운 것 같습니다만, 이번은 우선 디폴트로 그럴듯한 대답이 돌아오는 곳까지로 좋기 때문에 링크처의 코드를 그대로 사용해 주시고 있습니다.
plugins 폴더에 python 파일을 저장하면 런타임에 읽어 주어 동작 할 것입니다.
움직였습니다! (파트너 bot로 유명한 할아버지를 사용하고 있습니다만, 신경쓰지 않고)
환경 변수로 API 키 등 관리
이번에는 코드 마루마루 사용하게 하고 있는 느낌으로 특별히 쓰는 일이 없습니다만, github로 관리하고 싶기 때문에 API key등을 올리지 않게 환경 변수로 관리하고 싶습니다.
python-dotenv 설치
(env)$ pip install python-dotenv
.env에 비밀 값 입력
run.py와 같은 디렉토리에 .env를 만듭니다. 여기에 API Key등의 git등에 주고 싶지 않은 값을 넣습니다.
# Slack API
API_TOKEN = "XXXXXXXXXXXXXX"
# Docomo対話API
DOCOMO_API_KEY = "XXXXXXXXXXXXXX"
DOCOMO_APP_ID = "XXXXXXXXXXXXXX"
.env에서 slackbot_settings.py로 로드
환경 변수는 slackbot_settings.py로 읽어들입니다.
slackbot_settings.py
# coding: UTF-8
import os
from os.path import join, dirname
from dotenv import load_dotenv
dotenv_path = join(dirname(__file__), '.env')
load_dotenv(dotenv_path)
# Slack API
API_TOKEN = os.environ.get("API_TOKEN")
# Docomo対話API
DOCOMO_API_KEY = os.environ.get("DOCOMO_API_KEY")
DOCOMO_APP_ID = os.environ.get("DOCOMO_APP_ID")
# プラグイン指定
PLUGINS = [
'plugins',
]
플러그인에서 API 키, appId 로드
초보자이므로 import에 상당히 집계했습니다만, run.py가 실행 디렉토리이므로 slackbot_settings를 import해 값을 끌어내면 잘 되었습니다.
plugins/docomo_talk.py
import slackbot_settings
# ~~中略~~
@default_reply()
def default(message):
"""
Docomo自然対話APIから返答する
"""
#エンドポイントの設定
endpoint = 'https://api.apigw.smt.docomo.ne.jp/naturalChatting/v1/dialogue?APIKEY=REGISTER_KEY'
appid = slackbot_settings.DOCOMO_APP_ID
url = endpoint.replace('REGISTER_KEY', slackbot_settings.DOCOMO_API_KEY)
.gitignore에 추가
.env는 잊지 않고 .gitignore에. slackbot_settings.py에서 민감한 데이터를 제거할 수 있었으므로 git로 관리할 수 있습니다.
.DS_Store
__pycache__
env
.env
덧붙여 기치 g의 레. 이오 라고 하는 것이 있는 것 같기 때문에 다음부터 사용하고 싶습니다.
참고 링크
Reference
이 문제에 관하여(Python에서 Slackbot에 Docomo 자연 대화 API 도입 및 환경 변수로 API 키 관리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mtane0412/items/daffdf6dfb4c78b71ac4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)