Вебхук — это созданный партнером обратный вызов HTTPS, который определяет, как ваш агент должен реагировать на сообщения и события. После настройки вебхука вы сможете начать получать сообщения и события .
Партнерские веб-перехватчики и агентские веб-перехватчики
Вы можете настроить свой вебхук либо на уровне партнера, либо на уровне агента.
- Ваш партнерский вебхук применяется ко всем агентам, которых вы поддерживаете. Если ваши агенты ведут себя похоже или у вас только один агент, используйте партнерский вебхук .
- Веб-перехватчики агентов применяются к отдельным агентам. Если вы управляете несколькими агентами с различным поведением, вы можете установить отдельный веб-перехватчик для каждого агента .
Если вы настроили как веб-перехватчик партнера, так и веб-перехватчик агента, веб-перехватчик агента имеет приоритет над конкретным агентом, а веб-перехватчик партнера применяется ко всем агентам, у которых нет собственного веб-перехватчика.
Настройка веб-перехватчика агента
Вы получаете сообщения, отправленные вашему агенту через веб-перехватчик вашего партнера. Если вы хотите, чтобы сообщения для конкретного агента поступали на другой веб-перехватчик, установите веб-перехватчик агента.
- Откройте консоль разработчика Business Communications и войдите в свою учетную запись Google партнера RBM.
- Нажмите на своего агента.
- Нажмите «Интеграции» .
- Для Webhook нажмите «Настроить» .
- В качестве URL-адреса конечной точки веб-перехватчика введите URL-адрес веб-перехватчика, начинающийся с https://.
- Обратите внимание на значение
clientToken
. Он нужен вам, чтобы убедиться, что получаемые вами сообщения исходят от Google . Настройте веб-перехватчик для приема запроса
POST
с указанным параметромclientToken
и отправки ответа200 OK
с текстовым значениемsecret
параметра в качестве тела ответа.Например, если ваш вебхук получает запрос
POST
со следующим содержимым тела{ "clientToken":"SJENCPGJESMGUFPY", "secret":"1234567890" }
тогда ваш вебхук должен подтвердить значение
clientToken
и, еслиclientToken
верен, вернуть ответ200 OK
с1234567890
в качестве тела ответа:// clientToken from Configure const myClientToken = "SJENCPGJESMGUFPY"; // Example endpoint app.post("/rbm-webhook", (req, res) => { const msg = req.body; if (msg.clientToken === myClientToken) { res.status(200).send(msg.secret); return; } res.send(400); });
В консоли разработчика нажмите «Подтвердить» . Когда RBM проверит ваш веб-перехватчик, диалоговое окно закроется.
Проверка входящих сообщений
Поскольку веб-перехватчики могут получать сообщения от любых отправителей, вам следует убедиться, что Google отправил входящие сообщения, прежде чем обрабатывать их содержимое.
Чтобы убедиться, что Google отправил полученное вами сообщение, выполните следующие действия:
- Извлеките заголовок
X-Goog-Signature
сообщения. Это хешированная копия полезных данных тела сообщения в кодировке Base64. - Base-64-декодирует полезную нагрузку RBM в элементе
message.body
запроса. - Используя клиентский токен веб-перехватчика (который вы указали при настройке веб-перехватчика) в качестве ключа, создайте SHA512 HMAC из байтов полезной нагрузки декодированного сообщения в формате Base64 и закодируйте результат в формате Base64.
- Сравните хэш
X-Goog-Signature
с созданным вами хешем.- Если хеши совпадают, вы подтверждаете, что сообщение отправлено Google.
Если хэши не совпадают, проверьте процесс хеширования на заведомо исправном сообщении.
Если ваш процесс хеширования работает правильно и вы получили сообщение, которое, по вашему мнению, было отправлено вам обманным путем, свяжитесь с нами .
Node.js
if ((requestBody.hasOwnProperty('message')) && (requestBody.message.hasOwnProperty('data'))) { // Validate the received hash to ensure the message came from Google RBM let userEventString = Buffer.from(requestBody.message.data, 'base64'); let hmac = crypto.createHmac('sha512', CLIENT_TOKEN); let data = hmac.update(userEventString); let genHash = data.digest('base64'); let headerHash = req.header('X-Goog-Signature'); if (headerHash === genHash) { let userEvent = JSON.parse(userEventString); console.log('userEventString: ' + userEventString); handleMessage(userEvent); } else { console.log('hash mismatch - ignoring message'); } } res.sendStatus(200);
Следующие шаги
После настройки веб-перехватчика ваш агент сможет получать сообщения с ваших тестовых устройств . Отправьте сообщение , чтобы подтвердить настройку.