Google Drive のドキュメントと連携する Outgoing-webhook ベースの slackbot、ボットニャンです 🐱
Google Drive のドキュメントと連携する Outgoing-webhook slackbot です 🐱
-
キーワードと Google Drive のドキュメント ID のペアをボットニャンに登録しておきます。
-
Slack のチャットルームで設定したキーワードを発言すると(この場合は "バチン" と発言しています)、ボットニャンはそのキーワードに紐付いた Google Drive のドキュメント ID を元に、ドキュメントの内容を取得し発言します :)
-
なお、ボットニャンは登録されたキーワードに 完全一致 した場合のみ反応します。
ボットニャンは heroku のインスタンス上で動くようにできています。
インストールには下記のアプリケーションが必要になります。
- Git
- Heroku toolbelt
- OpenSSL
- 新しい Heroku アプリケーションの作成
新しいアプリケーションを heroku dashboard から作成します。
- ボットニャンのコードを取得 下記のコマンドをターミナルに入力し、ボットニャンののコードを取得します。
git clone [email protected]:supistar/Botnyan.git
- キーワード・ドキュメント ID の設定
取得したコード中の settings.py
を編集し、キーワード・ドキュメント ID の設定を行います。
- キーワードと Google Drive のドキュメント ID のペアを設定します。具体的な例はルートディレクトリにある
settings.py
ファイルを参照してください。 ファイル中にはKeyword
とDocumentID
の要素を設定します。- Keyword : 反応させたいキーワードを指定します。単一の文字列、もしくは文字列のリストが設定できます。
- DocumentID : Google Drive のドキュメント ID を指定します。ID は ドキュメントを開いている際の URL 中
https://docs.google.com/document/d/{DocumentID}
に含まれています。
- キーワード・ドキュメント ID の変更を反映
settings.py
に加えた変更をコミットし反映させます。
- この変更は Heroku へデプロイする際に必要です。GitHub へ Push する必要はありません :)
git add -u .
git commit -m "settings.py のカスタマイズ!"
- Heroku のリポジトリ登録
Heroku へデプロイするため、リポジトリの情報を登録します。
heroku git:remote -a ${HerokuAppName}`
- Heroku へデプロイ
アプリケーションを Heroku へデプロイします。
git push heroku master
- Google のサービスアカウント作成
次に、Google のサービスアカウントを作成します。 このサービスアカウントは、ボットニャンから Google Drive へアクセスする際に必要なアカウントです。
- Google Developer Console へアクセスします
- 新規にプロジェクトを作成、もしくは既存のプロジェクトを選択します
APIs & Auth
->Credentials
を選択します- 次に
Create new Client ID
を選択します Service account
を選択し、アカウントを作成します。この際、キーのタイプにP12 Key
を選択してください。- アカウントが作成された後、アクセスに必要な .p12 ファイルがダウンロードされます。
- アカウント作成後、サービスアカウントの
EMAIL ADDRESS
を確認しておきます(この値は後ほど利用します)
- サービスアカウント用の秘密鍵作成
ターミナルへ下記を入力し、サービスアカウントで利用する秘密鍵を作成します。
path/to/p12directory
・privatekey.p12
は環境にあわせて変更してください。
cd path/to/p12directory
openssl pkcs12 -passin pass:notasecret -in privatekey.p12 -nocerts -passout pass:notasecret -out key.pem
openssl pkcs8 -nocrypt -in key.pem -passin pass:notasecret -topk8 -out google-services-private-key.pem
rm key.pem
Config Variables
の設定
次にターミナルから Config Variables
を設定します。
これらの値は Heroku のダッシュボードからも入力できます。
heroku config:add SLACK_WEBHOOK_TOKEN=ExampleOfTokenValue
heroku config:add GOOGLE_OWNER_EMAIL=*****@gmail.com
heroku config:add GOOGLE_CLIENT_EMAIL=******************@developer.gserviceaccount.com
heroku config:add GOOGLE_PRIVATE_KEY=`cat path/to/p12directory/google-services-private-key.pem`
heroku config:add BOTNYAN_BASE_URL=https://mybotnyan.herokuapp.com
- ボットニャンの起動
下記のコマンドをターミナルに入力し、ボットニャンを起動します
heroku ps:scale web=1
- Slack の Outgoing WebHooks (https://yourteam.slack.com/services/new/outgoing-webhook) 設定ページを開きます
Add Outgoing WebHooks Integration
を選択します- Outgoing-webhooks インテグレーションの設定をします
- Trigger Word(s): ボットニャンの
settings.py
で設定したキーワード全てを入力します。各キーワードは "," で区切ってください。 - URL(s):
https://mybotnyan.herokuapp.com/api/slack/webhook
を指定します。mybotnyan のところは環境にあわせて変更してください。
- ボットニャンはパブリックチャンネルに送信されたメッセージ(キーワード)のみに反応します。Slack 側の制限によりプライベートチャンネルでは動作しません。