0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

slackのEvent apiを使ってチャンネルのメッセージをchatworkに転送する

Posted at

slackのチャンネルにメッセージが投稿されたことをトリガーにしてGASでchatworkに転送する実装で
slackのEvent apiを使っての連携にてこずったのでおさらい用記事。
色んな記事みてごちゃごちゃになったけど結構簡単にできた:sweat_smile:

slackのチャンネルとGASの連携

古い記事はWebHookを使って実装すると簡単にできる!みたいな記事が多かったのですがslackのapiでは非推奨・・でした
image.png

将来的には非推奨となり、削除される可能性もあります。使用することはお勧めしません。

みたいなことが書かれてます:confounded:WebHookは使えないなぁ・・・
という事でSlackのEventAPIを使ってGASと連携することにしました!

Event api

Event APIのEvent Subscriptionsは、Slackへの投稿やリアクションなどのコマンドがあった場合、
用意したサーバにSlackからほぼリアルタイムにリクエストが飛んできて、それに対しての処理を行うことができる。

まずはGASでプログラムを書いていく

GASでプロジェクト作成

test.gs
function doPost(e){
  var params = JSON.parse(e.postData.getDataAsString());
  return ContentService.createTextOutput(params.challenge);
}

↑これをウェブアプリケーションとして公開
デプロイの方法:point_right_tone4:https://auto-worker.com/blog/?p=3565)

image.png

URLをコピーしておく

Slackアプリを作る

:point_down_tone5:ここから作成

:point_down_tone3:アプリを作成(Create New App)してEvent Subscriptionsを選択、流れはこちらの記事が一番わかりやすかったです

つまずいたところ

連携したかったチャンネルはプライベートチャンネルだったためプライベートチャンネルのメッセージが取得できる
eventを選択していなかった。

image.png
:pencil2:message.groups は「プライベートチャンネルにメッセージが投稿されることがトリガー」

:point_up_2_tone5::point_up_2_tone3::point_up_2_tone1:ここから自分のやりたい事に関するEventを探してください

メッセージを取得したいチャンネルに作ったSlackアプリを追加する

チャンネルのところで右クリック
   ↓
チャンネル詳細を開く
   ↓
インテグレーション
   ↓
アプリを追加

image.png

先ほどのつまずいたところの部分で、何がきっかけで気づけたかというと・・・

連携したかったチャンネルはプライベートチャンネルだったためプライベートチャンネルのメッセージが取得できる
eventを選択していなかった。
↓ ↓ ↓
作ったSlackAppのEventapiは何が設定されているか確認できる

image.png
先ほど追加したAppの設定を押すと↓の画面が出てくる

image.png

連携できない場合何ができるか、設定されているか書かれているので自分がやりたい事がちゃんと設定されているか確認してみて下さい!

ChatWorkとGASの連携

記事は古いですがチャットワークは割と簡単に実装できました!

完成コード

test.gs
function doPost(e){

 var params = JSON.parse(e.postData.getDataAsString());
 notifyToChatwork(params.event.text);

 return ContentService.createTextOutput(params.challenge);
}

function notifyToChatwork(message) { 
  var client = ChatWorkClient.factory({token: "チャットワークAPI"}); 
  client.sendMessage({
  room_id:ルームID, 
  body: message});
}

出来てしまえばすごく簡単だと思いましたが、、、、なかなかてこずりました。:sweat_smile:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?