Morikatron Engineer Blog

モリカトロン開発者ブログ

GeneralTalker APIを使ったSlack botの作り方

………………………………

★ご注意★ 本記事で紹介しているGenetralTalker APIは、その公開を終了しました。 詳しく知りたい/さわってみたい方はモリカトロン(https://morikatron.com/contact/)までご連絡ください。 ………………………………

こんにちは、モリカトロンの山田です。

弊社では、AIとの雑談を実現するGeneralTalker APIを公開しています。
雑談を必要とする様々なシステムに組み込んで延々と無駄話を繰り広げていただくことが可能です。

今回はこのAPIを使ったSlack botの作り方をご紹介します。

GeneralTalker APIとは?

GeneralTalkerは、モリカトロンで開発したGPT-2ベースのAIモデル「AI会話ジェネレーター」を利用したWebAPIです。

GeneralTalkerのAPIを(チャットボットなど)ご自分のプログラムから呼び出す方法は、Rakuten RapidAPIのページをご覧ください。GeneralTalkerにはTwitter、Slack、LINE、その他一般的なボット用の4種類のAPIをご用意しております。

実際にボットと会話出来るワークスペースを公開中です。
以下のリンクから参加できますので、是非ボットに話しかけてみてください。
join.slack.com

Slack APIの設定

まだSlackのアカウントをお持ちでない場合は、まずアカウントを作成してください。
アカウント作成時に「ワークスペースを作成する」ボタンや「ワークスペースを開く」などで、テスト用のワークスペースを作ってください。
※管理者権限が必要です。

それではSlack APIの登録を行っていきましょう。

簡単にですが以下で登録方法を紹介しますね。
(画像付きのSlack API登録方法を紹介した記事も書かせていただいたので、こちらも参考にして頂ければと思います。)
Slack APIの登録方法(2021年5月19日時点) - Morikatron Engineer Blog

  1. https://api.slack.com/apps/ の右上「Your Apps」をクリックし、「Create a New App」でbotを作成
    「From scratch」と「From an app manifest」の選択ダイアログが出ますので、「From scratch」を選んで、「App Name」(ボットの名前=自由)と、ボットを動かすワークスペースを指定してください。

  2. 左メニューの「OAuth & Permissions」タブの「Bot Token Scopes」で下記を追加
    ※「User Token Scopes」ではないのでご注意ください。

    • channels:history
    • im:history
    • chat:write
    • im:write
  3. 「OAuth & Permissions」タブの上方の「Install to Workspace」ボタンをクリックし、SlackのワークスペースにbotのAppを追加

  4. 「Basic Information」タブより「Signing Secret」、「OAuth & Permissions」より「Bot User OAuth Token」をそれぞれコピー
    ※2021年5月現在、「User OAuth Token」と「Bot User OAuth Token」の両方が表示される場合がありますが、使用するのは「Bot User OAuth Token」ですので、取り間違えないようご注意ください。

  5. 「App Home」タブ下方の「Show Tabs」で「Message Tab」をOnにし、その下の「Allow users to send Slash commands and messages from the messages tab」にチェックを入れる。

  6. Slackのワークスペースにアクセス。メニューのAppより「アプリを追加する」をクリックし、1で作成したbotを追加

参考記事

botの作成

botのサンプルコードをGithubで公開しています。 https://github.com/morikatron/snippet/tree/master/slack_bot_sample

依存ライブラリ

インストール方法

pip install slack_bolt
pip install requests

APIキーの設定

slack_bot.py に各種APIキーを入力してください。

  • GeneralTalker APIキー(x-rapidapi-key)の設定
generaltalker_url = "https://morikatron-generaltalker.p.rapidapi.com/on_slack/"
generaltalker_headers = {
    'x-rapidapi-key': "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    'x-rapidapi-host': "generaltalker.p.rapidapi.com"
}
  • Signing Secret、 Bot User OAuth Token、 MY_SLACK_BOT_NAMEの設定
SLACK_SIGNING_SECRET = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
SLACK_BOT_TOKEN = "xxxx-xxxxxxxxxxx-xxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxx"
MY_SLACK_BOT_NAME = "xxxxxxxxxxxx"

ngrokの起動

Slack APIではホストするサーバーが必要です。
今回はテスト用のためngrokを使用して説明をさせていただきますが、 本格的に運用する際にはAWSやGoogle Cloudなどのサービスをご活用ください。 こちらが参考になるかと思います。
https://api.slack.com/docs/hosting

botの起動

まずはSlack botを起動しましょう。

python slack_bot.py

そしてngrok を起動してください。(上記とは別のタブで実行してください。)

ngrok http 3000

ngrok を起動すると http://xxxxxxngrok.io のようなURLが表示されたかと思います。
このURLにslack/eventsとつなげて https://api.slack.com/ の「Event Subscriptions」タブにて以下の手順を行ってください。

  1. 「Enable Events」をOnにし「Request URL」にhttp://xxxxxxngrok.io/slack/eventsを入力。
    ※/slack/eventsを入力し忘れないようご注意ください。
    これで「Verified」と表示されたらOKです。

  2. 「Subscribe to bot events」で下記を追加。

    • message.channels
    • message.im
      追加後「Save Changes」をクリックしてください。
      ※「Save Changes」をクリックしないと設定が消えてしまうのでご注意ください。
  3. 「Reinstall app to workspace」と表示されたら、クリックしてbotの変更を反映させてあげてください。

Slackのワークスペースに戻ってボットを追加したチャンネルになにか話しかけてみましょう! 返答が返ってきたら成功です!

まとめ

  • GeneralTalker APIに登録
  • Slack APIの設定
  • サンプルコードに各APIのキーを入れる
  • ngrokの設定をし、起動

以上の手順で雑談用Slack botを作成することができます!

Slack APIとngrokの登録が少しだけ手間ですが、ほとんどコードを触る必要がないため、とても簡単かと思います。

手前味噌にはなってしまいますが、なかなか面白い返答が返ってくるので是非試してみてください!!