Чат Hangouts: как получить project_id или client_id во входящем запросе события? - PullRequest
0 голосов
/ 17 января 2020

Я установил полностью работающего чат-бота в чате видеовстреч, организованного специализированным веб-сервером. Теперь я хотел бы, чтобы этот веб-сервер мог взаимодействовать с другими созданными мной ботами Hangouts и перенаправлять некоторые запросы на некоторые из моих других серверов, которые должны будут знать, какие боты инициировали событие. С другим провайдером, таким как Slack, app_id предоставляется в данных запроса события. Но с тусовками это не тот случай. Я не смог найти никаких данных в теле запроса или заголовках, которые представляют либо project_id, либо client_id. Проще говоря, мой вопрос: «Как определить бота Hangouts, который отправляет мне запрос на событие?» :)

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Через месяц я наконец-то нашел время ответить на мой вопрос:)

Чтобы определить проект Hangouts, который вызывает ваш сервер, при получении события из чата Hangouts вы найдете во входящем запросе заголовок Authorization, значение которого примерно равно Bearer abcd1234. Если вы декодируете этот JWToken (ie, abcd1234 в нашем примере), в результирующих данных у вас будет поле aud, которое в точности соответствует «номеру проекта» вашего приложения Hangouts. Этот «номер проекта» можно найти по адресу «https://console.cloud.google.com/home/dashboard?project=referenceofyourprojecthere».

0 голосов
/ 20 января 2020

Ответ на запрос события будет содержать Экземпляр события в своем теле, одно из его полей будет Пользовательский объект . Этот объект User будет содержать поле name, которое будет представлять идентификатор пользователя (будь то человек или бот).

Это будет выглядеть так:

{
  "name": "users/<id>",
  "displayName": "<name that appears in the chat>",
  "type": "BOT" 
}
...