> ## Documentation Index
> Fetch the complete documentation index at: https://help.dingtalk.io/llms.txt
> Use this file to discover all available pages before exploring further.

# ビデオ会議の作成、検索、終了

> 企業アプリで会議 API を使用し、ビデオ会議の作成・終了・検索とクラウド録画を管理します

本ドキュメントでは、会議 API を呼び出してビデオ会議を作成する流れを説明します。まず社内アプリを作成し、次に会議が提供する API を使用して、ビデオ会議の作成、ビデオ会議の終了、ビデオ会議情報の一括検索を実現します。

## フロー概要

前提条件：[アプリの作成と設定](/ja/open/dingstart/create-application)のフローを完了します。

ステップ 1：アプリ認証情報を取得し、クライアント ID と Client Secret を取得します。

ステップ 2：API 権限をリクエストし、会議関連 API の権限をリクエストします。

ステップ 3：アプリのアクセス認証情報を取得します。[社内アプリのアクセストークンを取得する](/ja/open/development/obtain-the-access-token-of-an-internal-app)を参照し、API を呼び出す際は、アクセストークンによって呼び出し元の身元を認証します。

ステップ 4：サーバーサイドの会議関連 API を呼び出します。

1. サーバー API [ビデオ会議の作成](/ja/open/development/create-a-video-conference) を呼び出してビデオ会議を作成し、ビデオ会議の conferenceId を取得します。
2. ビデオ会議の conferenceId に基づき、サーバー API [ビデオ会議情報の一括検索](/ja/open/development/batch-query-of-video-conference-information) を呼び出して、ビデオ会議情報とメンバーリストを取得します。
3. ビデオ会議の conferenceId に基づき、サーバー API [ビデオ会議のクラウド録画を開始](/ja/open/development/video-conference-open-cloud-recording) を呼び出して、ビデオ会議のクラウド録画を開始します。
4. ビデオ会議の conferenceId に基づき、サーバー API [ビデオ会議のクラウド録画を開始](/ja/open/development/video-conference-open-cloud-recording) を呼び出して、ビデオ会議のクラウド録画を停止します。
5. ビデオ会議の conferenceId に基づき、サーバー API [ビデオ会議の終了](/ja/open/development/close-audio-video-conference) を呼び出して、ビデオ会議を終了します。
6. 会議録画情報を検索します。

   1. ビデオ会議の conferenceId に基づき、サーバー API [会議録画の詳細情報を検索](/ja/open/development/query-recording-information) を呼び出して、会議録画の録画者、録画開始時刻、録画継続時間などの情報を検索します。
   2. ビデオ会議の conferenceId に基づき、サーバー API [会議録画の動画情報を検索](/ja/open/development/queries-the-playback-information-about-a-recorded-cloud-video) を呼び出して、動画のダウンロード URL、動画ファイルサイズ、動画の長さなどの情報を検索します。
   3. ビデオ会議の conferenceId に基づき、サーバー API [会議録画のテキスト情報を検索](/ja/open/development/queries-the-text-information-about-cloud-recording) を呼び出して、会議録画のテキストコンテンツ、テキスト記録開始時刻、テキスト記録終了時刻などの情報を検索します。

## 前提条件

[アプリの作成と設定](/ja/open/dingstart/create-application)のフローを完了します。

## ステップ 1：アプリ認証情報の取得

1. 対象のアプリを選択して詳細ページに移動し、**ベーシック情報** > **認証情報とベーシック情報** をクリックします。
2. クライアント ID と Client Secret を取得します。

## ステップ 2：API 権限の追加

**開発設定** > **権限管理** をクリックし、権限検索ボックスに `VideoConference.Conference.Write` と `VideoConference.Conference.Read` をそれぞれ入力して、権限をリクエストします。

## ステップ 3：アプリのアクセストークン取得

<Warning>
  サーバー API の差異の詳細は、旧版 API VS 新版 API を参照してください。以下の API はすべてサーバー API を使用しており、SDK のダウンロード詳細はサーバーサイド SDK ダウンロードを参照してください。
</Warning>

ステップ 1 で取得したクライアント ID と Client Secret に基づき、アプリのアクセス認証情報を取得します。詳細は [社内アプリのアクセストークンを取得する](/ja/open/development/obtain-the-access-token-of-an-internal-app) を参照してください。

```java theme={"theme":{"light":"github-light","dark":"github-dark"}}
 public void getAccessToken() throws Exception {
        Config config = new Config();
        config.protocol = "https";
        config.regionId = "central";
        com.aliyun.dingtalkoauth2_1_0.Client client = new com.aliyun.dingtalkoauth2_1_0.Client(config);
        GetAccessTokenRequest accessTokenRequest = new GetAccessTokenRequest()
                .setAppKey("din*********hgn")
                .setAppSecret("9G_O************mBkhgGIO");
        GetAccessTokenResponse accessToken = client.getAccessToken(accessTokenRequest);
        System.out.println(JSON.toJSONString(accessToken.getBody()));
    }
```

## ステップ 4：サーバーサイドの会議関連 API を呼び出す

1. サーバー API [ビデオ会議の作成](/ja/open/development/create-a-video-conference) を呼び出してビデオ会議を作成し、ビデオ会議の conferenceId を取得します。

   ```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
   public void videoConferencesCreate() throws Exception {
           Config config = new Config();
           config.protocol = "https";
           config.regionId = "central";
           com.aliyun.dingtalkconference_1_0.Client client = new com.aliyun.dingtalkconference_1_0.Client(config);
           CreateVideoConferenceHeaders createVideoConferenceHeaders = new CreateVideoConferenceHeaders();
           createVideoConferenceHeaders.xAcsDingtalkAccessToken = "accessToken";
           CreateVideoConferenceRequest createVideoConferenceRequest = new CreateVideoConferenceRequest()
                   .setUserId("E9CS6X*******QiEiE")
                   .setConfTitle("202211071001ビデオ会議")
                   .setInviteCaller(true)
                   .setInviteUserIds(java.util.Arrays.asList(
                           "tXguN3*******URAiEiE"
                   ));
           try {
               CreateVideoConferenceResponse videoConferenceWithOptions = client.createVideoConferenceWithOptions(createVideoConferenceRequest, createVideoConferenceHeaders, new RuntimeOptions());
               System.out.println(JSON.toJSONString(videoConferenceWithOptions.getBody()));
           } catch (TeaException err) {
               if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                   // err には code と message 属性が含まれ、問題の特定に役立ちます
                   System.out.println(err.code);
                   System.out.println(err.message);
               }
           } catch (Exception _err) {
               TeaException err = new TeaException(_err.getMessage(), _err);
               if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                   // err には code と message 属性が含まれ、問題の特定に役立ちます
                   System.out.println(err.code);
                   System.out.println(err.message);
               }
           }
       }
   ```
2. ビデオ会議の conferenceId に基づき、サーバー API [ビデオ会議情報の一括検索](/ja/open/development/batch-query-of-video-conference-information) を呼び出して、ビデオ会議情報とメンバーリストを取得します。

### 説明

現在は進行中のビデオ会議のみ検索可能です。

```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
public void  videoConferencesInfo() throws Exception {
        Config config = new Config();
        config.protocol = "https";
        config.regionId = "central";
        com.aliyun.dingtalkconference_1_0.Client client = new com.aliyun.dingtalkconference_1_0.Client(config);
        QueryConferenceInfoBatchHeaders queryConferenceInfoBatchHeaders = new QueryConferenceInfoBatchHeaders();
        queryConferenceInfoBatchHeaders.xAcsDingtalkAccessToken = "accessToken";
        QueryConferenceInfoBatchRequest queryConferenceInfoBatchRequest = new QueryConferenceInfoBatchRequest()
                .setConferenceIdList(java.util.Arrays.asList(
                        "636866074147ec014a76e720"
                ));
        try {
            QueryConferenceInfoBatchResponse queryConferenceInfoBatchResponse = client.queryConferenceInfoBatchWithOptions(queryConferenceInfoBatchRequest, queryConferenceInfoBatchHeaders, new RuntimeOptions());
            System.out.println(JSON.toJSONString(queryConferenceInfoBatchResponse.getBody()));
        } catch (TeaException err) {
            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                // err には code と message 属性が含まれ、問題の特定に役立ちます
                System.out.println(err.message);
                System.out.println(err.code);
            }

        } catch (Exception _err) {
            TeaException err = new TeaException(_err.getMessage(), _err);
            if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                // err には code と message 属性が含まれ、問題の特定に役立ちます
                System.out.println(err.message);
                System.out.println(err.code);
            }

        }
    }
```

3. ビデオ会議の conferenceId に基づき、サーバー API [ビデオ会議のクラウド録画を開始](/ja/open/development/video-conference-open-cloud-recording) を呼び出して、ビデオ会議のクラウド録画を開始します。

   ```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
   public void cloudRecordsStart() throws Exception {
           Config config = new Config();
           config.protocol = "https";
           config.regionId = "central";
           com.aliyun.dingtalkconference_1_0.Client client = new com.aliyun.dingtalkconference_1_0.Client(config);
           StartCloudRecordHeaders startCloudRecordHeaders = new StartCloudRecordHeaders();
           startCloudRecordHeaders.xAcsDingtalkAccessToken = "accessToken";
           StartCloudRecordRequest startCloudRecordRequest = new StartCloudRecordRequest()
                   .setUnionId("E9CS6X*******QiEiE")
                   .setSmallWindowPosition("relative_right")
                   .setMode("speech");
           try {
               StartCloudRecordResponse startCloudRecordResponse = client.startCloudRecordWithOptions("636866074147ec014a76e720", startCloudRecordRequest, startCloudRecordHeaders, new RuntimeOptions());
               System.out.println(JSON.toJSONString(startCloudRecordResponse.getBody()));
           } catch (TeaException err) {
               if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                   // err には code と message 属性が含まれ、問題の特定に役立ちます
                   System.out.println(err.message);
                   System.out.println(err.code);
               }
           } catch (Exception _err) {
               TeaException err = new TeaException(_err.getMessage(), _err);
               if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                   // err には code と message 属性が含まれ、問題の特定に役立ちます
                   System.out.println(err.message);
                   System.out.println(err.code);
               }
           }
       }
   ```
4. ビデオ会議の conferenceId に基づき、サーバー API [ビデオ会議のクラウド録画を停止](/ja/open/development/video-conferencing-stops-cloud-recording) を呼び出して、ビデオ会議のクラウド録画を停止します。

   ```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
    public void cloudRecordsStop() throws Exception {
           Config config = new Config();
           config.protocol = "https";
           config.regionId = "central";
           com.aliyun.dingtalkconference_1_0.Client client = new com.aliyun.dingtalkconference_1_0.Client(config);
           StopCloudRecordHeaders stopCloudRecordHeaders = new StopCloudRecordHeaders();
           stopCloudRecordHeaders.xAcsDingtalkAccessToken = "accessToken";
           StopCloudRecordRequest stopCloudRecordRequest = new StopCloudRecordRequest()
                   .setUnionId("E9CS6X*******QiEiE");
           try {
               StopCloudRecordResponse stopCloudRecordResponse = client.stopCloudRecordWithOptions("636866074147ec014a76e720", stopCloudRecordRequest, stopCloudRecordHeaders, new RuntimeOptions());
               System.out.println(JSON.toJSONString(stopCloudRecordResponse.getBody()));
           } catch (TeaException err) {
               if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                   // err には code と message 属性が含まれ、問題の特定に役立ちます
                   System.out.println(err.message);
                   System.out.println(err.code);
               }
           } catch (Exception _err) {
               TeaException err = new TeaException(_err.getMessage(), _err);
               if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                   // err には code と message 属性が含まれ、問題の特定に役立ちます
                   System.out.println(err.message);
                   System.out.println(err.code);
               }
           }
       }
   ```
5. ビデオ会議の conferenceId に基づき、サーバー API [ビデオ会議の終了](/ja/open/development/close-audio-video-conference) を呼び出して、ビデオ会議を終了します。

   ```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
   public void  videoConferencesClose() throws Exception {
           Config config = new Config();
           config.protocol = "https";
           config.regionId = "central";
           com.aliyun.dingtalkconference_1_0.Client client = new com.aliyun.dingtalkconference_1_0.Client(config);        CloseVideoConferenceHeaders closeVideoConferenceHeaders = new CloseVideoConferenceHeaders();
           closeVideoConferenceHeaders.xAcsDingtalkAccessToken = "accessToken";
           CloseVideoConferenceRequest closeVideoConferenceRequest = new CloseVideoConferenceRequest()
                   .setUnionId("E9CS6X*******QiEiE");
           try {
               CloseVideoConferenceResponse closeVideoConferenceResponse = client.closeVideoConferenceWithOptions("636866074147ec014a76e720", closeVideoConferenceRequest, closeVideoConferenceHeaders, new RuntimeOptions());
               System.out.println(JSON.toJSONString(closeVideoConferenceResponse.getBody()));
           } catch (TeaException err) {
               if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                   // err には code と message 属性が含まれ、問題の特定に役立ちます
                   System.out.println(err.message);
                   System.out.println(err.code);
               }
           } catch (Exception _err) {
               TeaException err = new TeaException(_err.getMessage(), _err);
               if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                   // err には code と message 属性が含まれ、問題の特定に役立ちます
                   System.out.println(err.code);
                   System.out.println(err.message);
               }
           }
       }
   ```
6. 会議録画情報を検索します。

   1. ビデオ会議の conferenceId に基づき、サーバー API [会議録画の詳細情報を検索](/ja/open/development/query-recording-information) を呼び出して、会議録画の録画者、録画開始時刻、録画継続時間などの情報を検索します。

      ```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
       public void VideoDetailedInfos() throws Exception {
              Config config = new Config();
              config.protocol = "https";
              config.regionId = "central";
              com.aliyun.dingtalkconference_1_0.Client client = new com.aliyun.dingtalkconference_1_0.Client(config);
              QueryCloudRecordVideoHeaders queryCloudRecordVideoHeaders = new QueryCloudRecordVideoHeaders();
              queryCloudRecordVideoHeaders.xAcsDingtalkAccessToken = "accessToken";
              QueryCloudRecordVideoRequest queryCloudRecordVideoRequest = new QueryCloudRecordVideoRequest()
                      .setUnionId("E9CS6X*******QiEiE");
              try {
                  QueryCloudRecordVideoResponse queryCloudRecordVideoResponse = client.queryCloudRecordVideoWithOptions("636866074147ec014a76e720", queryCloudRecordVideoRequest, queryCloudRecordVideoHeaders, new RuntimeOptions());
                  System.out.println(JSON.toJSONString(queryCloudRecordVideoResponse.getBody()));
              } catch (TeaException err) {
                  if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                      // err には code と message 属性が含まれ、問題の特定に役立ちます
                      System.out.println(err.message);
                      System.out.println(err.code);
                  }

              } catch (Exception _err) {
                  TeaException err = new TeaException(_err.getMessage(), _err);
                  if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                      // err には code と message 属性が含まれ、問題の特定に役立ちます
                      System.out.println(err.message);
                      System.out.println(err.code);
                  }
              }
          }
      ```
   2. ビデオ会議の conferenceId に基づき、サーバー API [会議録画の動画情報を検索](/ja/open/development/queries-the-playback-information-about-a-recorded-cloud-video) を呼び出して、動画のダウンロード URL、動画ファイルサイズ、動画の長さなどの情報を検索します。

      ```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
       public void  videosPlayInfos() throws Exception {
              Config config = new Config();
              config.protocol = "https";
              config.regionId = "central";
              com.aliyun.dingtalkconference_1_0.Client client = new com.aliyun.dingtalkconference_1_0.Client(config);
              QueryCloudRecordVideoPlayInfoHeaders queryCloudRecordVideoPlayInfoHeaders = new QueryCloudRecordVideoPlayInfoHeaders();
              queryCloudRecordVideoPlayInfoHeaders.xAcsDingtalkAccessToken = "accessToken";
              QueryCloudRecordVideoPlayInfoRequest queryCloudRecordVideoPlayInfoRequest = new QueryCloudRecordVideoPlayInfoRequest()
                      .setUnionId("E9CS6X*******QiEiE")
                      .setMediaId("7665cd17********90991fe43bb")
                      .setRegionId("cn-shanghai");
              try {
                  QueryCloudRecordVideoPlayInfoResponse queryCloudRecordVideoPlayInfoResponse = client.queryCloudRecordVideoPlayInfoWithOptions("636866074147ec014a76e720", queryCloudRecordVideoPlayInfoRequest, queryCloudRecordVideoPlayInfoHeaders, new RuntimeOptions());
                  System.out.println(JSON.toJSONString(queryCloudRecordVideoPlayInfoResponse.getBody()));
              } catch (TeaException err) {
                  if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                      // err には code と message 属性が含まれ、問題の特定に役立ちます
                      System.out.println(err.message);
                      System.out.println(err.code);
                  }
              } catch (Exception _err) {
                  TeaException err = new TeaException(_err.getMessage(), _err);
                  if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                      // err には code と message 属性が含まれ、問題の特定に役立ちます
                      System.out.println(err.message);
                      System.out.println(err.code);
                  }
              }
          }
      ```
   3. ビデオ会議の conferenceId に基づき、サーバー API [会議録画のテキスト情報を検索](/ja/open/development/queries-the-text-information-about-cloud-recording) を呼び出して、会議録画のテキストコンテンツ、テキスト記録開始時刻、テキスト記録終了時刻などの情報を検索します。

      ```java lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
       public void  videosTextInfos() throws Exception {
              Config config = new Config();
              config.protocol = "https";
              config.regionId = "central";
              com.aliyun.dingtalkconference_1_0.Client client = new com.aliyun.dingtalkconference_1_0.Client(config);
              QueryCloudRecordTextHeaders queryCloudRecordTextHeaders = new QueryCloudRecordTextHeaders();
              queryCloudRecordTextHeaders.xAcsDingtalkAccessToken = "accessToken";
              QueryCloudRecordTextRequest queryCloudRecordTextRequest = new QueryCloudRecordTextRequest()
                      .setUnionId("E9CS6X*******QiEiE")
                      .setStartTime(1000L)
                      .setDirection("0")
                      .setMaxResults(200L);
                      // 初回検索の場合、このパラメータは省略可能です
                      //.setNextToken(0L);
              try {
                  QueryCloudRecordTextResponse queryCloudRecordTextResponse = client.queryCloudRecordTextWithOptions("636866074147ec014a76e720", queryCloudRecordTextRequest, queryCloudRecordTextHeaders, new RuntimeOptions());
                  System.out.println(JSON.toJSONString(queryCloudRecordTextResponse.getBody()));
              } catch (TeaException err) {
                  if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                      // err には code と message 属性が含まれ、問題の特定に役立ちます
                      System.out.println(err.message);
                      System.out.println(err.code);
                  }
              } catch (Exception _err) {
                  TeaException err = new TeaException(_err.getMessage(), _err);
                  if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
                      // err には code と message 属性が含まれ、問題の特定に役立ちます
                      System.out.println(err.message);
                      System.out.println(err.code);
                  }
              }
          }
      ```
