API Календаря Google: Невозможно задать значениеAllowedConferenceSolutionTypes для включения HangoutsMeet при создании события - PullRequest
1 голос
/ 02 апреля 2020

Используя клиентскую библиотеку API Google * 1001 для PHP, я пытаюсь создать новое событие календаря и прикрепить конференцию hangoutsMeet. Когда я пытаюсь это сделать, я получаю сообщение об ошибке Invalid conference type value.

. Используя тот же код, я могу создать новое событие и присоединить конференцию eventHangout.

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

<<<< edit # 1 3 апреля 2020 </strong>

Уточнение после ответа Andres Duarte : это появляется только как ограничение, когда я пытаюсь создать событие через API. Когда я вручную создаю событие с помощью интерфейса Календаря Google, я am могу добавить Google Meet. Фактически, это единственный вариант конференц-связи, который отображается в раскрывающемся списке.

>>>>

У меня вопрос, , как я могу обновить настройки календаря? (с или без API), чтобы я мог использовать API для создания событий с прикрепленными hangoutsMeet конференциями ?

Вот пример кода, демонстрирующий то, что я пробовал:

<<<< правка № 2 от 3 апреля 2020 года </strong>

Уточнение после ответа hooman182 : я обновил пример кода, чтобы продемонстрировать, что я настраиваю requestId правильно, используя строку.

>>>>

try {


    // fetch the calendar
    $calendar = 'myCalendar';
    $calendarObject = $service->calendars->get($calendar);
    echo "<pre>";
    echo "\nORIGINAL *******************************************************\n\n";
    var_dump($calendarObject->getConferenceProperties()->getAllowedConferenceSolutionTypes());


    // set the allowed conferences solutions type
    $calendarObject->getConferenceProperties()->setAllowedConferenceSolutionTypes(
        array(
            "hangoutsMeet",
            "eventHangout",
            "eventNamedHangout",
        )
    );
    echo "\nUPDATED *******************************************************\n\n";
    var_dump($calendarObject->getConferenceProperties()->getAllowedConferenceSolutionTypes());


    // save the changes to the calendar
    $calendarObject = $service->calendars->patch($calendar, $calendarObject);;
    echo "\nSAVED *********************************************************\n\n";
    var_dump($calendarObject->getConferenceProperties()->getAllowedConferenceSolutionTypes());


    // add a createRequest to my event
    $event->setConferenceData(new Google_Service_Calendar_ConferenceData(array(
        'createRequest' => array(
            'requestId' => md5(time()),
            'conferenceSolutionKey' => array(
                'type' => 'hangoutsMeet',
            )
        )
    )));


    // save the event
    $event = $service->events->insert($calendar, $event, array(
        'conferenceDataVersion' => 1
    ));


} catch (Google_Service_Exception $e) {

    echo "\nERRORS ********************************************************\n\n";
    var_dump($e->getErrors());
    die;

}

И вот результат выше:

ORIGINAL *******************************************************

array(1) {
  [0]=>
  string(12) "eventHangout"
}

UPDATED *******************************************************

array(3) {
  [0]=>
  string(12) "hangoutsMeet"
  [1]=>
  string(12) "eventHangout"
  [2]=>
  string(17) "eventNamedHangout"
}

SAVED *********************************************************

array(1) {
  [0]=>
  string(12) "eventHangout"
}

ERRORS ********************************************************

array(1) {
  [0]=>
  array(3) {
    ["domain"]=>
    string(6) "global"
    ["reason"]=>
    string(7) "invalid"
    ["message"]=>
    string(30) "Invalid conference type value."
  }
}

Дополнительные сведения:

  • Я использую служебную учетную запись с активированным делегированием домена

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Перед созданием события необходимо использовать учетные данные учетной записи службы для олицетворения пользователя в вашем домене G Suite. Таким образом, вы сможете создавать события с hangoutsMeet типом конференции, который доступен только для пользователей G Suite. .

Несмотря на то, что ваша служебная учетная запись имеет делегирование по всему домену, она не обладает теми же привилегиями, что и пользователь G Suite, из документации :

Учетные записи служб не являются членами вашего домена G Suite, в отличие от учетных записей пользователей.

В этом случае вы можете создавать события только с типом конференции eventHangout, предназначенным для потребителей. как указано в документации для ресурса :

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

"EventHangout" для видеовстреч для потребителей (http://hangouts.google.com )

"eventNamedHangout" для classi c Hangouts для пользователей G Suite (http://hangouts.google.com)

"HangoutsMeet" для Hangouts Meet ( http://meet.google.com)

" addOn "для провайдеров 3P

0 голосов
/ 03 апреля 2020

Вы забыли добавить requestID в свой запрос.

Ресурс: Добавить видео и телефонные конференции к событиям

 "conferenceData": {
    "createRequest": {
      "conferenceSolutionKey": {
        "type": "eventHangout"
      },
      "requestId": "yourcodehere"
    }
  }

Вы можете создать новая конференция для события, предоставив createRequest с недавно сгенерированным requestId , который может быть случайной строкой . Конференции создаются асинхронно, но вы всегда можете проверить состояние своего запроса, чтобы пользователи знали, что происходит.

Надеюсь, эта помощь.

...