Я интегрирую Zoom API с моим приложением Firebase, и для этого я полагаюсь на предварительно сделанные веб-заезды Zooms для запуска функции HTTP на моем Firebase для различных событий, таких как «встреча началась» и «встреча завершилась».Справочник по API Zoom: https://marketplace.zoom.us/docs/guides/webhooks
Это функция Google Cloud, которую вызывает API Zoom:
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, не заключено в тег «data: {}», как того требуют функции Google Cloud.Я нашел решение этой проблемы, если вы можете контролировать полезную нагрузку здесь: Dart json.encode не кодирует, как требуется Firebase Function .
Моя проблема в том, что я не могу изменить запрос, который отправляет API Zoom.Можно ли как-нибудь принять запрос в функции Google Cloud?Или есть ли способ изменить формат запроса, отправленного Zoom?Я не могу найти ссылки ни для одного из них.
Одним из возможных решений было бы настроить другой сервер, который получает запрос с помощью Zoom, отформатировать его в соответствии со спецификациями функций Google Cloud, а затем передать его в мое облако Google.функция.Однако я хотел бы избежать выхода из экосистемы Google Cloud.
Решается ли эта проблема на платформе Google Cloud?