Slack 앱을 AWS Lambda에서 실행
Slack 앱을 AWS Lambda에서 실행
할 일
Slack 앱을 AWS Lambda
로 이동합니다.
Slack 앱은 Slack Bolt
에서 개발하여 Slack 바로 가기에서 모달을 시작합니다.
슬랙 볼트란?
Slack 앱을 손쉽게 작성하기 위한 프레임워크로 Slack사가 제공하고 있다. Bot만을 만들 수 있다든가 그런 것은 아니고, 다양한 트리거로부터 앱을 기동시켜 다양한 처리를 시킬 수 있다. 트리거는 다음과 같습니다.
또한 BlockKitBuilder을 사용하면보다 풍부한 UI를 구현할 수 있습니다.
시퀀싱
개발 언어
종속성이 있는 npm 패키지
개발 환경 전용 npm 패키지
로컬의 API는 ngrok 로 외부 공개할 필요가 있다. (이 기사에서는 할애)
구현 내용
// ------------------------
// Bolt 初期化処理
// ------------------------
const { App, ExpressReceiver } = require('@slack/bolt');
const { LogLevel } = require('@slack/logger');
const logLevel = process.env.SLACK_LOG_LEVEL || LogLevel.DEBUG;
const processBeforeResponse = false;
const receiver = new ExpressReceiver({
signingSecret: process.env.SLACK_SIGNING_SECRET,
processBeforeResponse,
});
const app = new App({
token: process.env.SLACK_BOT_TOKEN, // Bot User OAuth Access Token
logLevel,
receiver,
processBeforeResponse,
});
// ------------------------
// Bolt メイン処理
// ------------------------
// ショートカット起動
app.shortcut('{callback_id}', async ({ logger, client, body, ack }) => {
// logic...
await ack();
});
// レスポンス処理
app.view('{callback_id}', async ({ logger, client, body, ack }) => {
// logic...
await ack();
});
// ------------------------
// AWS Lambda ハンドラ
// リクエストを受け付けたらExpressサーバを起動する
// ------------------------
const awsServerlessExpress = require('aws-serverless-express');
const server = awsServerlessExpress.createServer(receiver.app);
module.exports.hello = (event, context) => {
awsServerlessExpress.proxy(server, event, context);
};
Slack 앱 만들기
응용 프로그램은 다음에서 만들 수 있습니다.
htps : // 아피. scck. 이 m / ps / w
슬랙 앱 설정
앱을 바로 가기 시작하는 경우 다음에서 설정합니다. 「Callback ID」는 소스 코드의 app.shortcut('{
callback_id
}'~ 와 일치시킨다.https://api.slack.com/apps/{작성한 앱 ID}/interactive-messages
구현 포인트
3秒以内
를 반환하지 않으면 오류가 발생하기 때문에 ack()
를 어느 타이밍에 반환할지가 키모가 된다. 3 초를 넘는 처리를 구현하는 경우는 Lambda 를 분할해 먼저 ack() 를 하고 나서, 한쪽의 Lambda 를 비동기 처리시키면 좋을까 생각한다. callback_id
가 연결되어 있으므로 view가 열리지 않는다고 생각하면 callback_id
를 확인하는 것이 좋습니다. block_id
와 action_id
를 지정하면(자), 요구를 input 마다 취득할 수 있다. 사이고에게
Lambda에서 Bolt를 움직이는 경우, Lambda 시작 + Bolt 시작 시간이 올라오므로 3초 규칙이 상당히 시비어. Lambda로 이동하는 것보다 서버에서 Bolt를 일반적으로 움직이는 것이 더 낫다고 생각하는 것이 적습니다.
개인적인 비망의 기사이므로, 불명점은 코멘트나 참고가 된 URL을 봐 주시면과.
참고가 된 URL
Reference
이 문제에 관하여(Slack 앱을 AWS Lambda에서 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takiguchi-yu/items/2447f7811290e6e70291텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)