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

# Tipe pesan untuk mengirim dan menerima

> Pelajari tipe pesan dan format data yang didukung saat Bot mengirim pesan di DingTalk, serta format data untuk pesan yang diterima Bot — panduan lengkap teks, kartu, gambar, hingga file.

Topik ini menjelaskan tipe pesan dan format data yang dapat dikirim oleh Bot, serta format data untuk pesan yang diterima oleh Bot.

## Mengirim pesan dengan Bot

### Tipe pesan

Anda dapat mengirim pesan Bot dengan dua cara: **memanggil API** atau menggunakan **Webhook**. Tipe pesan dan format data yang didukung berbeda tergantung metode yang digunakan.

<Note>
  Kami menyarankan Anda mengirim pesan dengan memanggil API.
</Note>

| Tipe pesan | Kirim via API | Kirim via Webhook |
| ---------- | ------------- | ----------------- |
| Text       | ✅             | ✅                 |
| Markdown   | ✅             | ✅                 |
| Image      | ✅             | ❌                 |
| ActionCard | ✅             | ✅                 |
| FeedCard   | ❌             | ✅                 |
| Link       | ✅             | ✅                 |
| Audio      | ✅             | ❌                 |
| File       | ✅             | ❌                 |
| Video      | ✅             | ❌                 |

### Metode 1: Panggil sebuah API

### Penting

* Pesan Bot dalam obrolan satu lawan satu antara pengguna dan Bot: mendukung **pengiriman dan penerimaan** gambar, pesan suara, dan file.
* Pesan Bot dalam obrolan grup: Bot dapat **mengirim** gambar, pesan suara, video, dan file. **Namun, pengguna tidak dapat @ Bot untuk mengirim pesan suara, video, atau file ke Bot di dalam obrolan grup.**

#### API yang tersedia

* [Mengirim pesan Bot satu lawan satu secara massal](/id/open/development/chatbots-send-one-on-one-chat-messages-in-batches)
* [Mengirim pesan obrolan grup dengan Bot](/id/open/development/the-robot-sends-a-group-message)

#### Format data

* **Message template key**: pengidentifikasi unik yang digunakan saat developer mengirim pesan. Ini memungkinkan kode untuk dengan cepat mereferensikan templat pesan yang telah ditentukan sebelumnya.
* **Message template parameters**: data aktual yang digunakan untuk menggantikan placeholder yang telah ditentukan sebelumnya dalam templat pesan. Misalnya, ketika message template key adalah `sampleText`, Anda perlu mengatur nilai bidang `content`.
* **Contoh**: contoh HTTP berikut menunjukkan bagaimana Bot aplikasi internal mengirim pesan **text** ke sebuah **grup**:

  * Message template key: `"msgKey" : "sampleText"`
  * Message template parameters: `"msgParam" : "{\"content\":\"DingTalk, tempat kemajuan terjadi\"}"`

Untuk informasi selengkapnya, lihat [Mengirim pesan obrolan grup dengan Bot](/id/open/development/the-robot-sends-a-group-message).

```http theme={"theme":{"light":"github-light","dark":"github-dark"}}
POST /v1.0/robot/groupMessages/send HTTP/1.1
Host:api.dingtalk.io
x-acs-dingtalk-access-token:<your access token>
Content-Type:application/json

{
  "msgParam" : "{\"content\":\"DingTalk, tempat kemajuan terjadi\"}",
  "msgKey" : "sampleText",
  "openConversationId" : "cid6KeBBLov********",
  "robotCode" : "dingue4kfzdxbyn*******"
}
```

| Tipe pesan        | Message template key                                                                                                                                                                                                                                                                                                                                                                                                                                            | Message template parameters                                                                                                                                                                                                                   | Deskripsi                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Text              | sampleText                                                                                                                                                                                                                                                                                                                                                                                                                                                      | `{   "content": "xxxx" }`                                                                                                                                                                                                                     |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| Markdown          | sampleMarkdown                                                                                                                                                                                                                                                                                                                                                                                                                                                  | `{   "title": "xxxx",   "text": "xxxx" }`                                                                                                                                                                                                     |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| Image             | sampleImageMsg                                                                                                                                                                                                                                                                                                                                                                                                                                                  | `{   "photoURL": "xxxx" }`                                                                                                                                                                                                                    | **Catatan**  photoURL dapat berupa URL lengkap gambar atau mediaId gambar. Untuk memperoleh nilai parameter `media_id`, panggil API [Mengunggah file media](/id/open/development/upload-media-files).                                                                                                                                                                                                                                                                                                                                      |
| Link              | sampleLink                                                                                                                                                                                                                                                                                                                                                                                                                                                      | `{        "text": "Uji konten pesan",   "title": "Uji pesan sampleLink",   "picUrl": "@lADOADmaWMzazQKA",   "messageUrl": "http://dingtalk.io"      }`                                                                                        | Pesan Link.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ActionCard        | sampleActionCard                                                                                                                                                                                                                                                                                                                                                                                                                                                | `{   "title": "Uji judul",   "text": "Uji konten",   "singleTitle": "Lihat Detail",   "singleURL": "https://open.dingtalk.com" }`                                                                                                             | Pesan kartu dengan satu tombol.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| sampleActionCard2 | `{   "title": "Uji judul pesan",   "text": "Uji isi pesan",   "actionTitle1": "Tombol 1",   "actionURL1": "https://www.taobao.com",   "actionTitle2": "Tombol 2",   "actionURL2": "https://www.tmall.com" }`                                                                                                                                                                                                                                                    | Pesan kartu: dua tombol tersusun vertikal.                                                                                                                                                                                                    |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| sampleActionCard3 | `{   "title": "Uji judul pesan",   "text": "Uji konten pesan",   "actionTitle1": "Teks tombol 1",   "actionURL1": "URL yang dipicu tombol 1",   "actionTitle2": "Teks tombol 2",   "actionURL2": "URL yang dipicu tombol 2",   "actionTitle3": "Teks tombol 3",   "actionURL3": "URL yang dipicu tombol 3" }`                                                                                                                                                   | Pesan kartu: tiga tombol tersusun vertikal.                                                                                                                                                                                                   |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| sampleActionCard4 | `{   "title":"Uji judul pesan",   "text":"Uji konten pesan",   "actionTitle1":"Teks tombol 1",   "actionURL1":"URL yang dipicu tombol 1",   "actionTitle2":"Teks tombol 2",   "actionURL2":"URL yang dipicu tombol 2",   "actionTitle3":"Teks tombol 3",   "actionURL3":"URL yang dipicu tombol 3",   "actionTitle4":"Teks tombol 4",   "actionURL4":"URL yang dipicu tombol 4" }`                                                                              | Pesan kartu: empat tombol tersusun vertikal.                                                                                                                                                                                                  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| sampleActionCard5 | `{   "title":"Uji judul pesan",   "text":"Uji konten pesan",   "actionTitle1":"Teks tombol 1",   "actionURL1":"URL yang dipicu tombol 1",   "actionTitle2":"Teks tombol 2",   "actionURL2":"URL yang dipicu tombol 2",   "actionTitle3":"Teks tombol 3",   "actionURL3":"URL yang dipicu tombol 3",   "actionTitle4":"Teks tombol 4",   "actionURL4":"URL yang dipicu tombol 4",   "actionTitle5":"Teks tombol 5",   "actionURL5":"URL yang dipicu tombol 5" }` | Pesan kartu: lima tombol tersusun vertikal.                                                                                                                                                                                                   |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| sampleActionCard6 | `{   "title": "xxxx",   "text": "xxxx",   "buttonTitle1":"xxxxx",   "buttonUrl1":"xxxxx",   "buttonTitle2":"xxxxx",   "buttonUrl2":"xxxxx" }`                                                                                                                                                                                                                                                                                                                   | Pesan kartu: dua tombol tersusun horizontal.                                                                                                                                                                                                  |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| Audio             | sampleAudio                                                                                                                                                                                                                                                                                                                                                                                                                                                     | `{   "mediaId": "@IR_P********nFkfhsisbf4A",   "duration":"xxxxx" }`                                                                                                                                                                          | Pesan suara:   - **mediaId**: peroleh nilai parameter `media_id` dengan memanggil API [Mengunggah file media](/id/open/development/upload-media-files).  **Catatan**  Mendukung format OGG dan AMR. - **duration**: durasi pesan suara, dalam milidetik.                                                                                                                                                                                                                                                                                   |
| File              | sampleFile                                                                                                                                                                                                                                                                                                                                                                                                                                                      | `{   "mediaId":"@lAz*********shRs5m2pRL",   "fileName":"spreadsheet.xlsx",   "fileType":"xlsx" }`                                                                                                                                             | Pesan file:   - **mediaId**: peroleh nilai parameter `media_id` dengan memanggil API [Mengunggah file media](/id/open/development/upload-media-files). - **fileName**: nama file. - **fileType**: tipe file.   **Catatan**  Tipe file yang didukung: xlsx, pdf, zip, rar, doc, dan docx.                                                                                                                                                                                                                                                   |
| Video             | sampleVideo                                                                                                                                                                                                                                                                                                                                                                                                                                                     | `{   "duration":"999",   "videoMediaId":"$iQEL**********AXNSs6QPPAAABhKN2L3EEzTcTB84BFM7iCAAJomlt",   "videoType":"mp4",   "picMediaId":"$igE**********tAFzQUABtoAIYQBpAtR3SICqrQ7ZX0nEJzAKxUDzwAAAYSjdi2cBM02vwcACAAJomltCgQ"             }` | Pesan video:   - **duration**: durasi pesan suara, dalam detik. - **videoMediaId**: peroleh nilai parameter `media_id` dengan memanggil API [Mengunggah file media](/id/open/development/upload-media-files). - **videoType**: format video. Hanya MP4 yang didukung. - **picMediaId**: gambar sampul video. Peroleh nilai parameter `media_id` dengan memanggil API [Mengunggah file media](/id/open/development/upload-media-files). - **height**: tinggi tampilan video, dalam piksel. - **width**: lebar tampilan video, dalam piksel. |

#### Sintaks Markdown yang didukung

> Catatan tambahan tentang sintaks Markdown untuk tipe pesan sampleMarkdown.

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
Judul
# Judul 1
## Judul 2
### Judul 3
#### Judul 4
##### Judul 5
###### Judul 6
 
Kutipan
> A man who stands for nothing will fall for anything.
 
Tebal dan miring
**tebal**
*miring*
 
Tautan
[ini adalah tautan](http://name.com)
 
Gambar

 
Daftar berpoin
- item1
- item2
 
Daftar bernomor
1. item1
2. item2

Baris baru
 \n (tambahkan 2 spasi sebelum dan sesudah \n)
```

### Metode 2: Gunakan Webhook

<Note>
  Webhook hanya didukung dalam obrolan grup.
</Note>

Untuk informasi tentang mengirim pesan via Webhook, lihat [Bot membalas dan mengirim pesan](/id/open/dingstart/robot-reply-and-send-messages) dan [Membuat Bot kustom](/id/open/dingstart/custom-bot-creation-and-installation).

#### Pesan text

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
    "at": {
        "atMobiles": [
            "180xxxxxx"
        ],
        "atUserIds": [
            "user123"
        ],
        "isAtAll": false
    },
    "text": {
        "content": "Saya adalah diri saya sendiri, @180xxxxxx adalah percikan yang berbeda"
    },
    "msgtype": "text"
}
```

| **Parameter** | **Wajib** | **Tipe** | **Deskripsi**                                                                                                                                                                           |
| ------------- | --------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| msgtype       | Ya        | String   | text.                                                                                                                                                                                   |
| content       | Ya        | String   | Teks pesan.                                                                                                                                                                             |
| atMobiles     | Tidak     | Array    | Nomor telepon pengguna yang di-\@.  **Catatan**  Tambahkan nomor telepon pengguna yang di-@ dalam `content`. Hanya anggota grup yang dapat di-\@. Nomor telepon non-anggota disamarkan. |
| atUserIds     | Tidak     | Array    | ID pengguna dari pengguna yang di-\@.  **Catatan**  Tambahkan ID pengguna dari pengguna yang di-@ dalam `content`.                                                                      |
| isAtAll       | Tidak     | Boolean  | Setel ke true untuk @ semua orang; jika tidak, setel ke false.                                                                                                                          |

#### Pesan link

<Note>
  Tipe ini tidak mendukung @ Orang.
</Note>

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
    "msgtype": "link", 
    "link": {
        "text": "Pendiri menyebut versi baru yang akan datang sebagai Mangrove. Sebelum setiap pembaruan besar, manajer produk memilih nama kode yang sesuai. Mengapa Mangrove kali ini?", 
        "title": "Kereta zaman terus melaju", 
        "picUrl": "https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png", 
        "messageUrl": "https://open.dingtalk.com/document/"
    }
}
```

| **Parameter** | **Tipe** | Wajib | **Deskripsi**                                                                                                                                                                                                                                                             |
| ------------- | -------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| msgtype       | String   | Ya    | Tipe pesan. Setel ke link.                                                                                                                                                                                                                                                |
| title         | String   | Ya    | Judul pesan.                                                                                                                                                                                                                                                              |
| text          | String   | Ya    | Konten pesan. Konten yang panjang akan dipotong.                                                                                                                                                                                                                          |
| messageUrl    | String   | Ya    | URL yang dibuka saat pesan ditekan:   - Pada perangkat seluler: dibuka di DingTalk Client. - Pada PC:    - Secara default dibuka di panel samping.   - Untuk membuka di browser eksternal, lihat [Deskripsi tautan pesan](/id/open/development/message-link-description). |
| picUrl        | String   | Tidak | URL gambar.                                                                                                                                                                                                                                                               |

#### Pesan markdown

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
     "msgtype": "markdown",
     "markdown": {
         "title":"Cuaca Hangzhou",
         "text": "#### Cuaca Hangzhou @150XXXXXXXX \n> 9°C, angin barat laut level 1, kualitas udara baik 89, kelembapan relatif 73%\n> \n> ###### Dirilis pukul 10:20 [Cuaca](https://www.dingalk.com) \n"
     },
      "at": {
          "atMobiles": [
              "150XXXXXXXX"
          ],
          "atUserIds": [
              "user123"
          ],
          "isAtAll": false
      }
 }
```

| **Parameter** | **Wajib** | **Tipe** | **Deskripsi**                                                                                                                                                                        |
| ------------- | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| msgtype       | Ya        | String   | Tipe pesan. Setel ke markdown.                                                                                                                                                       |
| title         | Ya        | String   | Konten yang ditampilkan pada layar pertama percakapan.                                                                                                                               |
| text          | Ya        | String   | Konten pesan dalam format Markdown.                                                                                                                                                  |
| atMobiles     | Tidak     | Array    | Nomor telepon pengguna yang di-\@.  **Catatan**  Tambahkan nomor telepon pengguna yang di-@ dalam `text`. Hanya anggota grup yang dapat di-\@. Nomor telepon non-anggota disamarkan. |
| atUserIds     | Tidak     | Array    | ID pengguna dari pengguna yang di-\@.  **Catatan**  Tambahkan ID pengguna dari pengguna yang di-@ dalam `text`.                                                                      |
| isAtAll       | Tidak     | Boolean  | Setel ke true untuk @ semua orang; jika tidak, setel ke false.                                                                                                                       |

Saat ini hanya sebagian sintaks Markdown yang didukung. Elemen yang didukung dicantumkan di bawah:

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
Judul
# Judul 1
## Judul 2
### Judul 3
#### Judul 4
##### Judul 5
###### Judul 6
 
Kutipan
> A man who stands for nothing will fall for anything.
 
Tebal dan miring
**tebal**
*miring*
 
Tautan
[ini adalah tautan](https://www.dingtalk.io/)
 
Gambar

 
Daftar berpoin
- item1
- item2
 
Daftar bernomor
1. item1
2. item2
```

#### Pesan ActionCard

* **ActionCard lompatan seluruh kartu**

  ```json lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
      "msgtype": "actionCard",
      "actionCard": {
          "title": "Membangun kedai kopi", 
          "text": " \n #### Kedai kopi Apple yang ingin dibangun Steve Jobs 20 tahun lalu \n\n Desain Apple Store beralih dari nuansa yang berat teknologi menjadi lebih berorientasi gaya hidup. Tren ini dapat ditelusuri kembali ke rencana Apple 20 tahun lalu untuk membuka kedai kopi.",
          "singleTitle" : "Baca selengkapnya",
          "btnOrientation": "0", 
          "singleURL" : "https://www.dingtalk.io/"
      }
  }
  ```

  | **Parameter**  | **Wajib** | **Tipe** | **Deskripsi**                                                                                                                                                                                                                                                            |
  | -------------- | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
  | msgtype        | Ya        | String   | Tipe pesan. Setel ke actionCard.                                                                                                                                                                                                                                         |
  | title          | Ya        | String   | Konten yang ditampilkan pada layar pertama percakapan.                                                                                                                                                                                                                   |
  | text           | Ya        | String   | Pesan dalam format Markdown.  **Catatan**  Untuk @ seorang pengguna, tambahkan ID pengguna dalam `text`. Misalnya: @manager7675                                                                                                                                          |
  | singleTitle    | Ya        | String   | Judul tombol tunggal.                                                                                                                                                                                                                                                    |
  | singleURL      | Ya        | String   | URL yang dibuka saat pesan ditekan:  - Pada perangkat seluler: dibuka di DingTalk Client. - Pada PC:    - Secara default dibuka di panel samping.   - Untuk membuka di browser eksternal, lihat [Deskripsi tautan pesan](/id/open/development/message-link-description). |
  | btnOrientation | Tidak     | String   | Tata letak tombol:  - **0**: vertikal - **1**: horizontal                                                                                                                                                                                                                |

* **ActionCard lompatan independen**

  ```json lines theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
      "msgtype": "actionCard",
      "actionCard": {
          "title": "Steve Jobs ingin membangun kedai kopi Apple 20 tahun lalu — cikal bakal Apple Store", 
          "text": " \n\n #### Kedai kopi Apple yang ingin dibangun Steve Jobs 20 tahun lalu \n\n Desain Apple Store beralih dari nuansa yang berat teknologi menjadi lebih berorientasi gaya hidup. Tren ini dapat ditelusuri kembali ke rencana Apple 20 tahun lalu untuk membuka kedai kopi.", 
          "btnOrientation": "0", 
          "btns": [
              {
                  "title": "Konten bagus", 
                  "actionURL": "https://www.dingtalk.io/"
              }, 
              {
                  "title": "Tidak tertarik", 
                  "actionURL": "https://www.dingtalk.io/"
              }
          ]
      }
  }
  ```

  | **Parameter**  | **Wajib** | **Tipe** | **Deskripsi**                                                                                                                                                                                                                                                             |
  | -------------- | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | msgtype        | Ya        | String   | actionCard.                                                                                                                                                                                                                                                               |
  | title          | Ya        | String   | Konten yang ditampilkan pada layar pertama percakapan.                                                                                                                                                                                                                    |
  | text           | Ya        | String   | Konten pesan dalam format Markdown.  **Catatan**  Untuk @ seorang pengguna, tambahkan ID pengguna dalam `text`. Misalnya: @manager7675                                                                                                                                    |
  | btns           | Ya        | Array    | Tombol.                                                                                                                                                                                                                                                                   |
  | title          | Ya        | String   | Judul tombol.                                                                                                                                                                                                                                                             |
  | actionURL      | Ya        | String   | URL yang dibuka saat tombol ditekan:  - Pada perangkat seluler: dibuka di DingTalk Client. - Pada PC:    - Secara default dibuka di panel samping.   - Untuk membuka di browser eksternal, lihat [Deskripsi tautan pesan](/id/open/development/message-link-description). |
  | btnOrientation | Tidak     | String   | Tata letak tombol.  **0**: vertikal  **1**: horizontal                                                                                                                                                                                                                    |

#### Pesan FeedCard

<Note>
  Tipe ini tidak mendukung @ Orang.
</Note>

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
    "msgtype": "feedCard",
    "feedCard": {
        "links": [
            {
                "title": "Kereta zaman terus melaju 1", 
                "messageURL": "https://www.dingtalk.io/", 
                "picURL": "https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png"
            },
            {
                "title": "Kereta zaman terus melaju 2", 
                "messageURL": "https://www.dingtalk.io/", 
                "picURL": "https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png"
            }
        ]
    }
}
```

| **Parameter** | **Wajib** | **Tipe** | **Deskripsi**                                                                                                                                          |
| ------------- | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| msgtype       | Ya        | String   | feedCard.                                                                                                                                              |
| title         | Ya        | String   | Teks setiap item.                                                                                                                                      |
| messageURL    | Ya        | String   | URL yang dibuka saat sebuah item ditekan. Untuk informasi selengkapnya, lihat [Deskripsi tautan pesan](/id/open/development/message-link-description). |
| picURL        | Ya        | String   | URL gambar yang ditampilkan setelah setiap item.                                                                                                       |

Untuk melewati balasan ke grup, gunakan format berikut:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
    "msgtype": "empty"
}
```

## Menerima pesan dengan Bot

Ketika pengguna @ Bot grup atau mengirim pesan langsung ke Bot, DingTalk meneruskan pesan yang diterima ke layanan callback Bot yang telah dikonfigurasi oleh developer.

### Isi pesan

Contoh berikut menggunakan tipe pesan text. Jika Anda menggunakan callback HTTP, DingTalk mengirimkan pesan dengan permintaan POST.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "senderPlatform": "Mac",
  "conversationId": "cid6EUxxxxsg==",
  "atUsers": [
    {
      "dingtalkId": "xxx",
      "staffId":"xxx",
      "unionId":"edxxx34"
    }
  ],
  "chatbotCorpId": "ding9733d095*******6cb783455b",
  "chatbotUserId": "$:LWCP_xxxxr5",
  "msgId": "msgrK2xxxxU+riw==",
  "senderNick": "Xiao Ding",
  "isAdmin": true,
  "senderStaffId": "0147xxxx8602",
  "sessionWebhookExpiredTime": 1708332604316,
  "createAt": 1708327204136,
  "senderCorpId": "ding9733d095*******6cb783455b",
  "conversationType": "2",
  "senderId": "$:LWCP_v1xxxxBv1MhAv9",
  "conversationTitle": "Grup uji",
  "isInAtList": true,
  "sessionWebhook": "https://oapi.dingtalk.io/robot/sendBySession?session=66d7c695a9xxxxdeb885",
  "text": {
    "content": " text"
  },
  "robotCode": "dingoxxxxdm3k",
  "msgtype": "text"
}
```

| **Parameter**             | **Tipe**        | **Deskripsi**                                                                                                                                                                                                                                                                    |
| ------------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| senderPlatform            | String          | Platform tempat pesan dikirim.                                                                                                                                                                                                                                                   |
| conversationId            | String          | ID obrolan.                                                                                                                                                                                                                                                                      |
| atUsers                   | Array of Object | Informasi tentang pengguna yang di-\@.   - **dingtalkId**: ID terenkripsi dari pengguna yang di-\@. - **staffId**: ID pengguna dari pengguna yang di-\@. Bidang ini kosong untuk pengguna eksternal dalam Obrolan Eksternal. - **unionId**: unionId dari pengguna yang di-\@.    |
| chatbotCorpId             | String          | ID organisasi terenkripsi dari organisasi tempat Bot berada.                                                                                                                                                                                                                     |
| chatbotUserId             | String          | ID Bot terenkripsi.                                                                                                                                                                                                                                                              |
| msgId                     | String          | ID pesan terenkripsi.                                                                                                                                                                                                                                                            |
| senderNick                | String          | Nama pengirim.                                                                                                                                                                                                                                                                   |
| isAdmin                   | Boolean         | Apakah pengirim adalah Admin:   - true: ya - false: tidak   Berlaku setelah Bot dipublikasikan. Jika tidak, bidang ini tidak dikembalikan.                                                                                                                                       |
| senderStaffId             | String          | ID pengguna dari anggota yang @ Bot dalam grup internal.  Jika pengirim bukan anggota organisasi tempat Bot berada (misalnya, pengguna eksternal @ Bot dalam grup eksternal), bidang ini kosong.  Berlaku setelah Bot dipublikasikan. Jika tidak, bidang ini tidak dikembalikan. |
| senderUnionId             | String          | unionId dari pengirim.                                                                                                                                                                                                                                                           |
| sessionWebhookExpiredTime | Long            | Waktu kedaluwarsa URL Webhook untuk percakapan saat ini.                                                                                                                                                                                                                         |
| createAt                  | String          | Stempel waktu pesan, dalam milidetik.                                                                                                                                                                                                                                            |
| senderCorpId              | String          | ID organisasi pengirim dalam grup internal.                                                                                                                                                                                                                                      |
| conversationType          | String          | Tipe percakapan:   - **1**: Pesan Langsung - **2**: Obrolan Grup                                                                                                                                                                                                                 |
| senderId                  | String          | ID pengirim terenkripsi.                                                                                                                                                                                                                                                         |
| conversationTitle         | String          | Judul percakapan. Tersedia hanya dalam obrolan grup.                                                                                                                                                                                                                             |
| isInAtList                | Boolean         | Apakah Bot berada dalam daftar @.                                                                                                                                                                                                                                                |
| sessionWebhook            | String          | URL Webhook untuk percakapan saat ini.                                                                                                                                                                                                                                           |
| text                      | Object          | Teks pesan:   - content: konten pesan yang diterima oleh Bot.   Bidang ini hanya ada ketika tipe pesan adalah text.                                                                                                                                                              |
| msgtype                   | String          | Tipe pesan:   - text: pesan text - richText: pesan Teks Kaya - picture: pesan gambar - audio: pesan suara - video: pesan video - file: pesan file   Untuk format spesifik setiap tipe, lihat **Tipe pesan** di bawah.                                                            |
| robotCode                 | String          | Kode Bot.  Bot kustom tidak memiliki robotCode.                                                                                                                                                                                                                                  |

### Tipe pesan

Bot saat ini dapat menerima pesan dengan tipe berikut: text, suara, gambar, file, video, dan Teks Kaya. Bidang untuk setiap tipe pesan dijelaskan di bawah. Selain bidang tipe pesan dan isi pesan, parameter lainnya sama seperti pada tabel di atas.

#### Pesan text

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "msgtype": "text",
  "text": {
    "content": "Hello"
  }
}
```

| **Parameter** | **Tipe** | **Deskripsi**                                                     |
| ------------- | -------- | ----------------------------------------------------------------- |
| msgtype       | String   | Tipe pesan:   - **text**: pesan text                              |
| text          | Object   | Teks pesan:   - **content**: konten pesan yang diterima oleh Bot. |

#### Pesan Teks Kaya

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "msgtype": "richText",
  "content": {
    "richText": [
      {
        "text": "Hello"
      },
      {
        "downloadCode": "mIofN681YE3f*************JkVBG2vhj4Q9、d2tn/t6XxjaB6UxxxxOVnYYbn1aMT/n3JFgb4i64X3TFxxxxGWxJPR/egKS8syvGzxxxxOO/FYLor2Q==",
        "type": "picture"
      }
    ]
  }
}
```

| Nama     | Tipe            | Deskripsi                                                                                                                                                                                                                                                                                                                                            |
| -------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| msgtype  | String          | Tipe pesan:   - **richText**: Teks Kaya                                                                                                                                                                                                                                                                                                              |
| content  | Object          | Konten pesan.                                                                                                                                                                                                                                                                                                                                        |
| richText | Array of Object | Daftar Teks Kaya.  **Catatan**  Daftar pesan dapat berisi:   - **text**: pesan text - **picture**: pesan gambar  Gunakan downloadCode gambar untuk memperoleh URL unduhan sementara dengan memanggil Server API [Mengunduh konten file dari pesan yang diterima Bot](/id/open/development/download-the-file-content-of-the-robot-receiving-message). |

#### Pesan gambar

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "msgtype": "picture",
  "content": {
    "downloadCode": "mIofN681YE3f/+m+**********8rs4RGdQAwyVs3B75N7boKf8ep0FBB122u9YY/novFAM9BQrirm4/+avZaCV+6nnZ0Zk="
  }
}
```

| **Parameter** | **Tipe** | **Deskripsi**                                                                                                                                                                                                                                                           |
| ------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| msgtype       | String   | Tipe pesan:   - **picture**: pesan gambar                                                                                                                                                                                                                               |
| downloadCode  | String   | Kode unduhan file gambar, digunakan untuk mengambil konten biner gambar. Panggil Server API [Mengunduh konten file dari pesan yang diterima Bot](/id/open/development/download-the-file-content-of-the-robot-receiving-message) untuk memperoleh URL unduhan sementara. |

#### Pesan suara

<Note>
  Dalam percakapan Obrolan Grup, Bot **tidak mendukung** penerimaan pesan suara ketika anggota grup @ Bot.
</Note>

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "msgtype": "audio",
  "content": {
    "duration": 4000,
    "downloadCode": "mIofN681YE3f/+m+Nn***********geqPd7xpJF/9NbOAORDnadz0WbSwWTiYvByBeYDjbg2ecUdno/RGtZ/sqzdvoh00EWw1U6xNqLC3Bk51U+i",
    "recognition": "DingTalk, tempat kemajuan terjadi"
  }
}
```

| **Parameter** | **Tipe** | **Deskripsi**                                                                                                                                                                                                                                                               |
| ------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| msgtype       | String   | Tipe pesan:   - **audio**: pesan suara                                                                                                                                                                                                                                      |
| downloadCode  | String   | Kode unduhan file suara, digunakan untuk mengambil konten biner pesan suara. Panggil Server API [Mengunduh konten file dari pesan yang diterima Bot](/id/open/development/download-the-file-content-of-the-robot-receiving-message) untuk memperoleh URL unduhan sementara. |
| recognition   | String   | Teks hasil pengenalan Speech-to-Text.                                                                                                                                                                                                                                       |
| duration      | Long     | Durasi pesan suara, dalam milidetik.                                                                                                                                                                                                                                        |

#### Pesan video

<Note>
  Dalam percakapan Obrolan Grup, Bot **tidak mendukung** penerimaan pesan video ketika anggota grup @ Bot.
</Note>

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "msgtype": "video",
  "content": {
    "duration": 4000,
    "downloadCode": "mIofN681YE3f/****************OAORDnadz0WbSwWTiYvByBeYDjbg2ecUdno/RGtZxxxxLC3Bk51U+i",
    "videoType": "mp4"
  }
}
```

| **Parameter** | **Tipe** | **Deskripsi**                                                                                                                                                                                                                                                         |
| ------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| msgtype       | String   | Tipe pesan:   - **video**: pesan video                                                                                                                                                                                                                                |
| downloadCode  | String   | Kode unduhan file video, digunakan untuk mengambil konten biner video. Panggil Server API [Mengunduh konten file dari pesan yang diterima Bot](/id/open/development/download-the-file-content-of-the-robot-receiving-message) untuk memperoleh URL unduhan sementara. |
| videoType     | String   | Tipe file video.                                                                                                                                                                                                                                                      |
| duration      | Long     | Durasi video, dalam milidetik.                                                                                                                                                                                                                                        |

#### Pesan file

<Note>
  Dalam percakapan Obrolan Grup, Bot **tidak mendukung** penerimaan pesan file ketika anggota grup @ Bot.
</Note>

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "msgtype": "file",
  "content": {
    "downloadCode": "mIofN681YE3f*************pJF/9NbOAORDnadxxxxg2ecUdno/RGtZ/sqzdxxxxC3Bk51U+i",
    "fileName": "DingTalk kemajuan terjadi.pdf"
  }
}
```

| **Parameter** | **Tipe** | **Deskripsi**                                                                                                                                                                                                                                                  |
| ------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| msgtype       | String   | Tipe pesan:   - **video**: pesan file                                                                                                                                                                                                                          |
| downloadCode  | String   | Kode unduhan file, digunakan untuk mengambil konten biner file. Panggil Server API [Mengunduh konten file dari pesan yang diterima Bot](/id/open/development/download-the-file-content-of-the-robot-receiving-message) untuk memperoleh URL unduhan sementara. |
| fileName      | String   | Nama file.                                                                                                                                                                                                                                                     |

### Konten terkait

Jika Anda memilih mode HTTP sebagai mode penerimaan pesan saat [membuat Bot aplikasi internal](/id/open/dingstart/configure-the-robot-application), parameter header HTTP yang ditunjukkan di bawah disertakan bersama isi pesan saat Bot menerima pesan:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "Content-Type": "application/json; charset=utf-8",
  "timestamp": "1577262236757",
  "sign":"xxxxxxxxxx"
}
```

| **Parameter** | **Deskripsi**                                      |
| ------------- | -------------------------------------------------- |
| timestamp     | Stempel waktu saat pesan dikirim, dalam milidetik. |
| sign          | Nilai tanda tangan.                                |

Anda harus memverifikasi timestamp dan sign di header untuk memastikan bahwa permintaan adalah permintaan sah dari DingTalk dan untuk mencegah pihak ketiga menyamar sebagai DingTalk dalam memanggil layanan HTTPS Anda. Aturan verifikasinya adalah sebagai berikut:

* Jika selisih antara timestamp dan stempel waktu sistem saat ini lebih besar dari 1 jam, permintaan dianggap tidak sah.
* Jika sign tidak cocok dengan nilai tanda tangan yang Anda hitung, permintaan dianggap tidak sah.

Sebuah permintaan dianggap sah hanya ketika timestamp dan sign berhasil melewati verifikasi.

Gunakan algoritma HmacSHA256 untuk menghitung tanda tangan, lalu enkode dengan Base64 untuk mendapatkan nilai tanda tangan akhir. Contoh:

```java theme={"theme":{"light":"github-light","dark":"github-dark"}}
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;

public class Test {
    public static void main(String[] args) throws Exception {
        Long timestamp = 1577262236757L;
        String appSecret = "this is a secret";
        String stringToSign = timestamp + "\n" + appSecret;
        Mac mac = Mac.getInstance("HmacSHA256");
        mac.init(new SecretKeySpec(appSecret.getBytes("UTF-8"), "HmacSHA256"));
        byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
        String sign = new String(Base64.encodeBase64(signData));
        System.out.println(sign);
    }
}
```

| **Item konfigurasi** | **Deskripsi**                                                                                                        |
| -------------------- | -------------------------------------------------------------------------------------------------------------------- |
| timestamp            | Stempel waktu saat ini, dalam milidetik.                                                                             |
| appSecret            | Client Secret aplikasi. Untuk informasi selengkapnya, lihat [Client Secret](/id/open/dingstart/basic-concepts-beta). |

### Kode error

Ketika penggunaan Webhook atau Stream Bot melebihi kuota, perilaku berikut terjadi:

#### Perilaku error

##### Percakapan Obrolan Grup

##### Percakapan Pesan Langsung

#### Deskripsi error

| Kode error (errorCode) | Pesan error (errorMessage)                                                                                                                                                                                           | **Deskripsi**                                                                                                                                                           | Solusi                                                                                                                                                                                                                                                            |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 20001                  | Karena volume panggilan yang berlebihan, layanan pesan Anda saat ini dijeda. Hubungi Admin organisasi Anda untuk bantuan.  Bidang **errorMessage** ditambahkan ke pesan yang diterima untuk menampilkan pesan error. | - Bidang `text` dan `content` tidak disertakan dalam pesan yang diterima. - Masuk ke [Developer Console](https://open-dev.dingtalk.io/) untuk melihat volume panggilan. | Tingkatkan ke DingTalk Professional Edition atau beli paket add-on. Untuk informasi selengkapnya, lihat [Petunjuk pembelian paket add-on organisasi](https://open.dingtalk.com/document/orgapp/purchase-instructions-for-enterprise-additional-purchase-package). |

### Dokumen terkait

* Mengirim pesan obrolan grup dengan Bot perusahaan
* Mengirim pesan satu lawan satu dengan Bot perusahaan
* Mengirim pesan obrolan grup dengan Bot kustom
* Mengirim pesan obrolan grup dengan Bot templat grup
