概要
FlaskとMessaging API、あとリクルートが無料で配布しているA3RT Talk APIを使用して、LINEのチャットボットを作成しました。
実装
各種API KEYの発行
A3RT Talk API https://a3rt.recruit-tech.co.jp/product/talkAPI/
LINE Developers Messaging API https://developers.line.biz/ja/
各モジュールをインストール
pip install python-dotenv pip install flask pip install flask_ngrok pip install line-bot-sdk pip install pya3rt
設定ファイル
A3RT_API_KEY = XXXXXXXXXXXXXXXXXXXX CHANNEL_ACCESS_KEY = XXXXXXXXXXXXXXXXXXXX CHANNEL_SECRET_KEY = XXXXXXXXXXXXXXXXXXXX
Pythonのソースコード
flask_ngrokモジュールをインストールすることで一時的なURLが発行され、 ローカル環境でもAPI通信の実装ができるようになる。
from flask import Flask, request, abort from flask_ngrok import run_with_ngrok from dotenv import load_dotenv from linebot import LineBotApi, WebhookHandler from linebot.api import LineBotApi from linebot.exceptions import InvalidSignatureError from linebot.models import MessageEvent, TextMessage, TextSendMessage import pya3rt import os app = Flask(__name__) run_with_ngrok(app) load_dotenv() A3RT_API_KEY = os.environ['A3RT_API_KEY'] CHANNEL_ACCESS_KEY = os.environ['CHANNEL_ACCESS_KEY'] CHANNEL_SECRET_KEY = os.environ['CHANNEL_SECRET_KEY'] linebot_api = LineBotApi(CHANNEL_ACCESS_KEY) handler = WebhookHandler(CHANNEL_SECRET_KEY) @app.route('/callback', methods=['POST']) def callback(): signature = request.headers['X-Line-Signature'] body = request.get_data(as_text=True) try: handler.handle(body, signature) except InvalidSignatureError: abort(400) return 'OK' @handler.add(MessageEvent, message=TextMessage) def handle_massage(event): ai_message = talk_api(event.message.text) linebot_api.reply_message(event.reply_token, TextMessage(text=ai_message)) def talk_api(word): client = pya3rt.TalkClient(A3RT_API_KEY) replay_message = client.talk(word) return replay_message['results'][0]['reply'] if __name__ == '__main__': app.run()
gitHub
https://github.com/ysk/python_lineBot
取り急ぎ自分の忘備録として書きなぐった状態ですが、 誰かの参考になるかもしれないので、この状態で公開します。
上記ソースコードに色々機能を加えていこうと思う。