28
9

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 5 years have passed since last update.

ポするとプテピピックするサーバレスBOTを作りました

Last updated at Posted at 2018-02-09

💡作ったもの

Slack の特定の Reaction に反応し、Reactionで反応し返してくれるサーバレスBOTです。

demopo

Slack の BOT と Subscribe を使うことで、全ての Reaction を API-Gateway 経由で Lambda に受信します。
特定の Reaction だった場合は Slack API を呼び出して、Reaction を複数つけ返します。
Slack BOT は手動で設定する必要がありますが、AWS 側は Serverless Framework を使うことで環境構築を自動化しています。

Serverless Framework なしで作る手順は前回記事参照。

:octocat:成果物

saitota/SlackServerlessReactionBot

✋構築手順

必要なもの

  • AWS アカウント
  • Serverless Framework
  • Slack アカウント

導入手順

1. ここ からBOT作成

- Bot User
    - Display Name
    - Default Username
- Permissions
    - OAuth & Permissions
        - Scopes
            - channels:history
            - channels:write

2. トークンを2つ取得

- Permissions
    - OAuth & Permissions
        - OAuth Access Token
        - Bot User OAuth Access Token

3. リポジトリをClone

console
$ git clone https://github.com/saitota/SlackServerlessReactionBot.git

4. Serverless の設定ファイルを編集、先程のトークンで書き換えてください

sererless.yml
OAUTH_TOKEN: 'xoxp-000000000000-000000000000-000000000000-0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x0x'
BOT_TOKEN: 'xoxb-000000000000-0x0x0x0x0x0x0x'

5. Serverless Framework でデプロイ (事前にaws-cliの初期設定が必要です)

console
$ sls deploy ./SlackServerlessReactionBot
...
api keys:
  None
endpoints:
  POST - https://0x0x0x0x0x.execute-api.ap-northeast-1.amazonaws.com/prod/
functions:
  fnc: SlackServerlessReactionBot-prod-fnc

6. Slack BOT のエンドポイント設定と、Subscribe設定をします

  • Event Subscriptions
    • Request URL: set your endopint url(you can see in your deploy log)
  • Subscribe to Workspace Events
    • reaction_added
    • reaction_removed

7. 設定完了!

Slackで HOOK_REACTION のリアクション(デフォルトは👍)をつけてみましょう

ハマった所

Lambda が実行されると Slack から下記メールが届いて、勝手に Subscribe が Disable されることがありました。ググっても情報なくログ見てもわからず、API-Gateway と Lambda-Function を再作成すると治りました。根本原因わかりませんでしたが、HTTP Return Code が悪かったのかもしれません。

emailfromslack
Events are disabled for BOTNAME.
Something's gone awry with BOTNAME, so we've temporarily stopped sending events to it. Not to worry—we're sure you can get it fixed right up.

Please log in to correct the problem, and feel free to reply to this email if you need help.

📝あとがき

 公開用に Serverless Framework を使ってみました、クラウド環境構築部分をコード化でき、配布可能な形にできるのでとても素敵です。BOT 作成のところも自動化できるといいんですけどね。

28
9
2

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
28
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?