GASを使ってzoomへの参加、退室をSlackに通知したい(zoom webhookのValidateを通したい)

実現したいこと

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をどのように反映するかが分かりません。

まとめ:お願い

  1. 番号リスト【GASを使ってzoomへの参加、退室をSlackに通知したい】です。
  2. 『Zoomの会議室の参加、退出をGASで受け取ってSlackに送信する』を参考に基本的な土台は作成済です。
  3. しかし、zoomのアップデートにより、webhookのValidate(webhook→Feature→Event notification endpoint URL)が通らない状態です。
  4. お願い:作成済の以下のコードを前提にどうすれば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

コメントを投稿

0 コメント