chatworkからslackに移行したとは言っても。。
どっちのツールがどうこういう話は別として、chatworkで連絡を取り合っていたお客様に
「今後slackでお願いします!」とは言いづらい。。
chatworkは特定のお客様用に部屋を残すこととなった。
でも個人的にはchatworkとslackを常に上げておくのもなんか嫌だ。
#chatworkのメッセージをslackに転送しよう
chatworkにちょうど良いapiがある。
http://developer.chatwork.com/ja/endpoint_rooms.html#GET-rooms-room_id-messages
前回取得分からの差分のメッセージが取れる
→ってことはそれをslackに流せば良い。
#準備するもの
●chatworkのAPIトークン
参考URL:https://help.chatwork.com/hc/ja/articles/115000172402-API-Token%E3%82%92%E7%99%BA%E8%A1%8C%E3%81%99%E3%82%8B
●slackのWebhook
参考URL:https://qiita.com/ik-fib/items/b4a502d173a22b3947a0
●googleアカウント
#GASを書く
function myFunction() {
var CHATWORK_TOKEN = '上記の準備するもののAPIトークンをここに記載';
var ROOM_ID = ["チャットワークのルームIDを記載","チャットワークのルームIDを記載"];
var params = {
headers : {"X-ChatWorkToken" : CHATWORK_TOKEN},
method : "get"
};
for (var i = 0; i < ROOM_ID.length; i ++) {
var url = "https://api.chatwork.com/v2/rooms/" + ROOM_ID[i] + "/messages?force=0";
var strRespons = UrlFetchApp.fetch(url, params);
if (strRespons != "") {
var json = JSON.parse(strRespons.getContentText());
if(json == "") return;
for(var i in json){
var message = '';
message = message + json[i].account.name + "\n```" + json[i].body + "```\n";
postSlack(message);
}
}
}
}
function postSlack(text){
var url = "ここにはslackのWebhookを記載";
UrlFetchApp.fetch(url, {
payload : JSON.stringify({
channel : "#部屋名を記載",
text : text,
})
});
}
これで自分が入っているいる複数のチャットワークの部屋のメッセージが取得できる。
※ちなみにチャットワークのルームIDはチャットワークの部屋を開いた時のアドレスでわかる。
以下の例でいうと「12345678」
https://www.chatwork.com/#!rid12345678
※さらにちなみに起動トリガーは1分毎に設定した。
#まぁまぁ便利
ただし、まぁまぁ。
今回はGAS使ってみようっていうのが実は動機にあった。
GASはとても簡単で便利。しかも無料。
武器(手段)が一つ増えたと思って、今回は満足。