Zwei-Wege
Nachrichten kommen zurück. Also verarbeiten Sie sie.
Jede Nachricht, die jemand an Ihre bereitgestellte Nummer sendet, trifft als HMAC-signierter Webhook ein. Lesen Sie den Text, antworten Sie von derselben Nummer und lassen Sie Bird STOP und HELP für Sie übernehmen. Bauen Sie dialogorientierte Abläufe und automatische Antworten auf der API, mit der Sie bereits senden.
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
Eingehend ist nur ein weiterer Webhook.
Zwei-Wege ist Teil der Bird SMS-API. Wenn jemand an Ihre Nummer schreibt, erhalten Sie ein sms.received-Ereignis auf demselben signierten, replay-geschützten Endpunkt, der bereits Ihre Zustellbestätigungen trägt. Es gibt keine zweite Integration und kein Polling — verifizieren Sie die Signatur einmal und verzweigen Sie auf den Typ.
Hören Sie auf das, was zurückkommt.
Eine eingehende Nachricht und ein Opt-out sind Ereignisse, genau wie eine Zustellbestätigung. Verifizieren Sie eine Signatur, verzweigen Sie auf den Typ und behandeln Sie jedes im Handler, den Sie bereits geschrieben haben.
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 });
}Die Payload ist dasselbe Envelope auf jedem Bird-Kanal: eine evt_-ID, eine HMAC-Signatur und ein replay-geschützter Zeitstempel.
sms.receivedEine eingehende Nachricht ist auf Ihrer Nummer eingetroffen — trägt den Absender, Ihre Nummer und den Text.sms.deliveredEine von Ihnen gesendete Antwort hat das Endgerät erreicht (Carrier-DLR).sms.opted_outDer Absender hat STOP gesendet — Bird hat ihn gesperrt und blockiert künftige Sendungen.
Eine signierte eingehende Nachricht, vollständig.
So sieht ein sms.received-Ereignis auf der Leitung aus. Das from ist, wer Ihnen geschrieben hat, das to ist Ihre bereitgestellte Nummer, und Segmente und Kodierung werden genauso gemeldet wie bei einem Versand, sodass eine lange eingehende Antwort nie eine Überraschung ist.
{
"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
}
}Antworten Sie von derselben Nummer.
Eine Antwort ist ein Versand mit vertauschtem from und to. Setzen Sie from auf Ihre Nummer und to auf den ursprünglichen Absender, und die Konversation bleibt auf einer Nummer, sodass der Empfänger einen Thread statt jedes Mal eines neuen Absenders sieht. Bauen Sie darauf automatische Antworten, Bestätigungen oder einen vollständigen dialogorientierten Ablauf auf.
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 und START übernehmen wir für Sie.
Bird erkennt die reservierten Schlüsselwörter, bevor sie Ihren Handler erreichen: STOP setzt den Absender auf Ihre Sperrliste und löst sms.opted_out aus, HELP sendet eine automatische Hilfeantwort, und START meldet ihn wieder an. Spätere Sendungen an eine gesperrte Nummer werden automatisch blockiert. Eigene Schlüsselwörter für YES, BOOK oder was Ihr Flow sonst braucht, behalten Sie weiterhin. Die vollständigen Schlüsselwort- und Opt-out-Regeln finden Sie unter Opt-out-Handling.
Zwei Dinge, die Sie als Nächstes brauchen.
Eingehend erfordert eine zweiseitig-fähige Nummer — Long Codes, Short Codes und Toll-Free können empfangen, alphanumerische Sender-IDs nicht. Für reichhaltigeres Hin und Her auf demselben Endgerät (Tippanzeigen, Lesebestätigungen, Karussells) wertet RCS die Konversation dort auf, wo das Gerät es unterstützt.
Vertiefen Sie sich in der Dokumentation.
Verdrahten Sie Webhooks für eingehende Ereignisse, lesen Sie die Fehlerreferenz für die Fehlschläge, die Sie behandeln werden, und prüfen Sie Missbrauch und Compliance für die Keyword- und Einwilligungsregeln.
Zwei-Wege-SMS-FAQ
Wie erreicht eine eingehende SMS meine App?+
Kann ich auf eine eingehende Nachricht antworten?+
Was passiert, wenn jemand STOP sendet?+
Benötige ich eine spezielle Nummer für Zwei-Wege?+
Der Rest der SMS-Plattform
Eine API, ein Satz Keys. Entdecken Sie die anderen Funktionen.
Senden und empfangen auf einer Nummer, einer API.
Eingehende Zwei-Wege-Kommunikation ist eine Funktion der Bird SMS-API: Senden, Nummern, Compliance, Routing und Analytics gehören dazu, auf einer Infrastruktur, die wir seit einem Jahrzehnt betreiben.