使用SlackBOT运行AWS Lambda并向Slack发出通知(使用NodeJS)

这篇文章所能做的

chat2.gif

事前准备 (Shì

请准备好AWS账号,
请确保您拥有Slack账号并可以访问应用程序。

创建机器人

    • SlackApiのAppsにアクセスします

 

    • SlackApi

 

    https://api.slack.com/apps/
undefined
    CreateNewAppから新規アプリを作成します
undefined
- App名
わかりやすいもの(今回はSlackに通知するのでSlack-Post)
- インストールするワークスペース
そのBOTを使いたいワークスペースを選択
    OAuth & Permissions > ScopesからBOTの権限を追加
undefined
- app_mentions:read
BOTがメンションを受け取る事ができるようになる
- chat:write
Slackに書き込む事ができるようになる
    OAuth & Permissions > OAuth Tokens for Your Workspace > Bot User OAuth Tokenをメモっておく
undefined
    Slackにインストールする
undefined

这样一来,Slack上已经成功注册了机器人
一时间,Slack方面的准备就到此为止了

接下来,我们将转到AWS Lambda这一方面。

创建一个函数(Lambda Function)。

    検索バーからLambdaを検索し、選択します
undefined
    左のメニュー > 関数 > 関数の作成を選択します
undefined
    • 以下を設定し、関数の作成をします

関数名
今回はNodeJSでBOTを動かし、Slackから通知を送るのでSlack-Post-NodeJS
ランタイム
Node.js 18.x

undefined
undefined
    • 作成後、設定 > 関数URL > 関数URLの作成を選択

 

    API GateWayは使わないやり方でやりたいので関数URLの作成をします
undefined
    以下を設定し、関数URLの作成をします
undefined

认证类型

公开标头
日期,保持活动
允许标头
日期,保持活动
允许方法
*
最长过期时间
86400
允许认证信息
检查

    関数URLが作られたのでメモっておきます
undefined

接下来,我们将准备要放置在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/
undefined

这里的代码准备工作已经完成,现在回到Lambda端。

将Lambda函数脚本放置

    Lamdbaの関数 > コードからzipをアップロードする
undefined
undefined
    • 環境変数の設定

 

    設定 > 環境変数からコードで使っているSLACK_BOT_USER_ACCESS_TOKENを追加します
undefined

Lambda的设置已完成
最后是Slack的设置

SlackBOT和Lamdba的连接设置

    Event Subscriptions > Enable Events をOnにし、Request URLの欄にLamdbaで設定した関数URLを張り付け認証します
undefined

之前在 index.js 中所记录下的

    if (body.challenge) {
      return {
        statusCode: 200,
        body: {
          challenge: body.challenge
        }
      }
    }

如果认证成功,可以删除此验证处理。

    Subscribe to bot eventsにapp mentionを追加
undefined

设定完成后,请点击底部的”保存”按键进行保存。

    SlackでBOTを呼び出し、メンションを送ってみる
undefined

我已通过BOT将Lambda通知发送到Slack!辛苦了

下次我会写一些使用此通知和ChatGPT的应用实例。

广告
将在 10 秒后关闭
bannerAds