前回の記事はこちら
序・SlackBotを作ります - riririusei99’s blog
はじめに
この投稿はチームスピリット Advent Calendar 2017 - Adventarの9日目の記事になります。
adventar.org
ほろよいてっく向けのネタのためにやる(2日目)。
前回作成したSlackBotにオリジナル感を出していきます。
今回取り扱うもの
A3RT (TalkAPI)
a3rt.recruit-tech.co.jp
Talk APIはChatbotを作成するためのAPIです。Recurrent Neural Network(LSTM)を用いた入力文からの応答文生成による日常会話応答機能を提供します。
ふむふむ。とりあえず流行りには乗っかってみる。
pya3rt
github.com
pythonでA3RTに接続するため用
jaconv
github.com
ロボ感を出すために探してきました
今回やりたいこと
それでは開始
A3rt API Tokenの取得
下記 URLからTokenの取得 https://a3rt.recruit-tech.co.jp/product/talkAPI/
インストール
# 必要なものインストール sudo pip3 install pya3rt jaconv
DEFAULT_REPLYの削除
今回はDEFAULT_REPLYに特定の動作を追加するため、slackbot_settings.pyを修正する。
slackbot_settings.py
# SlackBot API Token API_TOKEN = "<your-api-token>" # Defalut Replyはココ <<コレもついでに削除 DEFAULT_REPLY = "Sorry but I didn't understand you" <<コレを削除 # Plugin Directory PLUGINS = ['plugins']
Default Reply に会話APIと連携する
response.py
from slackbot.bot import respond_to from slackbot.bot import default_reply import pya3rt import jaconv # ココにBotとしての機能を載せる @respond_to('ジーク') def zeon(message): message.reply('ジオン!!') # それ以外は会話機能になる @default_reply() def talkA3rt(message): apikey = '<your-A3RT-api-token>' client = pya3rt.TalkClient(apikey) api_response = client.talk(message.body['text']) # レスポンスがokの時返事を返す if api_response['message'] == 'ok': reply_message = api_response['results'][0]['reply'] message.reply(jaconv.hira2kata(reply_message) + '…ロボ') # 普通の返事 # message.reply(reply_message) # APIエラーの時はエラーとAPIのメッセージを返す else: message.reply('エラー、ウマク返事ガデキマセン [ERROR:' + api_response['message'] + ']')
会話してみる
- 組み込んだBotの返事
- TalkAPIからの会話機能の返事
- TalkAPIから通常以外のレスポンスが来た時の返事
あからさまなレトロ感のあるBotになりましたね!
まとめ
今回は最近流行っているスマホゲームから着想を得て、語尾に特定の文字をつける&出力をカタカナにしてロボ感を出してみました。
疲れた時、誰かとお喋りしたくなった時に使いたいです。
※Typoした時はAPIにアクセスしに行ってしまうのでBot機能を使う時は注意しましょう。