# Pesan layanan WhatsApp

**Pesan layanan** adalah apa pun yang Anda kirim selain template yang sudah disetujui: konten bebas yang dikirim bisnis dalam percakapan yang sedang terbuka. `POST /v1/whatsapp/messages` membawa tepat satu dari sembilan jenis konten pesan layanan, atau sebuah template. Halaman ini membahas kesamaan di antara sembilan jenis tersebut; halaman masing-masing jenis membahas bentuk datanya dan batasannya sendiri.

## Jenis konten

| Tipe                                                                | Field           | Isi                                                                                                       | Gunakan saat                                                          |
| ------------------------------------------------------------------- | --------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| [Teks biasa](/docs/guides/whatsapp/message-types/plain-text)        | `text`          | Isi teks hingga 4.096 karakter, dengan pratinjau tautan opsional                                          | Anda mengirim pesan tanpa lampiran                                    |
| [Gambar](/docs/guides/whatsapp/message-types/images)                | `image`         | URL gambar publik dan keterangan opsional                                                                 | Anda mengirim foto atau grafik                                        |
| [Video](/docs/guides/whatsapp/message-types/video)                  | `video`         | URL video publik dan keterangan opsional                                                                  | Anda mengirim klip video                                              |
| [Audio](/docs/guides/whatsapp/message-types/audio)                  | `audio`         | URL audio publik, opsional ditampilkan sebagai pesan suara                                                | Anda mengirim pesan suara atau klip audio                             |
| [Stiker](/docs/guides/whatsapp/message-types/stickers)              | `sticker`       | URL gambar WebP publik                                                                                    | Anda mengirim stiker                                                  |
| [Dokumen](/docs/guides/whatsapp/message-types/documents)            | `document`      | URL file publik, keterangan opsional, dan nama file opsional                                              | Anda mengirim PDF, spreadsheet, atau file lain                        |
| [Lokasi](/docs/guides/whatsapp/message-types/location)              | `location`      | Lintang dan bujur, dengan nama dan alamat opsional                                                        | Anda mengirim pin lokasi, misalnya titik penjemputan                  |
| [Kartu kontak](/docs/guides/whatsapp/message-types/contact-cards)   | `contact_cards` | Satu hingga lima kartu kontak, masing-masing berisi nama dan nomor, email, situs web, atau alamat apa pun | Anda membagikan detail seseorang, misalnya nomor rekan kerja          |
| [Pesan interaktif](/docs/guides/whatsapp/message-types/interactive) | `interactive`   | Teks isi ditambah tombol, menu, tautan, kartu, atau permintaan lokasi atau kontak                         | Anda ingin penerima mengetuk sesuatu alih-alih mengetik balasan bebas |

Sebuah request membawa tepat satu dari `template` atau salah satu dari sembilan field ini. Request yang tidak membawa satu pun, atau membawa lebih dari satu, ditolak dengan `422`.

## Jendela layanan pelanggan

Pesan layanan, yaitu salah satu dari sembilan jenis di atas, hanya terkirim di dalam jendela layanan pelanggan 24 jam yang terbuka. Kontak membuka jendela tersebut dengan mengirim pesan atau menelepon nomor bisnis Anda, dan setiap pesan berikutnya dari mereka mengatur ulang jendela menjadi 24 jam.

Pesan layanan yang dikirim ke jendela yang sudah tertutup ditolak langsung: request mengembalikan `422` [`E15044`](/docs/api/errors/E15044) `WhatsAppServiceWindowClosed`, dan tidak ada yang dibuat atau dikenakan biaya. Kirim template yang sudah disetujui sebagai gantinya; template menjangkau kontak terlepas dari jendela, dan balasan mereka membuka kembali jendela. Jendela yang tertutup di saat antara penerimaan dan pengiriman tetap gagal, tetapi secara asinkron: pesan mencapai `failed` dengan `service_window_expired` pada `last_error`.

Pemeriksaan saat penerimaan bersifat upaya terbaik, bukan jaminan: **gerbang ini gagal terbuka**, sehingga cache yang kosong atau kesalahan baca membiarkan pengiriman lewat alih-alih memblokirnya. `202` oleh karena itu bukan bukti bahwa jendela terbuka saat pengiriman dilakukan; sinyal akhir adalah status pesan itu sendiri, bukan respons penerimaan.

Setiap pesan layanan juga memerlukan `from`, nomor yang dimiliki workspace Anda. Nomor terkelola Bird tidak dapat membawanya, sehingga pesan layanan memerlukan nomor milik Anda sendiri yang sudah terhubung terlebih dahulu; lihat [Penyiapan nomor telepon](/docs/guides/whatsapp/phone-number-setup).

Lihat [jendela layanan pelanggan](/docs/knowledge-base/whatsapp/customer-service-window) untuk siklus lengkapnya: cara jendela dibuka, apa yang mengatur ulangnya, dan bagaimana jendela dilacak.

## Mengirim media melalui URL

`image`, `video`, `audio`, `sticker`, dan `document` semuanya menerima `url` yang menunjuk ke file yang diambil WhatsApp saat pengiriman, bukan file yang Anda unggah ke Bird. Bird memeriksa bentuk URL saat penerimaan, sebelum apa pun diantrikan:

- Tidak kosong dan dapat diurai, memiliki host dan tanpa spasi mentah
- Skema adalah `https`

URL `http` ditolak dengan `422` saat penerimaan, meskipun WhatsApp sendiri dapat mengambilnya tanpa masalah. Itu adalah kebijakan Bird, bukan batasan yang diterapkan WhatsApp.

Bird tidak memeriksa ukuran file, tipe MIME-nya, atau apakah URL dapat dijangkau. WhatsApp mengambil URL itu sendiri setelah mengirimkan pesan, sehingga URL bertanda tangan harus tetap valid melewati momen tersebut, bukan hanya saat Anda mengirim request; URL yang bersifat privat atau kedaluwarsa gagal saat WhatsApp mencoba mengambilnya. WhatsApp juga meng-cache URL yang sudah diambil selama kurang lebih 10 menit, sehingga mengirim ulang URL yang identik dalam jendela tersebut menyajikan kembali hasil pengambilan pertama alih-alih mengambil ulang.

## Saat media gagal

Pengiriman media mengikuti jalur asinkron yang sama seperti pesan WhatsApp lainnya: Bird mengembalikan `202` dan menerima pesan, lalu WhatsApp mengambil URL saat mengirimkannya. Jika pengambilan tersebut gagal, pesan mencapai `failed` dengan `media_rejected` pada `last_error`, yang merupakan `131053` milik Meta di baliknya.

`media_rejected` adalah kode payung yang mencakup file terlalu besar, `404`, kegagalan DNS, dan tipe MIME yang salah; Bird tidak memecahnya lebih lanjut, jadi jangan harapkan kode berbeda untuk setiap penyebab.

Pengiriman media yang gagal secara asinkron tetap dikenakan biaya. Penagihan terjadi saat Bird memproses pengiriman yang diterima, sebelum WhatsApp mengambil URL, dan tidak ada jalur pengembalian dana setelah tagihan tercatat. Perhitungkan hal ini: pesan yang gagal belakangan di `media_rejected` sudah mengeluarkan biaya yang sama dengan pesan yang berhasil terkirim.

## Membaca pesan yang dikirim kontak

Pesan masuk membawa salah satu dari sembilan jenis yang sama, sehingga field yang Anda baca sesuai dengan tipe yang digunakan kontak. Kartu kontak terbaca pada field `contact_cards` yang sama, baik kontak yang membagikannya maupun Anda yang mengirimnya. [Menerima pesan WhatsApp](/docs/guides/whatsapp/receiving-whatsapp) membahas cara membaca pesan masuk melalui API, mengambil media yang dikirim kontak, dan webhook `whatsapp.received`.

## Langkah selanjutnya

- [Mengirim pesan WhatsApp](/docs/guides/whatsapp/sending-whatsapp): envelope request, model `202`, dan coba lagi yang aman
- [Pesan interaktif](/docs/guides/whatsapp/message-types/interactive): enam tipe yang dapat diketuk penerima
- [Menerima pesan WhatsApp](/docs/guides/whatsapp/receiving-whatsapp): pesan masuk, media, dan webhook `whatsapp.received`
- [Template WhatsApp](/docs/guides/whatsapp/templates): pesan yang masih dapat Anda kirim setelah jendela tertutup

## Related resources

- [Connecting WhatsApp to Bird: from buying a number to a live channel](/learn/whatsapp/connecting-whatsapp-to-bird) (video)
- [What is the 24-hour customer service window on WhatsApp?](/explained/whatsapp/what-is-the-24-hour-customer-service-window) (answer)
- [WhatsApp message builder](/tools/whatsapp-message-builder) (tool)
- [WhatsApp](/products/whatsapp) (product)

[Get an implementation brief](/learn/workspace?topic=whatsapp)
