Получить HangoutLink после обновления api

#node.js #google-api #google-calendar-api

#node.js #google-api #google-calendar-api

Вопрос:

Вот как я извлекаю данные из google-calendar-api: я недавно добавил conferenceDataVersion=1 , но ничего не изменил.

 const uri = `${googleapiURL}/calendar/v3/calendars/${calendarId}/events?conferenceDataVersion=1`;

const response = await rp.post({
  uri,
  headers: {
    authorization: `Bearer ${token}`,
  },
  body,
  json: true,
  simple: false,
  resolveWithFullResponse: true,
});
 

Раньше я мог получить hangout следующим образом:

 const link = response.body.hangoutLink,
 

Но теперь у нас больше нет hangoutLink атрибута внутри body. Как я мог это получить?

Я читал документацию о параметрах запроса тела запроса. Существует conferenceData , но нет примера того, как его использовать.

Комментарии:

1. Когда событие будет вставлено, можете ли вы попробовать просмотреть его в веб-интерфейсе календаря Google и проверить, видите ли вы опцию Google Meet на мероприятии, подобную этому образцу изображения ?

2. @IrvinJayG. Привет! Спасибо за твою помощь, чувак. Встреча не была создана, у меня не было кнопки «присоединиться», как показано на вашем изображении. Официальная документация немного сбивает с толку, но я обнаружил, что мне нужно добавить conferenceData объект.

Ответ №1:

После сентября 2020 года. API календаря Google изменен, и встречи больше не создаются по умолчанию. Нам нужно явно «сообщить», что мы хотим создать встречу (ссылка на hangout).

1 — Сначала нам нужно добавить параметр запроса conferenceDataVersion=1

2 — Нам нужно добавить новый объект в тело запроса.

 conferenceData: {
  createRequest: {
    conferenceSolutionKey: {
      type: 'hangoutsMeet',
    },
    requestId: <<randomString>>,
  },
}
 

Дополнительная информация:

Согласно документации для событий: вставка и повторное представление ресурса события:

conferenceDataVersion : integer

Номер версии данных конференции, поддерживаемых клиентом API. Версия 0 не предполагает поддержки данных конференции и игнорирует данные конференции в теле события. Версия 1 включает поддержку копирования ConferenceData, а также для создания новых конференций с использованием поля createRequest conferenceData. Значение по умолчанию равно 0. Допустимыми значениями являются 0 to 1 , включительно.


conferenceData.createRequest : nested object

Запрос на создание новой конференции и прикрепление ее к событию. Данные генерируются асинхронно. Чтобы узнать, присутствуют ли данные, проверьте status поле.

Требуется либо conferenceSolution и хотя бы один entryPoint , либо createRequest .


conferenceData.createRequest.conferenceSolutionKey.type : string

Тип решения для конференции.

Если клиент сталкивается с незнакомым или пустым типом, он все равно должен иметь возможность отображать точки входа. Однако он должен запретить изменения.

Возможные значения:

  • « eventHangout » для Hangouts для потребителей (http://hangouts.google.com ) // УСТАРЕЛ
  • « eventNamedHangout » для классических Hangouts для пользователей G Suite (http://hangouts.google.com ) // УСТАРЕЛ
  • « hangoutsMeet » для Google Meet (http://meet.google.com )
  • « addOn » для поставщиков конференций 3P

conferenceData.createRequest.requestId : string

Уникальный идентификатор, сгенерированный клиентом для этого запроса. Клиенты должны восстанавливать этот идентификатор для каждого нового запроса. Если предоставленный идентификатор такой же, как и для предыдущего запроса, запрос игнорируется.

С помощью этой информации мы можем сгенерировать запрос на создание события календаря со ссылкой на встречу в качестве решения конференции.

Моим решением для случайной строки было сгенерировать uuid.