大変お待たせいたしましたが、ようやく続編書けました!
見捨てないで読んでくださっている方々、本当に感謝です。ありがとうございます!( ;∀;)
念のため。
これは 定期的に Twitter で特定の内容を検索して通知してくれる Bot を作った話(前編) および 定期的に Twitter で特定の内容を検索して通知してくれる Bot を作った話(後編) の続きです。
書ききれなかった、「共有するボタンを押したら全体のトークルームに送信する方法」を解説していきます。
どうぞよろしくお願いいたします。
「共有する」ボタンを押したら別のトークルームに送信
前回の記事で実装した「共有する」ボタンは メッセージ送信 (buttonTemplate) を使用しています。
メッセージ内の「共有する」ボタンを押すと、Bot の CallbackURL 宛にメッセージが送信されます。
詳しくは メッセージ受信 - Callback 形式 を参考にしてください。
CallbackURL は、実は前編で設定していたのです!
・・・わかってますって?
ですよねー(*‘∀‘)
なので、GoogleAppsScripts のコードに、Callback を受信したときの処理を追加します!
function doPost(e) {
if (e == null || e.postData == null || e.postData.contents == null) return;
const requestJSON = e.postData.contents;
const requestObj = JSON.parse(requestJSON);
var text = requestObj.content.text;
text = text.replace(/.*?text=/,""); // 不要な部分の削除
const sendMsg = text.replace("\n\n\">全体のトークルームに共有します。",""); // 不要な部分の削除
const keys = {
"apiId" : "API ID",
"consumerKey" : "Server API Consumer Key",
"serverId" : "Server List(ID登録タイプ) の ID",
"privateKey" : "Server List(ID登録タイプ) の認証キー",
"botNo" : "botNo"
};
const roomId = "1234567890"; // 送信したいトークルームの roomId
const uri = "https://apis.worksmobile.com/r/" + keys.apiId + "/message/v1/bot/" + keys.botNo + "/message/push";
const headers = {
"Content-type": "application/json",
"consumerKey": keys.consumerKey,
"Authorization": "Bearer " + LINEWORKS.getToken(keys)
};
const options = {
"method": "post",
"headers": headers,
"payload": JSON.stringify({
"roomId": roomId,
"content": {
"type": "text",
"text": sendMsg
}
})
}
UrlFetchApp.fetch(uri, options);
}
- 8行目の
keys
には自身の DeveloperConsole 画面で確認した API ID などを入れてください - 15行目の
roomId
には共有先のトークルームのroomId
を入れてください。
トークルームの roomId
を取得するにはいくつか方法があるのですが、良かったら過去の記事「トークルームの roomId を取得する bot」を参考にしてくださいませ('ω')
6、7行目ではテキストの不要な部分を削除しています。
何もしないと以下のような文章が送られてきます。
<postback callbackBotNo="xxxxxx" data="action=share&text=Thu Mar 05 03:32:02 +0000 2020
こぐまのケーキ屋さんはほっこりするなぁ
クリームちゃん
">全体のトークルームに共有します。
text=
よりあとの文章が必要なので、前半部分を6行目で、後半部分を7行目で削除しています。
コードをコピペして、keys
と roomId
を修正したら、GoogleAppsScript を公開して完成です!
公開の仕方は前編で紹介した GoogleAppsScript の作成 で説明している手順と同様に行えば更新版を公開できます。
公開したのち、Bot から送られてきたメッセージの「共有する」ボタンを押すと・・・
全体のトークルームに共有できました!
おわりに
ここまでお付き合いいただき、本当に、本当にありがとうございました!(*´Д`)
ようやく書き終わることができました。。。
長い文章書くのって本当に大変だなぁ。諸先輩方の凄さに感服している次第です。
今回の失敗を反省し、次回に生かす所存であります!('◇')ゞ
あと、Keys
の値はいくつかの function
で使用するのでどこかで Getter を作っておいた方が楽な気がします。
それから、あんまり使ったことなかったのですが、LINEWORKS API の URL スキーム を使うと roomId
を指定せず、好きなトークルームをユーザが指定できるみたいです。
色々と精進しないとなー。頑張ります('ω')
ではまた!(^^)/
参考にさせていただきましたm(_ _)m
GoogleAppsScript 公式
Twitter Developers 公式
LINEWORKS Developers 公式