Nachrichten senden und empfangen
Diese Anleitung führt Sie von einem API-Schlüssel zu einem funktionierenden Zwei-Wege-Nachrichtenfluss: eine ausgehende Nachricht senden, die Zustellung verfolgen und die Antwort auf Ihrem eigenen Server empfangen. Das Beispiel nutzt SMS – dasselbe Dreischrittmuster (senden → verfolgen → empfangen) gilt auch für WhatsApp, RCS, Viber und E-Mail, jeweils über einen eigenen Endpunkt. Das werden Sie tun:- Eine Nachricht senden
- Die Zustellung verfolgen
- Eingehende Nachrichten empfangen
- Auf eine eingehende Nachricht antworten
Voraussetzungen
- Ein API-Schlüssel aus Einstellungen → API-Schlüssel. Verwenden Sie beim Erstellen einen Sandbox-Schlüssel (
dv_test_sk_…) – Sandbox-Versende sind kostenlos und simuliert, und liefern deterministische Zustellbelege, sodass Sie sowohl den Erfolgs- als auch den Fehlerpfad durchspielen können. Für Produktion wechseln Sie auf einen Live-Schlüssel (dv_live_sk_…). - Eine Absendernummer, die auf Ihrem Kanal senden darf. Für SMS ist das eine SMS-fähige Nummer, die Sie besitzen (per Numbers API oder über Dashboard → Numbers suchen und kaufen). Lassen Sie
fromweg, dann wählt Orbit einen zum Ziel passenden Absender. - Eine öffentliche HTTPS-URL für den Empfangsschritt. Während der Entwicklung eignet sich jedes Tunneling-Tool.
X-API-Key-Header.
1. Eine Nachricht senden
Senden Sie eine SMS mitPOST /messages/sms. Nur to und body sind erforderlich; from ist optional.
202 Accepted – die Nachricht ist persistiert und zur Zustellung in der Warteschlange eingeordnet, noch nicht an den Mobilfunkanbieter übergeben. Die Felder liegen unter data; meta trägt die request_id, die Sie für den Support loggen sollten.
id (msg_ gefolgt von 32 Hex-Zeichen) ist der Verweis für alle Folgeaufrufe – Statusabfragen, Zustell-Webhooks und der Message-Trace richten sich daran aus. Sandbox-Antworten fügen meta ein "test_mode": true hinzu.
Senden Sie bei jeder Sendung einen
Idempotency-Key. Wenn Sie denselben Schlüssel und denselben Body innerhalb von 24 Stunden erneut senden, erhalten Sie die ursprüngliche Antwort zurück statt eine Duplikat-Sendung; bei einem anderen Body wird 409 IDEMPOTENCY_KEY_REUSED zurückgegeben.Weitere Kanäle
Jeder Kanal hat unter der/messages-Präfix einen eigenen Endpunkt mit einer für diesen Kanal ausgelegten Body-Form. Es gibt keinen einzigen kanal-polymorphen Route – wählen Sie den Endpunkt, der zu Ihrem Kanal passt:
2. Die Zustellung verfolgen
Eine in der Warteschlange befindliche Nachricht durchläuft einen Status-Lebenszyklus, bevor sie den Empfänger erreicht:id und den neuen status:
message.sent– vom Mobilfunkanbieter angenommenmessage.delivered– dem Gerät zugestellt bestätigtmessage.failed– endgültiger Fehler (derstatusin der Nutzlast unterscheidetfailed,undelivered,expiredundsubmitted_no_receipt;error_code/error_messagetragen ggf. den Providergrund)
X-Orbit-Signature-Header, bevor Sie einer Nutzlast vertrauen, und deduplizieren anhand der Ereignis-id – die Zustellung erfolgt mindestens ein Mal (at-least-once). Siehe Webhook-Sicherheit für das Verifikations-Snippet.
3. Eingehende Nachrichten empfangen
Wenn jemand auf Ihre Nummer antwortet (oder Ihnen zuerst schreibt), zeichnet Orbit eine eingehende Nachricht auf und – falls Sie im Schritt obenmessage.received abonniert haben – sendet sie als POST an Ihre Webhook-URL:
direction=inbound:
Das eingehende Routing ist automatisch für Nummern, die Sie auf Orbit besitzen – eine Antwort auf eine Ihrer Absendernummern wird erfasst und bei
message.received-Abonnement an Ihren Webhook zugestellt. Eine eigene Eingangs-URL-Kabelverlegung pro Nummer ist nicht erforderlich.4. Auf eine eingehende Nachricht antworten
Antworten ist nur ein weiterer Sendeaufruf, adressiert zurück an den eingehendenfrom. Tauschen Sie to und from und rufen Sie POST /messages/sms erneut auf:
conversation_id auf GET /messages ziehen können.
Häufige Fehler
Jeder Fehler nutzt dieselbe Form – matchen Sie auferror.code (eine GROSSBUCHSTABEN-Konstante) und loggen Sie meta.request_id:
Vollständige Liste: Fehlercodes.
Nächste Schritte
- Messaging API-Referenz – jeder Nachrichtenendpunkt und jedes Feld
- Nachrichtenstatus-Lebenszyklus – die vollständige Statusmenge je Kanal
- Webhooks-Übersicht – Wiederholungen, Zustellgarantien und der Ereigniskatalog
- API-Integration – Sandbox, Idempotenz, Paginierung und SDKs für jeden Kanal
- Ratenlimits – pro-Kanal-Grenzen und Wiederholungs-Header