使用SlackBOT运行AWS Lambda并向Slack发出通知(使用NodeJS)
这篇文章所能做的
事前准备 (Shì
请准备好AWS账号,
请确保您拥有Slack账号并可以访问应用程序。
创建机器人
-
- SlackApiのAppsにアクセスします
-
- SlackApi
- https://api.slack.com/apps/
- CreateNewAppから新規アプリを作成します
- App名
わかりやすいもの(今回はSlackに通知するのでSlack-Post)
- インストールするワークスペース
そのBOTを使いたいワークスペースを選択
- OAuth & Permissions > ScopesからBOTの権限を追加
- app_mentions:read
BOTがメンションを受け取る事ができるようになる
- chat:write
Slackに書き込む事ができるようになる
- OAuth & Permissions > OAuth Tokens for Your Workspace > Bot User OAuth Tokenをメモっておく
- Slackにインストールする
这样一来,Slack上已经成功注册了机器人
一时间,Slack方面的准备就到此为止了
接下来,我们将转到AWS Lambda这一方面。
创建一个函数(Lambda Function)。
- 検索バーからLambdaを検索し、選択します
- 左のメニュー > 関数 > 関数の作成を選択します
-
- 以下を設定し、関数の作成をします
関数名
今回はNodeJSでBOTを動かし、Slackから通知を送るのでSlack-Post-NodeJS
ランタイム
Node.js 18.x
-
- 作成後、設定 > 関数URL > 関数URLの作成を選択
- API GateWayは使わないやり方でやりたいので関数URLの作成をします
- 以下を設定し、関数URLの作成をします
认证类型
无
公开标头
日期,保持活动
允许标头
日期,保持活动
允许方法
*
最长过期时间
86400
允许认证信息
检查
- 関数URLが作られたのでメモっておきます
接下来,我们将准备要放置在Lambda上的文件。
脚本准备好了 le)
-
- SlackAPIに必要なパッケージをインストール
- @slack/web-api
$ cd [作業するディレクトリ]
$ npm init
$ npm i @slack/web-api
- index.jsを作り、以下の用に記載
const { WebClient } = require('@slack/web-api');
exports.handler = async (event) => {
const body = JSON.parse(event.body);
// BOTの認証用、認証後は削除してもOK
if (body.challenge) {
return {
statusCode: 200,
body: {
challenge: body.challenge
}
}
}
// Slackからの通知の再送対策
if (event.headers.hasOwnProperty("x-slack-retry-num")) {
return {
statusCode: 200
}
}
const client = new WebClient(process.env.SLACK_BOT_USER_ACCESS_TOKEN);
const channel = body.event.channel;
const text = "TEST";
await client.chat.postMessage({ channel, text });
return {
statusCode: 200,
}
};
- Lamdbaにアップロードする為にzip化します
$ zip -r lambda.zip ./index.js ./node_modules/
这里的代码准备工作已经完成,现在回到Lambda端。
将Lambda函数脚本放置
- Lamdbaの関数 > コードからzipをアップロードする
-
- 環境変数の設定
- 設定 > 環境変数からコードで使っているSLACK_BOT_USER_ACCESS_TOKENを追加します
Lambda的设置已完成
最后是Slack的设置
SlackBOT和Lamdba的连接设置
- Event Subscriptions > Enable Events をOnにし、Request URLの欄にLamdbaで設定した関数URLを張り付け認証します
之前在 index.js 中所记录下的
if (body.challenge) {
return {
statusCode: 200,
body: {
challenge: body.challenge
}
}
}
如果认证成功,可以删除此验证处理。
- Subscribe to bot eventsにapp mentionを追加
设定完成后,请点击底部的”保存”按键进行保存。
- SlackでBOTを呼び出し、メンションを送ってみる
我已通过BOT将Lambda通知发送到Slack!辛苦了
下次我会写一些使用此通知和ChatGPT的应用实例。