Не удается создать конференцию с помощью стороннего решения для конференций из раскрывающегося списка решений для конференций в Календаре Google.

Я создаю надстройку G-Suite для интеграции решения для конференций третьей части с событиями Календаря Google. Я добавил выбранное стороннее решение для конференций в файл манифеста:

{
  "timeZone": "America/Denver",
  "dependencies": {
    "enabledAdvancedServices": [{
      "userSymbol": "Calendar",
      "serviceId": "calendar",
      "version": "v3"
    }]
  },
  "exceptionLogging": "STACKDRIVER",
  "oauthScopes": [
    "https://www.googleapis.com/auth/userinfo.email",
    "https://www.googleapis.com/auth/admin.directory.user.readonly",
    "https://www.googleapis.com/auth/calendar",
    "https://www.googleapis.com/auth/calendar.addons.execute",
    "https://www.googleapis.com/auth/calendar.addons.current.event.read",
    "https://www.googleapis.com/auth/calendar.addons.current.event.write"
  ],
  "urlFetchWhitelist": [],
  "runtimeVersion": "V8",
  "addOns": {
    "common": {
      "name": "Conference Solution",
      "logoUrl": "https://imagesite.com/companyLogo",
      "layoutProperties": {
        "primaryColor": "#4285f4",
        "secondaryColor": "#ea4335"
      },
      "homepageTrigger": {
        "runFunction": "onHomePage"
      }
    },
    "calendar": {
      "homepageTrigger": {
        "runFunction": "onHomePage"
      },
      "eventOpenTrigger": {
        "runFunction": "onCalendarEventOpen"
      },
      "eventUpdateTrigger": {
        "runFunction": "calendarUpdated"
      },
      "currentEventAccess": "READ_WRITE",
      "conferenceSolution": [{
        "onCreateFunction": "createConference",
        "id": "123",
        "name": "Meeting Conference Solution",
        "logoUrl": "https://someUrl.com/conferenceSolutionLogo.jpg"
      }]
}

Но когда я выбираю свое решение для конференции 3-й части, я получаю код ответа 500 и ошибку, что конференция не может быть создана.

УПД. Текст ответа:

[13,"Internal error encountered."]

URL-адрес запроса:

https://calendar-pa.clients6.google.com/v1/calendar/[email protected]/event/2lhlppothipf43ggb9krfabcef/conferencing?alt=protojson&key=AIzaSyAJV0pH9dpVwdNZeLajIGsIpjcPu3tVgAE

Тело запроса:

[
  [ 
    "[email protected]",
    "2lhlppothipf43ggb9krfabcef"
  ],
  null,
  null,
  [ 
    4,
    [ 
      null,
      "AKfycbzrJeytVGp3C8hhST2QMETrVdaXPG84CNnIXRQtwJUv",
      "1"
    ]
  ]
]

функция createConference:

function createConference(e) {
  var dataBuilder = ConferenceDataService.newConferenceDataBuilder();
  var confParams = dataBuilder.newConferenceParameter()
    .setKey('conferenceId')
    .setValue('addOn');

  confParams.setKey("key")
    .setValue(JSON.stringify({
      type: "addOn"
    }));

  dataBuilder.setConferenceSolutionId("123");
  dataBuilder.setParameters(confParams);
  return dataBuilder.build();
}

person Ilia Yanovoy    schedule 13.04.2020    source источник
comment
Не могли бы вы опубликовать полную ошибку?   -  person Rafa Guillermo    schedule 13.04.2020
comment
@RafaGuillermo, я обновил пост. Это достаточно?   -  person Ilia Yanovoy    schedule 13.04.2020
comment
Ошибка 400 и Внутренняя ошибка не соответствуют друг другу; Вы уверены, что это не две разные ошибки? 400 подразумевает наличие проблемы с разрешением/запретом доступа, тогда как внутренние ошибки — 5XX.   -  person Rafa Guillermo    schedule 13.04.2020
comment
@RafaGuillermo, ты совершенно прав. Виноват. Я обнаружил, что у меня ошибка выполнения, и после этого я получаю 500 вместо 400. Я отредактировал свой вопрос. Извините, что запутал.   -  person Ilia Yanovoy    schedule 14.04.2020
comment
Можешь поделиться всем сценарием? Звонок, который вы делаете, и то, как вы его делаете, я не могу понять тело вашего запроса, не зная методов, которые вы вызываете.   -  person Rafa Guillermo    schedule 14.04.2020
comment
@RafaGuillermo, я не отправляю запрос напрямую. Он встроен в функциональность календаря. Я только что добавил новую опцию для раскрывающегося списка решений конференции в манифесте.   -  person Ilia Yanovoy    schedule 14.04.2020
comment
Почему вы пытаетесь сделать это в манифесте? Где вы нашли документацию для этого?   -  person Rafa Guillermo    schedule 14.04.2020
comment
@RafaGuillermo developers.google.com/gsuite/ add-ons/how-tos/ Кроме того, похоже, что надстройки ZOOM и Webex работают аналогичным образом. Потому что я могу выбрать решение для конференции из Calendar Dropdaown, как указано в требованиях.   -  person Ilia Yanovoy    schedule 14.04.2020
comment
В ресурсе манифеста календаря не указано conferenceSolution в качестве поля. Каков ваш рабочий процесс? Чего вы пытаетесь достичь здесь?   -  person Rafa Guillermo    schedule 20.04.2020
comment
@RafaGuillermo Я пытаюсь создать надстройку, которая добавляет решение для конференций третьей части, такое как ZOOM или Webex. Здесь ссылка написано, что у нас есть массив ConferenceSolutions в файле манифеста.   -  person Ilia Yanovoy    schedule 21.04.2020
comment
Это стороннее решение, созданное вами?   -  person Rafa Guillermo    schedule 21.04.2020
comment
@RafaGuillermo, нет, это не мое. Но как это повлияет на недокументированные возможности?   -  person Ilia Yanovoy    schedule 21.04.2020
comment
Извините, я неправильно прочитал часть документации. Не могли бы вы поделиться кодом карты с раскрывающимся списком в вашем дополнении? И можете ли вы объяснить рабочий процесс вашего дополнения? Я хочу попробовать воспроизвести в своей среде.   -  person Rafa Guillermo    schedule 21.04.2020
comment
@RafaGuillermo, нет проблем. Я просто добавляю код выше в манифест и получаю новый элемент в списке решений конференции, когда я создаю новое событие в своем календаре скриншот Но когда я выбираю свое решение для конференции, я получаю сообщение об ошибке выше.   -  person Ilia Yanovoy    schedule 21.04.2020
comment
У вас установлено дополнение конференции?   -  person Rafa Guillermo    schedule 21.04.2020
comment
@RafaGuillermo, мое дополнение к конференции, которое я создаю или какое?   -  person Ilia Yanovoy    schedule 21.04.2020
comment
Дополнение к конференции; например, у вас есть Zoom в раскрывающемся списке, у вас есть сторонняя конференция, добавленная -он установлен?   -  person Rafa Guillermo    schedule 21.04.2020
comment
@RafaGuillermo, это моя цель. Я хочу создать надстройку, например ZOOM   -  person Ilia Yanovoy    schedule 21.04.2020
comment
Я не понимаю it is my target. Какое у вас стороннее решение для проведения конференций? Он установлен для вашего домена?   -  person Rafa Guillermo    schedule 21.04.2020
comment
@RafaGuillermo, it is my target, я имею в виду, что это моя задача. Где я должен установить его? У меня есть собственное приложение и API для создания события в моем решении для конференций. Это достаточно?   -  person Ilia Yanovoy    schedule 21.04.2020
comment
Но в вашем манифесте не указано, что делать, когда вы выбираете решение для конференции; вы только предоставляете ему имя и логотип. Поставщик решений для конференций должен интегрировать G Suite, чтобы вы могли использовать это как функцию. Если, например, вы хотите иметь раскрывающийся список для Zoom, вы должны установить Дополнение Zoom для G Suite. Вы должны сделать то же самое для другого решения для конференции.   -  person Rafa Guillermo    schedule 21.04.2020
comment
@RafaGuillermo спасибо за поддержку и ответ. В файле манифеста я написал "onCreateFunction": "createConference" и не знаю, что G-Suite хочет получить от функции createConference. Где я могу прочитать, как правильно обрабатывать событие createConference?   -  person Ilia Yanovoy    schedule 21.04.2020
comment
Где вы находите документацию для onCreateFunction?   -  person Rafa Guillermo    schedule 21.04.2020
comment
@RafaGuillermo, я нашел это под вопросом в вопросе StackOverflow. Но я не могу найти его в документации G-suite.   -  person Ilia Yanovoy    schedule 21.04.2020
comment
Как я упоминал ранее, conferenceSolutions в манифесте существует, но без какой-либо информации или типов.   -  person Ilia Yanovoy    schedule 21.04.2020
comment
Вы разрабатываете полноценное дополнение к календарю конференций? Пожалуйста, предоставьте свой код для вашей функции createConference. Вы должны использовать это в сочетании с службой данных конференций приложений. Скрипт.   -  person Rafa Guillermo    schedule 22.04.2020
comment
@RafaGuillermo, я планировал использовать этот код, но получаю сообщение об ошибке ReferenceError: ConferenceDataService is not defined как SO вопрос   -  person Ilia Yanovoy    schedule 22.04.2020
comment
Я не вижу этот фрагмент, обновите свой вопрос, указав соответствующий код.   -  person Rafa Guillermo    schedule 22.04.2020
comment
Давайте продолжим обсуждение в чате.   -  person Rafa Guillermo    schedule 24.04.2020


Ответы (1)


Похоже, это ошибка!

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

введите здесь описание изображения

Конференция не запускается, и в журналах Stackdriver можно увидеть следующую ошибку:

ReferenceError: ConferenceDataService is not defined.

Я выполнил поиск, и кажется, что в системе отслеживания проблем Google уже есть отчет, в котором подробно описывается такое же поведение:

Кажется, что Google знает об этой проблеме, но вы можете нажать ☆ рядом с номером проблемы в левом верхнем углу на вышеупомянутой странице, что позволит Google узнать, что больше людей сталкиваются с этой проблемой, и поэтому вероятность того, что проблема будет обнаружена, выше.

Я надеюсь, что это полезно для вас!


Обновление 2020.04.24:

Похоже, что это было исправлено со стороны Google в соответствии с комментарием, оставленным по приведенной выше ссылке на средство отслеживания проблем. Чтобы подтвердить, я проверил метод из интерфейса Apps Script, и сейчас заполняются предложения по методу low-and-behold:

введите здесь описание изображения

person Rafa Guillermo    schedule 22.04.2020
comment
Кажется, сегодня утром произошли изменения в связанной проблеме системы отслеживания проблем, и теперь это работает. Я обновил свой ответ, чтобы отразить это. @ИльяЯновой - person Rafa Guillermo; 24.04.2020