Template SMS
Template adalah pesan yang dapat digunakan kembali dan dikirim berdasarkan referensi, dengan menyediakan nilai seperti kode verifikasi sekali pakai atau nomor pesanan. Template system bawaan Bird mencakup pesan autentikasi dan transaksional. Pembuatan template workspace sedang dalam pratinjau API; dashboard tetap menampilkan katalog bawaan.
Template menyediakan kategori pesan yang digunakan untuk pemeriksaan kepatuhan tujuan. Template bawaan juga memilih pengirim untuk tujuan, sehingga Anda tidak perlu menyertakan from. Template workspace memerlukan pengirim Anda sendiri, seperti halnya pengiriman teks bebas.
Menjelajahi template di dashboard
Halaman Templates di bawah SMS menampilkan daftar template bawaan. Cari berdasarkan nama atau filter berdasarkan status dan kategori.

Setiap baris menampilkan field yang Anda perlukan untuk memilih dan mengirim template:
- Name: nama tampilan template dan slug-nya (misalnya bird_order_confirmation). Slug adalah handle yang Anda kirim saat mengirim pesan; nilainya tetap sejak pembuatan.
- Status: template bawaan berstatus Active dan siap dikirim. Template workspace berstatus Draft hingga dipublikasikan, lalu menjadi Active. Perlakukan field status bersama ini sebagai set terbuka.
- Category: klasifikasi konten (transactional, marketing, atau authentication) yang diterapkan pada pesan yang dikirim dari template.
- Language: bahasa yang tersedia dalam template, sebagai tag BCP 47. Beberapa yang pertama ditampilkan sebagai chip dengan overflow +N jika template dilokalkan ke banyak bahasa.
- Scope: System untuk template bawaan Bird. Workspace mengidentifikasi template yang Anda buat melalui pratinjau API.
- Updated: kapan template terakhir diubah. Template bawaan tidak menampilkan tanggal.
Isi template
Selain nama, kategori, dan bahasa, setiap template mendefinisikan variabel yang diisi saat pengiriman. Sebuah variabel memiliki key, type, flag required, dan constraint yang mudah dibaca. Template bawaan memiliki slot bertipe; template workspace menyimpulkan slot text generik dan menerima nilai parameter skalar. Variabel sensitive diganti dalam konten pesan yang disimpan. Antrean transport tetap membawa teks yang diperlukan untuk pengiriman. Sediakan setiap variabel wajib dan jangan gunakan kunci yang tidak dideklarasikan.
Template tersedia dalam satu atau lebih bahasa, dan default_language adalah yang digunakan pengiriman jika tidak ada bahasa yang disebutkan. Jika Anda meminta bahasa yang tidak tersedia dalam template, Bird melakukan fallback: pertama ke bentuk yang lebih luas dari bahasa yang sama, lalu ke bahasa default, karena template SMS mengatur on_missing_language default ke fallback. Template bawaan menggunakan language_source_required: false. Template workspace dapat mewajibkan bahasa atau mengatur on_missing_language: fail; kebijakan tersebut berlaku segera, sedangkan perubahan konten dan bahasa default berlaku saat publikasi.
Mencantumkan template dari API
GET /v1/sms/templates mengembalikan halaman ringkasan template dengan paginasi kursor. Ikuti next_cursor menggunakan starting_after hingga bernilai null; satu halaman bukan seluruh katalog. Membaca template memerlukan kunci API dengan scope sms_management, yang terpisah dari scope sms yang digunakan pengiriman. Filter berdasarkan scope, category, status, atau language, atau cari dengan q:
for await (const tpl of bird.smsTemplates.list({ scope: "system" })) {
console.log(tpl.id, tpl.slug);
}for template in client.sms_templates.list(scope="system"):
print(template.id, template.slug)for tpl, err := range client.SmsTemplates.List(context.Background(), bird.SMSTemplateListParams{
Scope: "system",
}) {
if err != nil {
log.Fatal(err)
}
fmt.Println(tpl.Id, *tpl.Slug)
}foreach ($bird->smsTemplates->list(['scope' => 'system']) as $template) {
echo $template->getId(), ' ', $template->getSlug(), "\n";
}bird sms templates listcurl "https://eu1.platform.bird.com/v1/sms/templates?category=authentication" \
-H "Authorization: Bearer bk_eu1_..."Ringkasan template berisi identitas, kategori, status, bahasa yang tersedia, dan referensi versi draft/live. Ringkasan ini tidak menyertakan teks sumber dan variabel. Ambil template berdasarkan slug atau ID dengan GET /v1/sms/templates/{template_ref}. Gunakan draft_version_id untuk memeriksa konten workspace yang dapat diedit, atau live_version_id untuk memeriksa yang digunakan pengiriman. Template workspace baru tidak memiliki versi live hingga dipublikasikan.
Baca versi yang dipilih melalui GET /v1/sms/templates/{template_ref}/versions/{version_id}. Respons berisi variabel dan peta konten berdasarkan bahasa. Untuk mengambil satu bahasa, tambahkan /languages/{language}. Filter language pada daftar mencocokkan konten yang dipublikasikan; bahasa yang hanya ada di draft tidak cocok.
Template bawaan memiliki satu versi baca-saja. ID stabilnya mengidentifikasi entri katalog; hash kontennya membedakan pembaruan sumber. Versi workspace yang dipublikasikan menyimpan riwayat yang tidak dapat diubah. Daftar versi juga menggunakan paginasi kursor dan tidak menyertakan teks sumber.
Pembuatan workspace dalam pratinjau API
Gunakan kunci API dengan akses tulis sms_management. Kirim permintaan JSON ke host API regional kunci Anda, dengan Authorization: Bearer <API_KEY> dan Content-Type: application/json. Berikan setiap mutasi Idempotency-Key sendiri; gunakan kembali kunci itu hanya saat mencoba lagi permintaan yang sama.
- Buat template dengan POST /v1/sms/templates dan {"slug":"order-shipped","category":"transactional"}. Respons 201 berisi id dan draft_version_id; template dimulai dengan draft bahasa Inggris kosong. Simpan kedua ID untuk panggilan berikutnya.
- Simpan teks dengan PUT /v1/sms/templates/{id}/versions/{draft_version_id}/languages/en dan {"text":"Your order {{ order_number }} has shipped."}. Respons 200 menyertakan draft_revision.
- Publikasikan dengan POST /v1/sms/templates/{id}/versions/{draft_version_id}/submit, menggunakan revisi tersebut sebagai {"expected_revision":1} (ganti 1 dengan nilai yang dikembalikan). Respons 200 dengan valid: true mengidentifikasi versi yang dipublikasikan. 422 melaporkan konten draft yang tidak valid; perbaiki masalah bahasa yang dikembalikan dan kirim lagi dengan kunci idempotensi baru.
Publikasi memerlukan teks yang tidak kosong dan variabel yang sama di setiap bahasa. Publikasi berlaku secara sinkron, tanpa persetujuan penyedia. API juga mendukung pratinjau, duplikasi, pengaturan ulang draft ke konten live, dan rollback ke versi yang dipublikasikan. Pengeditan melalui dashboard tidak tersedia.
Baca revisi saat ini sebelum memperbarui pengaturan template atau melakukan rollback. Penyimpanan bahasa juga dapat menyertakan revision guard; guard yang kedaluwarsa mengembalikan 409. Pratinjau menggunakan versi dan parameter yang dipilih untuk melaporkan teks yang dirender, bahasa yang digunakan, encoding, dan jumlah segmen sebelum pengiriman.
Mengirim dengan template
Atur objek template pada pengiriman, bukan text. Hilangkan category dan media_urls. Untuk template bawaan di bawah ini, hilangkan from juga. Template workspace memerlukan from dan harus memiliki versi yang dipublikasikan.
Template autentikasi bawaan juga memilih merek pengirim bersama: bird_otp_verification_ttl menggunakan Authifly, sedangkan bird_otp_verification_ttl_bird_verify menggunakan Bird Verify. Tujuan menentukan apakah pengirim ditampilkan sebagai nama merek, short code, atau nomor telepon.
Kirim template bawaan:
await bird.sms.send({
to: "+14155550100",
template: { slug: "bird_otp_verification", parameters: { code: "123456" } },
});client.sms.send(
to="+14155550100",
template="bird_otp_verification",
parameters={"code": "123456"},
)msg, err := client.Sms.Send(context.Background(), bird.SmsSendParams{
To: "+14155550100",
Template: "bird_otp_verification",
Parameters: map[string]any{"code": "123456"},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(msg.Id)$message = $bird->sms->send(
to: '+14155550100',
template: 'bird_otp_verification',
parameters: ['code' => '123456'],
);
echo $message->getId(), ' ', $message->getStatus();bird sms send \
--parameters '{"code":"123456"}' \
--template bird_otp_verification \
--to +14155550100curl -X POST "https://eu1.platform.bird.com/v1/sms/messages" \
-H "Authorization: Bearer bk_eu1_..." \
-H "Content-Type: application/json" \
-d '{
"to": "+14155550100",
"template": {
"slug": "bird_otp_verification_ttl",
"language": "en",
"parameters": { "code": "481920", "ttl": "10" }
}
}'slug adalah handle template dari katalog (Anda dapat mengidentifikasi template berdasarkan id sebagai gantinya). language memilih isi yang telah dilokalkan; hilangkan untuk bahasa default template. parameters menyediakan nilai untuk setiap variabel template, dikunci berdasarkan nama variabel. Variabel wajib yang hilang, kunci yang tidak dideklarasikan, nilai yang tidak sesuai dengan batasan variabel, atau objek parameters yang melebihi 16 KB saat diserialisasi ditolak dengan 422.
Respons 202 menyertakan from yang dipilih, kategori template, ID template dan versi, hash sumber, serta bahasa yang diminta/digunakan. Teks pesan autentikasi dikembalikan sebagai **REDACTED**. Pesan yang diterima menyimpan konten yang dirender dan versi yang dipilih meskipun Anda kemudian mempublikasikan, melakukan rollback, atau menghapus template.
Semua hal lain tentang pengiriman (penerima, tag, metadata, allowlist tujuan, dan model 202 asinkron) bekerja persis seperti pada pengiriman teks bebas.
Langkah selanjutnya
- Mengirim SMS: tambahkan field template ke payload pengiriman.
- Log SMS: temukan pesan yang telah dikirim dan ikuti siklus hidupnya.
- Events: terima event pengiriman setiap pesan.
- Mengirim SMS dengan template: video yang mengirim salah satu template yang telah disetujui dari terminal
Sumber daya terkait
Lanjutkan dengan dokumentasi, panduan, dan contoh untuk topik ini. Sumber daya tersedia dalam bahasa Inggris.
Gunakan alatnyaPreview message segmentsJelajahi kemampuannyaSMS content and templatesIkuti jalur pembelajaranBuild your first integration
Coba praktiknya dan dapatkan ringkasan implementasi