web-dev-qa-db-ja.com

Google Calendar API:イベントの作成時にhangoutsMeetを含めるようにsetAllowedConferenceSolutionTypesを設定できません

PHP用のGoogle APIクライアントライブラリ を使用して、新しいカレンダーイベントを作成し、hangoutsMeet会議を添付しようとしています。そうしようとすると、Invalid conference type value

同じコードを使用して、新しいイベントを作成し、eventHangout会議を添付できます。

エラーが発生する理由を理解しています。APIによると、私のカレンダーはeventHangout会議タイプのみをサポートしています。

<<<<編集#1 2020年4月3日

Andres Duarte の回答に続く説明:これは、APIを介してイベントを作成しようとしたときにのみ制限として表示されます。 Googleカレンダーインターフェースを使用して手動でイベントを作成すると、amでGoogle Meetを追加できます。実際、それがドロップダウンに表示される唯一の会議オプションです。

>>>>

私の質問は、APIを使用して、hangoutsMeet会議を含むイベントを作成できるように、カレンダー設定を(APIの有無にかかわらず)更新するにはどうすればよいですか

これが私が試したことを示すサンプルコードです:

<<<<編集#2 2020年4月3日

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
Mo I

イベントを作成する前に、サービスアカウントの認証情報を使用してG Suiteドメインのユーザーを偽装する必要があります。これにより、hangoutsMeet会議タイプのイベントを作成できるようになります。これは、G Suiteユーザーのみが利用できます。 。

サービスアカウントにドメイン全体の委任がある場合でも、 documentation のG Suiteユーザーと同じ権限はありません。

ユーザーアカウントとは異なり、サービスアカウントはG Suiteドメインのメンバーではありません。

あなたのケースでは、それがeventHangout会議タイプでのみイベントを作成できる理由です。これは event リソースのドキュメントで述べられているように、消費者向けです:

可能な値は次のとおりです。

消費者向けハングアウトの「eventHangout」( http://hangouts.google.com

G Suiteユーザー向けの従来のハングアウトの場合は「eventNamedHangout」( http://hangouts.google.com

Hangouts Meetの「hangoutsMeet」( http://meet.google.com

3P会議プロバイダーの「addOn」

1
Andres Duarte

見たところ、リクエストにrequestIDを追加するのを忘れていました。

リソース: ビデオおよび電話会議をイベントに追加

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

createRequestに新しく生成されたrequestIdを提供することで、イベントの新しい会議を作成できます。これはランダムstring。会議は非同期に作成されますが、いつでもリクエストのステータスを確認して、何が起こっているのかをユーザーに知らせることができます。

これがお役に立てば幸いです。

0
hooman182