Cloud Functions 및 Slash_command로 Slack에서 Connpass 정보 가져오기
13591 단어 슬랙slash_commandcloudfunctions
소개
엔지니어가 참가하는 외부 공부회라고 하면, 대부분은 TechPlay나 Connpass등에서 찾아 응모하고 있는 것이 아닐까요.
참가 이벤트가 늘어나면, 각 이벤트 상세 화면에 가는 것이 귀찮게 하거나 합니다.
또, 상사나 선배, 자주 이벤트로 보이는 사람등이 어떤 이벤트에 가고 있는지 궁금하기도 합니다만, 이 근처도 일부러 쫓는 것은 멘도입니다.
그래서 슬래시 명령을 사용하여 언제든지 최신 참가 상황을 사람마다 Slack에서 일람 취득할 수 있도록 했습니다.
작성 절차
슬래시 명령
먼저 여기에서 Slash Command를 검색합니다.
그러면 다음과 같은 화면에 갈까 생각합니다.
Add Configration
에서 다양한 설정을 수행합니다.
Integration Settings에서 주로 이용하는 항목은 다음과 같습니다.
슬래시 명령
먼저 여기에서 Slash Command를 검색합니다.
그러면 다음과 같은 화면에 갈까 생각합니다.
Add Configration
에서 다양한 설정을 수행합니다.Integration Settings에서 주로 이용하는 항목은 다음과 같습니다.
/connpass
이라고합니다) Cloud Functions
Slash Command의 설정이 끝나면 다음은 실제로 코드를 작성합니다.
서버리스로 만들고 싶기 때문에 GCP의 Cloud Functions를 이용합니다.
Cloud Functions에 배포하는 방법은 크게 세 가지가 있습니다.
- 인라인 편집기
- Cloud Storage zip
- Cloud Source 리포지토리
빨리 만들려면 인라인 에디터를 사용하면 좋지만 이번에는 모듈을 이용하고 싶으므로 zip으로 배포합니다.
디렉토리 구성
|- node_modules/
|- index.js
|- package-lock.json
└ package.json
소스 코드
connpass API의 node SDK를 만드는 분이 있으므로 그쪽을 이용했습니다.
index.js
const BOT_TOKEN = '(SlashCommandのToken)';
const connpass = require("connpass");
exports.getConnpass = (req, res) => {
let returnMessage;
if(req.body.token === BOT_TOKEN) {
let text = "";
//今月と来月のイベントのみに絞り込み
const now = new Date();
const thisMonth = ('0000' + now.getFullYear()).slice(-4) + ('00' + (now.getMonth()+1)).slice(-2);
const nextMonth = ('0000' + now.getFullYear()).slice(-4) + ('00' + (now.getMonth()+2)).slice(-2);
//検索したい人のユーザIDとSlack上への表示名を記入
const users = [
{id: 'userId1', name: '山本さん'},
{id: 'userId2', name: '伊藤さん'},
{id: 'userId3', name: '鈴木さん'},
{id: 'userId4', name: '吉田さん'}
];
getEvent(0);
function getEvent(i) {
connpass.get({order : 2, ym : `${thisMonth}, ${nextMonth}`, nickname : users[i].id})
.then((result) =>{
text += `${users[i].name}\n`;
result.events.forEach((event) => {
text += `${ event.started_at.slice(0, 10) } : <${event.event_url}|${event.title}> \n`;
});
if(++i < users.length) {
getEvent(i);
} else {
//Slackに返すオブジェクト
returnMessage = {
'response_type': 'in_channel',
'text': text
};
res.status(200).send(returnMessage)
}
})
.catch((error) => {
console.log(error);
});
}
} else {
returnMessage = { 'text': '認証情報が異なります'};
res.status(400).send(returnMessage);
}
};
Slack에 대한 게시물은 개체의
text
필드 값을 메시지로 표시합니다.또한,
response_type
에서 in_channel
를 지정하면 Bot의 회신이 전체 공개가 되고, response_type
를 붙이지 않는 경우는 슬래시 커멘드를 친 본인만이 보이는 메세지가 됩니다.배포
⑴ 위의 4개의 파일/디렉토리를 압축하여 zip으로 합니다.
⑵ 여기에서 로그인하고 콘솔 → Cloud Functions로 이동합니다.
⑶ 함수를 작성합니다. 다음을 각각 설정합니다.
- 이름
- 할당된 메모리
- 트리거(http 트리거로 합니다)
- 소스 코드 (zip 업로드 선택)
- zip 파일(압축된 zip 업로드)
- 스테이지 버킷 (zip 파일을 넣을 위치를 선택하십시오)
- 실행하는 함수 (exports.xxxxx의 부분입니다. 이번 예제라면 getConnpass입니다.)
⑷ 설정이 완료되면 저장하고 닫습니다.
배포가 완료되는 데 몇 분이 걸릴 수 있습니다.
⑸ 마지막으로, 트리거가 되는 URL을 슬래시 커멘드의 URL에 기입해 종료입니다.
동작 확인
이제 Slack에서 슬래시 명령을 두드리면 Bot이 반환 할 수 있습니다.
슬래시 커맨드는 이런 희망시에만 보러 가는 귀찮은 정보 취득에는 상당히 사용할 수 있는 것 같은 인상입니다.
근태 입력 등에도 사용할 수 있을 것 같네요.
Reference
이 문제에 관하여(Cloud Functions 및 Slash_command로 Slack에서 Connpass 정보 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/daitasu/items/3c89485549afd2293a48
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Cloud Functions 및 Slash_command로 Slack에서 Connpass 정보 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/daitasu/items/3c89485549afd2293a48텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)