SlackBot에서 기차 운행 정보를 알립니다.
7605 단어 슬랙GoogleAppsScriptslackbot
개요
SlackBot을 만들고 정해진 시간에 기차 운행 정보를 알립니다.
사용 기술
서버를 세우고 있는 것은 아니고, VPS를 계약하고 있는 것도 아니기 때문에, GoogleAppScript를 사용.
Slack은 Bot 사용자를 만들고 GAS 스크립트를 실행합니다.
절차
1. SlackApp을 만들고 API 가져오기
Slack API 에서 StartBuilding을 클릭하십시오.
앱 이름을 입력합니다.
작성할 작업 공간을 선택하여 작성.
우선 Basic Information의 App Credentials에 있는 Verification Token
를 적어 둡시다.
Verification Token의 내용을 나중에 GAS로 스크립트를 작성할 때 필요합니다.
2. SlackApp 설정
화면은 그대로 계속해서 지금 만든 SlackApp를 WorkSpace에 설치합니다.
앱을 WorkSpace에 설치하려면 권한을 설정해야 하므로,
위 사진 부분에서 permission scope
를 클릭하십시오.Send messages as <アプリ名> chat:write:bot
선택.
이번에는 Slack에 게시하는 것만으로 괜찮기 때문에 메시지를 게시할 권한만 설정합니다.
그 후 Install App to WorkSpace
를 누를 수 있게 되므로, 눌러 WorkSpace에 인스톨.
이제 게시할 Bot을 준비했습니다.
3. Google App Script로 스크립트 작성
아래의 라이브러리를 사용하였습니다.
Slack Bot을 GAS로 좋은 느낌으로 쓰는 라이브러리를 만들었습니다.
소스는 다음과 같습니다.
TrainInfo.gsvar slackAccessToken = 'slackappToken';
function test() {
var slackApp = SlackApp.create(slackAccessToken);
// 対象チャンネル
var channelId = "#general";
var options = {
// 投稿するユーザーの名前
username: "TrainInfo"
}
//電車遅延情報をJSON形式で取得
var json = JSON.parse(UrlFetchApp.fetch("https://rti-giken.jp/fhc/api/train_tetsudo/delay.json").getContentText());
var name="名古屋本線";
var company="名古屋鉄道";
// 投稿するメッセージ
var currentDate = new Date();
var date = Utilities.formatDate( currentDate, 'Asia/Tokyo', 'M月d日 HH時mm分');
var message = "◆電車遅延情報 (" + date + "現在)\n 電車遅延情報はありません。";
for each(var obj in json){
if(obj.name === name && obj.company === company){
message ="<@U8U7H4KE0|yuina> \n ◆電車遅延情報 (" + date + "現在)\n" + company + name + "が遅延しています。\n詳細はこちら→ http://top.meitetsu.co.jp/em/";
}
}
slackApp.postMessage(channelId, message, options);
}
이번에는 철도 지연 정보의 JSON을 사용하고 늦은 경우 멘션과 URL을 추가합니다.
1 노선 밖에 사용하고 있지 않기 때문에 베타 쓰기 상태입니다만, 복수 노선을 사용하고 있는 경우는 Spreadsheet를 활용하면 더욱 스마트하게 쓸 수 있을 것 같습니다.
4. GoogleAppScript 트리거 설정
GooGle App Script에 시간대를 지정하여 지정된 시간 주변에 Slack에 게시하도록 합니다.
이번은 아침 7~8시와 저녁 4~5시에 포스트 받도록 설정하고 있습니다.
완제품
이런 느낌으로 알려줍니다. 앞으로 리노베이션을 진행합니다.
Reference
이 문제에 관하여(SlackBot에서 기차 운행 정보를 알립니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yuina1056/items/014a5dd6f46eb4767a7e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
서버를 세우고 있는 것은 아니고, VPS를 계약하고 있는 것도 아니기 때문에, GoogleAppScript를 사용.
Slack은 Bot 사용자를 만들고 GAS 스크립트를 실행합니다.
절차
1. SlackApp을 만들고 API 가져오기
Slack API 에서 StartBuilding을 클릭하십시오.
앱 이름을 입력합니다.
작성할 작업 공간을 선택하여 작성.
우선 Basic Information의 App Credentials에 있는 Verification Token
를 적어 둡시다.
Verification Token의 내용을 나중에 GAS로 스크립트를 작성할 때 필요합니다.
2. SlackApp 설정
화면은 그대로 계속해서 지금 만든 SlackApp를 WorkSpace에 설치합니다.
앱을 WorkSpace에 설치하려면 권한을 설정해야 하므로,
위 사진 부분에서 permission scope
를 클릭하십시오.Send messages as <アプリ名> chat:write:bot
선택.
이번에는 Slack에 게시하는 것만으로 괜찮기 때문에 메시지를 게시할 권한만 설정합니다.
그 후 Install App to WorkSpace
를 누를 수 있게 되므로, 눌러 WorkSpace에 인스톨.
이제 게시할 Bot을 준비했습니다.
3. Google App Script로 스크립트 작성
아래의 라이브러리를 사용하였습니다.
Slack Bot을 GAS로 좋은 느낌으로 쓰는 라이브러리를 만들었습니다.
소스는 다음과 같습니다.
TrainInfo.gsvar slackAccessToken = 'slackappToken';
function test() {
var slackApp = SlackApp.create(slackAccessToken);
// 対象チャンネル
var channelId = "#general";
var options = {
// 投稿するユーザーの名前
username: "TrainInfo"
}
//電車遅延情報をJSON形式で取得
var json = JSON.parse(UrlFetchApp.fetch("https://rti-giken.jp/fhc/api/train_tetsudo/delay.json").getContentText());
var name="名古屋本線";
var company="名古屋鉄道";
// 投稿するメッセージ
var currentDate = new Date();
var date = Utilities.formatDate( currentDate, 'Asia/Tokyo', 'M月d日 HH時mm分');
var message = "◆電車遅延情報 (" + date + "現在)\n 電車遅延情報はありません。";
for each(var obj in json){
if(obj.name === name && obj.company === company){
message ="<@U8U7H4KE0|yuina> \n ◆電車遅延情報 (" + date + "現在)\n" + company + name + "が遅延しています。\n詳細はこちら→ http://top.meitetsu.co.jp/em/";
}
}
slackApp.postMessage(channelId, message, options);
}
이번에는 철도 지연 정보의 JSON을 사용하고 늦은 경우 멘션과 URL을 추가합니다.
1 노선 밖에 사용하고 있지 않기 때문에 베타 쓰기 상태입니다만, 복수 노선을 사용하고 있는 경우는 Spreadsheet를 활용하면 더욱 스마트하게 쓸 수 있을 것 같습니다.
4. GoogleAppScript 트리거 설정
GooGle App Script에 시간대를 지정하여 지정된 시간 주변에 Slack에 게시하도록 합니다.
이번은 아침 7~8시와 저녁 4~5시에 포스트 받도록 설정하고 있습니다.
완제품
이런 느낌으로 알려줍니다. 앞으로 리노베이션을 진행합니다.
Reference
이 문제에 관하여(SlackBot에서 기차 운행 정보를 알립니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yuina1056/items/014a5dd6f46eb4767a7e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
var slackAccessToken = 'slackappToken';
function test() {
var slackApp = SlackApp.create(slackAccessToken);
// 対象チャンネル
var channelId = "#general";
var options = {
// 投稿するユーザーの名前
username: "TrainInfo"
}
//電車遅延情報をJSON形式で取得
var json = JSON.parse(UrlFetchApp.fetch("https://rti-giken.jp/fhc/api/train_tetsudo/delay.json").getContentText());
var name="名古屋本線";
var company="名古屋鉄道";
// 投稿するメッセージ
var currentDate = new Date();
var date = Utilities.formatDate( currentDate, 'Asia/Tokyo', 'M月d日 HH時mm分');
var message = "◆電車遅延情報 (" + date + "現在)\n 電車遅延情報はありません。";
for each(var obj in json){
if(obj.name === name && obj.company === company){
message ="<@U8U7H4KE0|yuina> \n ◆電車遅延情報 (" + date + "現在)\n" + company + name + "が遅延しています。\n詳細はこちら→ http://top.meitetsu.co.jp/em/";
}
}
slackApp.postMessage(channelId, message, options);
}
이런 느낌으로 알려줍니다. 앞으로 리노베이션을 진행합니다.
Reference
이 문제에 관하여(SlackBot에서 기차 운행 정보를 알립니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yuina1056/items/014a5dd6f46eb4767a7e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)