ChatOps: SlackからLambdaに連携してみる(3)

id:kizashi1122 です。

前回のエントリで発行した API Gatewayの URL をメモしておきます。

f:id:ingage:20210620201734p:plain

では Slack にアプリの設定をしましょう。

Slack 上でアプリを作る

こちらにアクセスします。

Slack API: Applications | Slack

基本設定

Create New App ボタンを押します。ダイアログで「From Scratch」と「From an App Manifest」を選択しろと言われるので、「From Scratch」を選択します。

アプリ名は「echoapp」としておきましょう。

f:id:ingage:20210626230506p:plain

Event Subscriptions

まずは有効にしましょう。

ここはSlack側で発生したイベントを設定する画面です。
「イベント」と「イベントを受け取るURL」を設定することができます。

f:id:ingage:20210626231553p:plain

Request URLの設定

では、前回のエントリで発行したURLを設定してみましょう。

f:id:ingage:20210628113002p:plain

まだ Lambda を設定してないのでエラーになります。 URLの Verificationとして Slack から飛んでくるリクエストに対して正しくレスポンスを返す必要があります。

https://api.slack.com/events/url_verification

要はリクエストで送られてきた challenge パラメータを、そのままレスポンスに返してくれということですね。 Lambda を以下のように編集してデプロイします。

require 'json'

def lambda_handler(event:, context:)
    # TODO implement
    # { statusCode: 200, body: JSON.generate('Hello from Lambda!') }
    req = JSON.parse(event['body']) # event['body'] は文字列
    { statusCode: 200, body: req['challenge'] }
end

これをデプロイ後に URL にある「Retry」をクリックすると、

f:id:ingage:20210628115420p:plain

「Verified」になりました。

イベントの設定

次にイベントを設定します。イベントは以下で一覧を確認することができます。

Events API types | Slack

いろんなイベント(作る側からするとトリガー)があることがわかります。今回は前回のエントリで書いたとおり

@echoapp hoge

とメンションされたときに発動するようにしたいので app_mention を選択することになります。

f:id:ingage:20210626231915p:plain

保存して終了です。

まだ Lambda のソースコードは URL 確認用のままです。 次はこれを編集します。

続きはこちら。

ChatOps: SlackからLambdaに連携してみる(4) - インゲージ開発者ブログ