Setiap pesan yang dikirim seseorang ke nomor yang Anda provisikan datang sebagai webhook bertanda HMAC. Baca text-nya, balas dari nomor yang sama, dan biarkan Bird menangani STOP dan HELP untuk Anda. Bangun alur percakapan dan auto-reply pada API yang sudah Anda gunakan untuk mengirim.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const code = generateOtp();
const { data, error } = await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your Bird verification code is ${code}. Reply STOP to opt out.`,
}).safe();
if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."Today at 2:14 PM
Inbound hanyalah webhook lainnya.
Dua arah adalah bagian dari Bird SMS API. Saat seseorang mengirim teks ke nomor Anda, Anda mendapatkan event sms.received pada endpoint bertanda tangan dan terlindungi replay yang sama yang sudah membawa delivery receipt Anda. Tidak ada integrasi kedua dan tidak ada polling — verifikasi tanda tangan sekali dan branch pada type.
Dengarkan apa yang kembali.
Pesan inbound dan opt-out adalah event, sama seperti delivery receipt. Verifikasi satu tanda tangan, branch pada type, dan tangani masing-masing di handler yang sudah Anda tulis.
import { bird } from "@/lib/bird";
export async function POST(req: Request) {
const event = bird.webhooks.unwrap(
await req.text(),
Object.fromEntries(req.headers),
);
switch (event.type) {
case "sms.received":
await handleInbound(event.data.from, event.data.text);
break;
case "sms.opted_out":
await removeFromCampaigns(event.data.from);
break;
}
return new Response(null, { status: 204 });
}Payload-nya adalah amplop yang sama di setiap channel Bird: sebuah id evt_, tanda tangan HMAC, dan timestamp yang terlindungi replay.
sms.receivedSebuah pesan inbound mendarat di nomor Anda — membawa pengirim, nomor Anda, dan text-nya.sms.deliveredBalasan yang Anda kirim mencapai handset (DLR operator).sms.opted_outPengirim mengirim teks STOP — Bird mensupresi mereka dan memblokir pengiriman mendatang.
Pesan inbound bertanda tangan, secara lengkap.
Berikut tampilan sebuah event sms.received di jalur. from adalah siapa pun yang mengirim teks kepada Anda, to adalah nomor yang Anda provisikan, dan segment serta encoding dilaporkan dengan cara yang sama seperti pada pengiriman, sehingga balasan inbound yang panjang tidak pernah mengejutkan.
{
"id": "evt_7nQ9xLp2aR...",
"type": "sms.received",
"created_at": "2026-06-26T14:03:11Z",
"data": {
"id": "sms_5hV02Mr3n...",
"from": "+15005550006",
"to": "+14155550172",
"text": "YES book me in for Thursday",
"encoding": "GSM-7",
"segments": 1
}
}Balas dari nomor yang sama.
Sebuah balasan adalah pengiriman dengan from dan to ditukar. Setel from ke nomor Anda dan to ke pengirim asli, dan percakapan tetap pada satu nomor, sehingga penerima melihat sebuah thread alih-alih pengirim baru setiap kali. Bangun auto-reply, konfirmasi, atau alur percakapan lengkap di atasnya.
async function handleInbound(from: string, text: string) {
if (/^yes\b/i.test(text)) {
const { error } = await bird.sms.send({
from: "+14155550172", // your two-way number
to: from, // reply to the sender
text: "Booked. See you Thursday at 10am.",
}).safe();
if (error) throw error;
}
}STOP, HELP, dan START kami tangani untuk Anda.
Bird mengenali kata kunci khusus sebelum mencapai handler Anda: STOP menambahkan pengirim ke daftar penekanan Anda dan memicu sms.opted_out, HELP mengirim balasan bantuan otomatis, dan START membuat mereka berlangganan kembali. Pengiriman berikutnya ke nomor yang ditekan diblokir otomatis. Anda tetap bisa memakai kata kunci sendiri untuk YES, BOOK, atau apa pun yang dibutuhkan alur Anda. Aturan lengkap kata kunci dan opt-out ada di penanganan opt-out.
Dua hal yang akan Anda inginkan berikutnya.
Inbound memerlukan nomor yang berkemampuan dua arah — long codes, short codes, dan toll-free dapat menerima, alphanumeric sender ID tidak bisa. Untuk percakapan bolak-balik yang lebih kaya pada handset yang sama (indikator mengetik, read receipt, carousel), RCS meningkatkan percakapan di tempat perangkat mendukungnya.
Pelajari lebih dalam di dokumentasi.
Pasang webhook untuk event inbound, baca referensi error untuk kegagalan yang akan Anda tangani, dan periksa penyalahgunaan dan kepatuhan untuk aturan keyword dan consent.
FAQ SMS dua arah
Bagaimana SMS inbound mencapai aplikasi saya?+
Bisakah saya membalas pesan inbound?+
Apa yang terjadi saat seseorang mengirim teks STOP?+
Apakah saya perlu nomor khusus untuk dua arah?+
Sisanya dari platform SMS
Satu API, satu set key. Jelajahi kemampuan lainnya.
Kirim dan terima pada satu nomor, satu API.
Inbound dua arah adalah salah satu kemampuan Bird SMS API: pengiriman, nomor, kepatuhan, routing, dan analitik hadir bersamanya, di atas infrastruktur yang telah kami jalankan selama satu dekade.