> ## 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.

# Membuat, mengkueri, dan menutup rapat video

> Pelajari alur lengkap penggunaan Aplikasi internal untuk memanggil API rapat guna membuat, mengkueri massal, dan menutup Rapat Video di DingTalk — mencakup kredensial aplikasi, izin API, dan pengambilan accessToken.

Dokumen ini menjelaskan cara memanggil API rapat untuk membuat Rapat Video dan melakukan operasi terkait. Pertama, buat Aplikasi internal, lalu gunakan API rapat untuk membuat Rapat Video, menutup Rapat Video, dan mengkueri informasi Rapat Video secara massal.

## Ikhtisar proses

Prasyarat: Selesaikan proses [pembuatan dan konfigurasi aplikasi](/id/open/dingstart/create-application).

Langkah 1: Peroleh kredensial aplikasi untuk mendapatkan client ID dan Client Secret.

Langkah 2: Ajukan izin API untuk API terkait rapat.

Langkah 3: Peroleh kredensial akses aplikasi dengan mengikuti [Memperoleh access token Aplikasi internal](/id/open/development/obtain-the-access-token-of-an-internal-app). Access token digunakan untuk mengautentikasi pemanggil saat memanggil API.

Langkah 4: Panggil Server API terkait rapat.

1. Panggil Server API [Membuat Rapat Video](/id/open/development/create-a-video-conference) untuk membuat Rapat Video dan memperoleh `conferenceId` rapat.
2. Berdasarkan `conferenceId`, panggil Server API [Kueri massal informasi Rapat Video](/id/open/development/batch-query-of-video-conference-information) untuk memperoleh informasi rapat dan daftar anggota.
3. Berdasarkan `conferenceId`, panggil Server API [Memulai perekaman cloud untuk Rapat Video](/id/open/development/video-conference-open-cloud-recording) untuk memulai perekaman cloud.
4. Berdasarkan `conferenceId`, panggil Server API [Memulai perekaman cloud untuk Rapat Video](/id/open/development/video-conference-open-cloud-recording) untuk menghentikan perekaman cloud.
5. Berdasarkan `conferenceId`, panggil Server API [Menutup Rapat Video](/id/open/development/close-audio-video-conference) untuk menutup rapat.
6. Kueri informasi rekaman rapat.

   1. Berdasarkan `conferenceId`, panggil Server API [Kueri detail rekaman rapat](/id/open/development/query-recording-information) untuk mengambil informasi seperti perekam, waktu mulai perekaman, dan durasi perekaman.
   2. Berdasarkan `conferenceId`, panggil Server API [Kueri informasi video rekaman rapat](/id/open/development/queries-the-playback-information-about-a-recorded-cloud-video) untuk mengambil informasi seperti URL unduh video, ukuran file video, dan durasi video.
   3. Berdasarkan `conferenceId`, panggil Server API [Kueri informasi teks rekaman rapat](/id/open/development/queries-the-text-information-about-cloud-recording) untuk mengambil informasi seperti konten teks yang direkam, waktu mulai rekaman teks, dan waktu akhir rekaman teks.

## Prasyarat

Selesaikan proses [pembuatan dan konfigurasi aplikasi](/id/open/dingstart/create-application).

## Langkah 1: Peroleh kredensial aplikasi

1. Pilih aplikasi target untuk membuka halaman detail aplikasi, lalu klik **Basic information** > **Credentials and basic information**.
2. Peroleh client ID dan Client Secret.

## Langkah 2: Tambahkan izin API

Klik **Development configuration** > **Kelola izin**. Di kotak pencarian izin, masukkan `VideoConference.Conference.Write` dan `VideoConference.Conference.Read` secara berurutan, lalu ajukan izin.

## Langkah 3: Peroleh access token aplikasi

<Warning>
  Untuk perbedaan antara Server API, lihat API lama vs. API Baru. Semua API berikut menggunakan Server API. Untuk mengunduh SDK, lihat Unduh SDK Sisi server.
</Warning>

Dengan menggunakan client ID dan Client Secret dari Langkah 1, peroleh access token aplikasi dengan mengikuti [Memperoleh access token Aplikasi internal](/id/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()));
    }
```

## Langkah 4: Panggil Server API terkait rapat

1. Panggil Server API [Membuat Rapat Video](/id/open/development/create-a-video-conference) untuk membuat Rapat Video dan memperoleh `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 Rapat Video")
                   .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 berisi atribut code dan message, yang membantu developer melacak masalah
                   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 berisi atribut code dan message, yang membantu developer melacak masalah
                   System.out.println(err.code);
                   System.out.println(err.message);
               }
           }
       }
   ```
2. Berdasarkan `conferenceId`, panggil Server API [Kueri massal informasi Rapat Video](/id/open/development/batch-query-of-video-conference-information) untuk memperoleh informasi rapat dan daftar anggota.

### Catatan

Hanya Rapat Video yang sedang berlangsung yang dapat dikueri.

```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 berisi atribut code dan message, yang membantu developer melacak masalah
                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 berisi atribut code dan message, yang membantu developer melacak masalah
                System.out.println(err.message);
                System.out.println(err.code);
            }

        }
    }
```

3. Berdasarkan `conferenceId`, panggil Server API [Memulai perekaman cloud untuk Rapat Video](/id/open/development/video-conference-open-cloud-recording) untuk memulai perekaman cloud.

   ```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 berisi atribut code dan message, yang membantu developer melacak masalah
                   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 berisi atribut code dan message, yang membantu developer melacak masalah
                   System.out.println(err.message);
                   System.out.println(err.code);
               }
           }
       }
   ```
4. Berdasarkan `conferenceId`, panggil Server API [Menghentikan perekaman cloud untuk Rapat Video](/id/open/development/video-conferencing-stops-cloud-recording) untuk menghentikan perekaman cloud.

   ```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 berisi atribut code dan message, yang membantu developer melacak masalah
                   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 berisi atribut code dan message, yang membantu developer melacak masalah
                   System.out.println(err.message);
                   System.out.println(err.code);
               }
           }
       }
   ```
5. Berdasarkan `conferenceId`, panggil Server API [Menutup Rapat Video](/id/open/development/close-audio-video-conference) untuk menutup rapat.

   ```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 berisi atribut code dan message, yang membantu developer melacak masalah
                   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 berisi atribut code dan message, yang membantu developer melacak masalah
                   System.out.println(err.message);
                   System.out.println(err.code);
               }
           }
       }
   ```
6. Kueri informasi rekaman rapat.

   1. Berdasarkan `conferenceId`, panggil Server API [Kueri detail rekaman rapat](/id/open/development/query-recording-information) untuk mengambil informasi seperti perekam, waktu mulai perekaman, dan durasi perekaman.

      ```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 berisi atribut code dan message, yang membantu developer melacak masalah
                      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 berisi atribut code dan message, yang membantu developer melacak masalah
                      System.out.println(err.message);
                      System.out.println(err.code);
                  }
              }
          }
      ```
   2. Berdasarkan `conferenceId`, panggil Server API [Kueri informasi video rekaman rapat](/id/open/development/queries-the-playback-information-about-a-recorded-cloud-video) untuk mengambil informasi seperti URL unduh video, ukuran file video, dan durasi video.

      ```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 berisi atribut code dan message, yang membantu developer melacak masalah
                      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 berisi atribut code dan message, yang membantu developer melacak masalah
                      System.out.println(err.message);
                      System.out.println(err.code);
                  }
              }
          }
      ```
   3. Berdasarkan `conferenceId`, panggil Server API [Kueri informasi teks rekaman rapat](/id/open/development/queries-the-text-information-about-cloud-recording) untuk mengambil informasi seperti konten teks yang direkam, waktu mulai rekaman teks, dan waktu akhir rekaman teks.

      ```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);
                      // Parameter ini dapat diabaikan untuk kueri pertama
                      //.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 berisi atribut code dan message, yang membantu developer melacak masalah
                      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 berisi atribut code dan message, yang membantu developer melacak masalah
                      System.out.println(err.message);
                      System.out.println(err.code);
                  }
              }
          }
      ```
