
実現したいこと
【GASを使ってzoomへの参加、退室をSlackに通知したい】
①zoomのミーティングに参加or退室
↓
②GAS(google app script)にて処理
↓
③紐づくSlackのチャンネルにて「〇〇さんが参加(退室)しました」と通知
具体的に躓いていること
- zoomでのwebhookのValidate(webhook→Feature→Event notification endpoint URL)が通らない
- GAS上でHMAC SHA-256を使えばValidate通るかも?でもやり方が分からない
前提
【GASを使ってzoomへの参加、退室をSlackに通知したい】です。
『Zoomの会議室の参加、退出をGASで受け取ってSlackに送信する』を参考に基本的な土台は作成できました(zoom、GAS、Slackそれぞれ設定済)。
しかし、zoomのアップデートにより、webhookのValidate(webhook→Feature→Event notification endpoint URL)が通らない状態です。
段階としては参考にした『Zoomの会議室の参加、退出をGASで受け取ってSlackに送信する』の3-b(本当は3-c)Event notification endpoint にGoogle ウェブアプリケーションのURLを設定してsaveボタンを押すに該当する部分です。
試したこと
同じく躓いた方のまとめを確認
→【Zoom 2022】Zoom の会議開始を LINEアプリにお知らせする仕組みを Zoom Webhook と enebular で作る(Webhook のバリデーション対応も行いつつ)
:こちらの方はenebular(Node-RED)上でHMAC SHA-256を利用することで解決していました。
:しかし、GASでHMAC SHA-256をどのように反映するかが分かりません。
まとめ:お願い
- 番号リスト【GASを使ってzoomへの参加、退室をSlackに通知したい】です。
- 『Zoomの会議室の参加、退出をGASで受け取ってSlackに送信する』を参考に基本的な土台は作成済です。
- しかし、zoomのアップデートにより、webhookのValidate(webhook→Feature→Event notification endpoint URL)が通らない状態です。
- お願い:作成済の以下のコードを前提にどうすればGASのデプロイ(ウェブアプリケーション)がzoomのwebhookにValidateが通るかをご教示いただけますと幸いです。
↓こちらのコードは上述の通り、参考にしております『Zoomの会議室の参加、退出をGASで受け取ってSlackに送信する』から引用したものです。
GAS
1var sheet="meetings"; 2var sheetUrl="https://docs.google.com/spreadsheets/d/14xxxxxxxxxxxxxxxxxxuU/"; 3var ss = SpreadsheetApp.openByUrl(sheetUrl).getSheetByName(sheet); 4 5function doPost(e) { 6 7 //Zoom Webhookから受信 8 const jsonString = e.postData.getDataAsString(); 9 const data = JSON.parse(jsonString); 10 11 var event = data.event; 12 var topic = data.payload.object.topic; 13 var username = data.payload.object.participant.user_name; 14 15 //Zoomのeventを取得し、動作を決定する 16 ss.insertRows(1,1); 17 ss.getRange(1,1).setValue(jsonString); 18 var message = ""; 19 switch(event) { 20 case 'meeting.started': 21 message = '新しく' + topic + 'のZoomミーティングが開始されました'; 22 break; 23 24 case 'meeting.ended': 25 message = topic + 'のZoomミーティングが終了しました'; 26 break; 27 28 case 'meeting.participant_joined': 29 message = topic + 'のZoomミーティングに' + username + 'が参加しました'; 30 break; 31 32 case 'meeting.participant_left': 33 message = topic + 'のZoomミーティングから' + username + 'が退出しました'; 34 break; 35 36 default: 37 38 break; 39 40 } 41 42 sendSlack(event,message); 43 44} 45 46function sendSlack(meetingname,message){ 47 var token = "xoxp-000000000000-000000000000-000000000000-00000000000000000000000000000000"; //slackApp token 48 var slackApp = SlackApp.create(token);//SLack App 49 var channel="チャンネルの名前";//通知するチャンネル 50 51 return slackApp.postMessage(channel,message); 52 53 }
参考にしたページ
基本情報
→Zoomの会議室の参加、退出をGASで受け取ってSlackに送信する
同じ躓き:webhookのValidate(webhook→Feature→Event notification endpoint URL)が通らない
→【Zoom 2022】Zoom の会議開始を LINEアプリにお知らせする仕組みを Zoom Webhook と enebular で作る(Webhook のバリデーション対応も行いつつ)
GASでHMAC SHA 256を使う
→【GAS】HMAC SHA 256を使って、文字列をキーでハッシュ化する方法
Slack トークン作成
→Slackで新しいアプリを作成しOAuth Tokenを取得する
zoomマーケットプレイス
→zoom|App Marketplace
zoom Validateについて
→zoom|developers|Validate your webhook endpoint
