メサイア・ワークス

slackで、特定のチャネルに投稿があったら、指定したチャンネルに同じ内容のコピー投稿をする

slackで、特定のチャネルに投稿があったら、指定したチャンネルに同じ内容のコピー投稿をする

前回よりも、インタラクティブな感じにする

aws lambdaからslackに投稿して、5秒後に削除してみた

1, slackアプリのスコープ(権限)を設定

「OAuth & Permissions」で以下のスコープを追加します:
chat:write(メッセージ送信)
channels:read(チャンネル情報の取得)
channels:history(メッセージイベントの取得)
app_mentions:read

2, イベントサブスクリプションを有効化
「Event Subscriptions」を有効にし、以下を設定:
Request URL: 後で作成する AWS Lambda の URL
Subscribe to bot events: message.channels を追加。

3, lambdaの設定から関数URLを設定して、slackが投稿されたらポストする先を取得して、手順2の所にコピペ
認証タイプ: 「なし(NONE)」を選択
CORS(Cross-Origin Resource Sharing)も有効にする(*)
これで、URLにアクセスするだけでpythonが実行される

4, コーディング

5, 監視先のチャンネルに、このアプリを参加させる。

/invite @アプリ名

で投稿すれば参加ダイアログが出てくる。

※ curlだと動作するのに、このアプリ参加がないと駄目だった(コードでチャンネル指定するだけでは駄目)

じゃあ、SOURCE_CHANNELで指定するのではなく、参加しているチャンネルの投稿を取得して、監視する方が良いじゃん!
と思って、アプリが参加しているチャネルを取得したら、TARGET_CHANNELも取得して、無限ループ投稿になってしまった・・・。
conversations.list API を実行するには、groups:read のスコープが必要 です。

モバイルバージョンを終了