5

Zoom API を Firebase アプリに統合しています。そのために、Zooms の事前に作成された Webhook を使用して、「会議の開始」や「会議の終了」などのさまざまなイベントのために、Firebase で HTTP 関数を実行しています。Zoom API リファレンス: https://marketplace.zoom.us/docs/guides/webhooks

これは、Zoom API が呼び出している Google Cloud 関数です。

exports.zoomTestA = functions.https.onCall((req, res) => {
    console.log(req);
    let data = req.body;
    var xmlData = data.toString();
    console.log(xmlData);
});

Zoom から送信されたペイロードは次のとおりです。

{
  "event": "meeting.ended",
  "payload": {
    "account_id": "LTf-KjgUTR2df-knT8BVEw",
    "object": {
      "duration": 0,
      "start_time": "2019-05-07T14:02:51Z",
      "timezone": "",
      "topic": "Alexander Zoom Meeting",
      "id": "864370042",
      "type": 1,
      "uuid": "2h/SWVrrQMu7fcbpLUly3g==",
      "host_id": "Ty6ykNolSU2k1N4oc0NRcQ"
    }
  }

これにより、Google Cloud コンソールに次のエラーが表示されます。

Request body is missing data. { event: 'meeting.ended',
  payload: 
   { account_id: 'LTf-KjgUTR2df-knT8BVEw',
     object: 
      { duration: 0,
        start_time: '2019-04-30T14:23:44Z',
        timezone: '',
        topic: 'Alexander\'s Zoom Meeting',
        id: '837578313',
        type: 1,
        uuid: 'WotbHO3RRpSviETStKEGYA==',
        host_id: 'Ty6ykNolSU2k1N4oc0NRcQ' } } }

Zoom が送信するリクエスト ボディは、Google Cloud 機能で必要な「data: {}」タグでラップされていません。ここでペイロードを制御できる場合、この問題の解決策を見つけました: Dart json.encode is not encoding as needed by Firebase Function

私の問題は、Zoom API が送信するリクエストを変更できないことです。Google Cloud 機能で引き続きリクエストを受け入れる方法はありますか? または、Zoom から送信されるリクエストの形式を変更する方法はありますか? どちらの参照も見つかりません。

考えられる解決策の 1 つは、Zoom からのリクエストを受信する別のサーバーをセットアップし、それを Google Cloud 関数の仕様にフォーマットしてから、私の Google Cloud 関数に渡すことです。ただし、Google Cloud エコシステムから抜け出すことは避けたいと考えています。

この問題は Google Cloud プラットフォームで解決できますか?

4

1 に答える 1