概要
フェイス・ソリューション・テクノロジーズ株式会社 IS 本部 OS ユニットの masと申します。
今回はAWSのLambdaを使って、簡単なメッセージをSlackに送るアプリを作成しようと思います。
作業
Slackでの作業
appを作成する
下記にアクセスしてappを作成します。
画面内のCreate New Appをクリックします。
表示されたウィンドウでFrom scratchをクリックします。

上記の画面では「App Name」は好きなアプリ名を入力します。
「Pick a workspace to ~」は自分のSlackのワークスペースを選択してCreate Appをクリック
ワークスペースにappをインストールする

「Scopes」よりちょっと上に「OAuth Tokens for Your Workspace」という項目がある。
Install to Workspaceボタンをクリック

権限をリクエストしていますという画面が表示されるので「許可する」をクリック

「OAuth Tokens for Your Workspace」にBot User OAuth Token というのが表示される(以下tokenと表記)
Copyボタンをおして何かに貼り付けて保管してください。
ちなみに大事な情報なので他の人に盗まれないように気を付けて管理しましょう。
メッセージを送りたいチャンネルに作成したアプリをインストールする
Slackを開いてメッセージを送りたいチャンネルを右クリック

チャンネル詳細を表示するをクリック

インテグレーションタブのアプリを追加するをクリック

検索窓で自分の作成したアプリを探し追加する。
追加ができたらチャンネル詳細をもう一度開く
チャンネル情報の一番下までスクロールするとチャンネルIDが書いてあるので控えておく
ここまででSlackの作業は終わりです。
AWSでの作業
lambdaを作成する
AWSのコンソール画面で左上の検索画面に「lambda」と打ち込むと検索結果にLambdaが表示されるのでそれをクリック
Lambdaのサービス画面の右上あたり、関数の作成をクリックする。

関数名はお好きなものを入力する。
ランタイムはPython3.9を選択
右下(ちょいスクロールしないと見えてないかも)の関数の作成をクリック
コードを作成
コードのところに下記を貼り付ける。
cidは控えておいたチャンネルID、messeageは好きなメッセージを入れてもらってもOK
import json
import os
import urllib.request
def lambda_handler(event, context):
# TODO implement
cid = '控えておいたチャンネルID' #channelIDを入力する
message = '好きなメッセージ' #メッセージを入力する
#slackにメッセージを送る
postMessage_to_slack(cid, message)
#Slackにメッセージを送る関数
def postMessage_to_slack(cid, message):
slackAccessToken = os.environ['SLACK_ACCESS_TOKEN']
url = "https://slack.com/api/chat.postMessage?pretty=1"
data = {
'channel': cid,
'text': message
}
post_data = urllib.parse.urlencode(data)
req = urllib.request.Request(url, data=post_data.encode())
req.add_header('Authorization','Bearer ' + slackAccessToken)
with urllib.request.urlopen(req, timeout=1) as response:
response_data = json.loads(response.read())
print(response_data)
Lambdaに環境変数を登録する

設定タブをクリックして環境変数をクリック、表示された画面の編集をクリック

環境変数の追加をクリック後、下記の内容を入力し、保存をクリック
キー → SLACK_ACCESS_TOKEN
値 → Slackで取得したtokenを入力
ここまでで準備は完了。
最後にテストタブへ移動しテストをクリックする。
Slackに作成したapp名のユーザーからメッセージが届いたら成功です。
コメント