Slack+GAS+Twilio에서 일하는 동안 잠자는 동료를 봇에 두드려 준다
8529 단어 슬랙twilioGoogleAppsScriptgas
이런 사람
조리법
(1) Outgoing Webhooks에서 Slack의 게시물에 반응
먼저 Outgoing Webhooks을 사용하여 특정 게시물에 반응하도록합시다.
설정 이름
내용
채널
여기에서 지정한 채널의 소식에 반응합니다. 취향에.
Trigger Word
여기에 지정된 단어로 시작하는 게시물에 반응합니다. 뭐든지 괜찮습니다만, bot군의 이름으로 할 때입니다.
URL
Trigger Word와 일치하는 경우 요청되는 URL입니다. 궁극적으로 GAS의 공개 URL을 지정하지만 일단 지금은 비어 있습니다.
Token
Webhook의 토큰입니다. 나중에 사용하므로 메모 때입니다.
(2) GAS로 받아 Twilio에 흘린다
GAS의 script는 이런 느낌. (에러 처리라든가 아무것도 하지 않지만)
Slack 주위의 어묵은 여기 라이브러리 를 사용하게 했습니다. 감사!
GoogleAppsScriptfunction doPost(e) {
var webhook_token = '【Webhook Token】';
var twilio_sid = '【Twilio Application SID】';
var twilio_token = '【Twilio Token】';
var slack_token = '【Slack API Token】';
//Webhookトークンの検証
if (e.parameter.token != webhook_token) {
throw new Error("invalid token.");
}
//e.parameter.textにSlackの投稿内容が入ってるのでマッチ条件は適当に変えてね
if(e.parameter.text.match(/xxxxxさん起こして/)) {
var payload = {
'To' : '【発信先の電話番号】', //+81xxxxxxxx
'From' : '【発信元の電話番号】', //+81xxxxxxxx
'Url' : '【TwiMLのURL】'
};
UrlFetchApp.fetch('https://api.twilio.com/2010-04-01/Accounts/' + twilio_sid + '/Calls.json', {
'method' : 'POST',
'headers' : {'Authorization' : ' Basic ' + Utilities.base64Encode(twilio_sid + ':' + twilio_token)},
'payload' : payload,
'muteHttpExceptions' : true
});
var app = SlackApp.create(slack_token);
return app.postMessage(e.parameter.channel_id, 'よっしゃ、まかしとき!', {
username: 'bot',
icon_url: 'http://www.material-land.com/material/1769.gif'
});
}
}
(1) Outgoing Webhooks에서 Slack의 게시물에 반응
먼저 Outgoing Webhooks을 사용하여 특정 게시물에 반응하도록합시다.
설정 이름
내용
채널
여기에서 지정한 채널의 소식에 반응합니다. 취향에.
Trigger Word
여기에 지정된 단어로 시작하는 게시물에 반응합니다. 뭐든지 괜찮습니다만, bot군의 이름으로 할 때입니다.
URL
Trigger Word와 일치하는 경우 요청되는 URL입니다. 궁극적으로 GAS의 공개 URL을 지정하지만 일단 지금은 비어 있습니다.
Token
Webhook의 토큰입니다. 나중에 사용하므로 메모 때입니다.
(2) GAS로 받아 Twilio에 흘린다
GAS의 script는 이런 느낌. (에러 처리라든가 아무것도 하지 않지만)
Slack 주위의 어묵은 여기 라이브러리 를 사용하게 했습니다. 감사!
GoogleAppsScript
function doPost(e) {
var webhook_token = '【Webhook Token】';
var twilio_sid = '【Twilio Application SID】';
var twilio_token = '【Twilio Token】';
var slack_token = '【Slack API Token】';
//Webhookトークンの検証
if (e.parameter.token != webhook_token) {
throw new Error("invalid token.");
}
//e.parameter.textにSlackの投稿内容が入ってるのでマッチ条件は適当に変えてね
if(e.parameter.text.match(/xxxxxさん起こして/)) {
var payload = {
'To' : '【発信先の電話番号】', //+81xxxxxxxx
'From' : '【発信元の電話番号】', //+81xxxxxxxx
'Url' : '【TwiMLのURL】'
};
UrlFetchApp.fetch('https://api.twilio.com/2010-04-01/Accounts/' + twilio_sid + '/Calls.json', {
'method' : 'POST',
'headers' : {'Authorization' : ' Basic ' + Utilities.base64Encode(twilio_sid + ':' + twilio_token)},
'payload' : payload,
'muteHttpExceptions' : true
});
var app = SlackApp.create(slack_token);
return app.postMessage(e.parameter.channel_id, 'よっしゃ、まかしとき!', {
username: 'bot',
icon_url: 'http://www.material-land.com/material/1769.gif'
});
}
}
Webhook Token
Twilio Application SID/Twilio Token/발신자 전화 번호
발신지 전화번호
TwiML URL
TwiML
<Response>
<Say language="ja-jp">起きろー!!</Say>
</Response>
고정의 메시지가 아니고 Slack로 투고한 내용 주워 그대로 말해 봐도 좋네요.
(3) 공개
GAS를 공개합시다.
[공개] ⇒ [웹 애플리케이션으로 도입]
공개 URL이 표시되므로 메모합니다.
마지막으로 Outgoing Webhooks의 설정 화면으로 돌아가 「URL」의 항목에 메모한 공개 URL을 등록하면 준비 완료!
자, 일어나자.
Reference
이 문제에 관하여(Slack+GAS+Twilio에서 일하는 동안 잠자는 동료를 봇에 두드려 준다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tikamoto/items/07a5952c61bb15b63f9c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Slack+GAS+Twilio에서 일하는 동안 잠자는 동료를 봇에 두드려 준다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tikamoto/items/07a5952c61bb15b63f9c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)