Go+AWS Lambda로 Slack의 Slash Commands 만들기
7044 단어 5슬랙AWSLambdaslash_command
소개
Slack의 Slash Commands는 이런 사람입니다.
Slack에
/commandName
를 입력하면 미리 설정된 URL로 요청이 전송됩니다.이것을 Go+AWS Lambda로 만들어 보겠습니다.
같은 느낌입니다.
전제 조건
다음이 설치되어 있어야 합니다.
로컬에 AWS 자격 증명이 설정되어 있어야 합니다.
우선 샘플 배포
준비
Slack App 등록
여기에서 Slack App을 등록합니다.
등록 후 App Credentials에 표시되는 Verification Token의 값을 기록해 둡니다.
애플리케이션 준비
여기 을 clone
template.yaml의 VERIFICATION_TOKEN 값을 얻은 값으로 다시 씁니다.
배포
다음 명령으로 배포를 실행합니다.
make deploy BUCKET="your S3 bucket name" PROFILE="your aws profile"
STACK_NAME="your stack name"
BUCKET에는 미리 준비한 S3 버킷을, PROFILE에는 배포에 사용하는 AWS의 프로파일을, STACK_NAME에는 임의의 값을 지정합니다.
버킷은 profile에 지정된 것과 동일한 리전에 있어야 합니다.
슬랙으로 설정
배포가 완료되면 API Gateway 엔드포인트가 지불되므로 Slack으로 설정합니다.
Validation Token을 얻은 페이지에서 Slash Commands를 선택하고,
URL을 등록합니다.
코드 정보
이건 에서 환경 변수에 포함된 VERIFICATION_TOKEN과 Slack이 보낸 Request의 token을 비교합니다.
// valification token
token := os.Getenv("VERIFICATION_TOKEN")
vals, _ := url.ParseQuery(request.Body)
req := slackRequest{
vals.Get("token"),
vals.Get("team_id"),
vals.Get("team_domain"),
vals.Get("channel_id"),
vals.Get("channel_name"),
vals.Get("user_id"),
vals.Get("user_name"),
vals.Get("command"),
vals.Get("text"),
vals.Get("response_url"),
vals.Get("trigger_id"),
}
if req.token != token {
// invalid token
return events.APIGatewayProxyResponse{
Body: fmt.Sprintf("Invalid token."),
StatusCode: 200,
}, nil
}
환경 변수는 template.yaml 에 포함되어 있습니다.
Environment: # More info about Env Vars:
Variables:
VERIFICATION_TOKEN: xxxxx
참고
SAM의 배포에 대해서는 아래의 기사를 참고로 했습니다.
Reference
이 문제에 관하여(Go+AWS Lambda로 Slack의 Slash Commands 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/inabajunmr/items/5224ebdde7b0aa35ce80텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)