メインコンテンツまでスキップ

AWS Lambda でSlack bot を作成する

Line bot を作成し、自動でメッセージを送受信する方法を解説します。

Slack BOTを作成する

以下の手順を参考にします
Creating an app from app settings

slack API

create new app

image image

OAuth & Permissions

スコープに"chat:write"を追加する

image

Install to workspace

image

bot からのDM送信

slack API SLACK_BOT_TOKENOAuth & Permissionsから取得します

image

USER_IDユーザプロフィールから取得します

image image
import json
import urllib.parse
import urllib.request

SLACK_BOT_TOKEN = "xoxb-**********************"
USER_ID = "U******"
TEXT = "こんにちは!slack_sdkを使わずに送信したDMです。"

url = "https://slack.com/api/chat.postMessage"

payload = {"channel": USER_ID, "text": TEXT}
data = json.dumps(payload).encode("utf-8")

headers = {
"Authorization": f"Bearer {SLACK_BOT_TOKEN}",
"Content-Type": "application/json; charset=utf-8",
}

req = urllib.request.Request(url, data=data, headers=headers, method="POST")

try:
with urllib.request.urlopen(req) as response:
result = json.loads(response.read().decode("utf-8"))
if result.get("ok"):
print("DM送信成功!")
else:
print(f"エラーが発生しました: {result.get('error')}")
except Exception as e:
print(f"通信エラー: {e}")

botを受信可能にする

Slack bot は初期状態ではメッセージ受信できないので、以下手順でbotへのメッセージ送信を有効化します

slack API

APP Home Show Tabs Messages Tab Allow users to send Slash commands and messages from the messages tabにチェックする

image

👇

image

👇Reinstall

image

Webhook 受信用 lambda 設定

Webhook 受信用 lambda関数を設定します
以下手順を参考にしてください

import json

def lambda_handler(event, context):
body_str = event.get("body") or "{}"

try:
data = json.loads(body_str)
except (json.JSONDecodeError, TypeError):
return {"statusCode": 400, "body": "Invalid JSON"}

challenge_value = data.get("challenge")

return {
"statusCode": 200,
"headers": {"Content-Type": "text/plain"},
"body": str(challenge_value) if challenge_value else "",
}

Webhookの設定

slack API Event SubscriptionsからlambdaのURLを設定します

image

ITとソフトウェアの人気オンラインコースHP Directplus -HP公式オンラインストア-