# Pesan teks biasa WhatsApp

Teks biasa adalah arm konten bebas paling sederhana: sebuah body tanpa lampiran, dan pratinjau opsional untuk tautan pertama di dalamnya.

## Kirim pesan teks

Atur `text.body`:

**TypeScript**

```typescript
const msg = await bird.whatsapp.send({
  to: "+16505551234",
  from: "+13124495648",
  text: { body: "Your driver is 2 minutes away." },
});
console.log(msg.id, msg.status);
```

Examples: [TypeScript](/id-id/dokumentasi/guides/whatsapp/message-types/plain-text.ts.md) · [Python](/id-id/dokumentasi/guides/whatsapp/message-types/plain-text.py.md) · [Go](/id-id/dokumentasi/guides/whatsapp/message-types/plain-text.go.md) · [PHP](/id-id/dokumentasi/guides/whatsapp/message-types/plain-text.php.md) · [CLI](/id-id/dokumentasi/guides/whatsapp/message-types/plain-text.cli.md) · [MCP](/id-id/dokumentasi/guides/whatsapp/message-types/plain-text.mcp.md) · [cURL](/id-id/dokumentasi/guides/whatsapp/message-types/plain-text.curl.md)

Bentuk lengkapnya menambahkan `preview_url` beserta field yang dapat dibawa oleh setiap pengiriman bebas:

```json
{
  "to": "+16505551234",
  "from": "+13124495648",
  "text": {
    "body": "Your order shipped: https://example.com/track/A1B2C3",
    "preview_url": true
  },
  "in_reply_to_message_id": "wam_01kya19eknftrs2s6p82asmvnh",
  "tags": [{ "name": "category", "value": "shipping" }],
  "metadata": { "order_id": "A1B2C3" }
}
```

`from` wajib ada di setiap pesan layanan: nomor yang dimiliki workspace Anda, bukan nomor yang dikelola Bird. `in_reply_to_message_id` mengutip pesan sebelumnya dalam percakapan yang sama; lihat [Mengutip pesan](/docs/guides/whatsapp/sending-whatsapp#quoting-a-message) untuk mengetahui apa yang di-resolve dan apa yang bisa terlewat.

## Batas

| Field         | Batas                    | Diterapkan oleh           |
| ------------- | ------------------------ | ------------------------- |
| `body`        | 1 hingga 4096 karakter   | Bird, saat accept (`422`) |
| `preview_url` | boolean, default `false` | N/A, informasional        |

`body` yang hanya berisi spasi lolos dari `minLength: 1` milik skema, tetapi Bird tetap menangkapnya: `body` yang kosong setelah trimming ditolak dengan `422` [`E15015`](/docs/api/errors/E15015) `WhatsAppContentRequired`. Body yang melebihi 4096 karakter ditolak dengan `422` biasa tanpa kode katalog khusus.

## Membaca pesan teks masuk

Pesan teks masuk membawa field `text.body` yang sama, dan tidak ada field lain di arm tersebut. Lihat [Menerima pesan teks WhatsApp](/docs/guides/whatsapp/receiving-whatsapp/plain-text) untuk pembacaan masuk selengkapnya, payload `whatsapp.received`, dan hal yang perlu diperhatikan.

## Batas dan kasus khusus

- **Jendela layanan pelanggan harus terbuka.** Teks biasa adalah pesan layanan, hanya dapat dikirim di dalam jendela yang terbuka; lihat [jendela layanan pelanggan](/docs/guides/whatsapp/message-types#the-customer-service-window) di hub.
- **`preview_url` hanya memengaruhi tautan pertama, dan hanya apa yang di-render oleh klien penerima.** Default-nya `false`. Atur untuk menampilkan pratinjau URL pertama di `body`; URL berikutnya di body yang sama tidak mendapatkan pratinjau. Jika klien penerima tidak dapat mengambil pratinjau untuk tautan tersebut, tautan ditampilkan sebagai tautan biasa yang dapat diklik tanpa pesan kesalahan. Tidak ada informasi di pembacaan yang memberi tahu apakah pratinjau benar-benar di-render.
- **Markdown WhatsApp adalah rendering klien penerima terhadap `body`, bukan bagian dari kontrak API.** Bird meneruskan `body` tanpa perubahan; tidak memvalidasi, menghapus, atau meng-encode `*bold*`, `_italic_`, `~strikethrough~`, atau monospace triple-backtick. Apakah penanda tersebut di-render sepenuhnya bergantung pada klien yang membuka pesan.
- **`body` masuk tidak dijamin non-empty, meskipun skema pembacaan menyatakan demikian.** Meta dapat melaporkan pesan masuk sebagai `"text": {}` atau dengan `body` kosong, dan Bird menyimpannya apa adanya tanpa membuat placeholder. Ini adalah gap yang diketahui dan masih terbuka: jangan menulis consumer yang memercayai `required: body` skema di sini.

## Langkah selanjutnya

- [Pesan layanan WhatsApp](/docs/guides/whatsapp/message-types): jendela layanan pelanggan dan model yang digunakan bersama oleh setiap pesan layanan
- [Mengirim pesan WhatsApp](/docs/guides/whatsapp/sending-whatsapp): request envelope, model `202`, dan cara coba lagi yang aman
- [Pesan interaktif](/docs/guides/whatsapp/message-types/interactive): ketika Anda menginginkan ketukan alih-alih balasan yang diketik

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