5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Python(Flask)とA3RT Talk APIを使ってLINEのチャットボットを作る

Last updated at Posted at 2021-09-27

概要

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

設定ファイル

各種キーを.envファイルに設定する(.envは必ず.gitignoreする)
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

取り急ぎ自分の忘備録として書きなぐった状態ですが、
誰かの参考になるかもしれないので、この状態で公開します。

上記ソースコードに色々機能を加えていこうと思う。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?