WEBデザインの勉強

初心者が1からWEBデザインを勉強するブログ。

チャットワークのメッセージをSlackに通知する

f:id:mmmmofu:20180302093331p:plain

Google Apps Scriptを使用してチャットワークのメッセージをSlackに通知するBOTを作成します。
developers.google.com

こちらの記事を参考にしました。
blog.engineer.adways.net

チャットワーク APIトークンの取得はこちら
https://www.chatwork.com/service/packages/chatwork/subpackages/api/token.php

Slack APIトークンの取得はこちら
api.slack.com

APIトークンが取得できたらGoogle Apps Scriptのプロジェクトを新規作成し、記述していきます。

var CHATWORK_TOKEN ='チャットワーク APIトークン';
var SLACK_TOKEN = 'Slack APIトークン';
var room_id = 'Slackに通知したいチャットワークのルームID';

function chatworkBot() {
  var json = getMessage();
  
  if(json == "") return;
  
  var message = '';
  for(var i in json){
    message = message + json[i].account.name + "\n```" + json[i].body + "```\n";
    postMessage(message);
  }
}

function getMessage(){
  var params = {
    headers : {"X-ChatWorkToken" : CHATWORK_TOKEN},
    method : "get"
  };
  
  var url = "https://api.chatwork.com/v2/rooms/" + room_id + "/messages?force=0"; //チャットからメッセージを取得
  var strRespons = UrlFetchApp.fetch(url, params); //チャットワークAPIエンドポイントからレスポンスを取得
  if(strRespons == "") return;
  
  var json = JSON.parse(strRespons.getContentText()); //APIからの結果をjson形式にパース
 
  return json;
}


function postMessage(message) {
  var url        = 'https://slack.com/api/chat.postMessage';
  var token      = SLACK_TOKEN;
  var channel    = "#general";//投稿するチャンネル名
  var username   = "ChatWork"; 
  var parse      = 'full';
  var icon_emoji = ':robot_face:'; //表示するアイコン
 var method     = 'post';
 
  var payload = {
      'token'      : token,
      'channel'    : channel,
      'text'       : message,
      'username'   : username,
      'parse'      : parse,
      'icon_emoji' : icon_emoji
  };
 
  var params = {
      'method' : method,
      'payload' : payload
  };
 
  //slackにポスト
  var response = UrlFetchApp.fetch(url, params);
}  

2017/01/26にチャットワークAPIがバージョンアップしてv2になりました。

関連記事

mmmmofu.hatenablog.com