Telnyx Messaging
Agenten mit eingehenden SMS/MMS-, WhatsApp- und RCS-Nachrichten starten und Antworten, Medien und genehmigte WhatsApp-Vorlagen über Telnyx senden.
Auf dieser Seite
| Modi | Inbound, Outbound |
| YAML-Typ | telnyx_messaging |
| Zugangsdaten | Ein Kontozugang (Connection) vom Typ Telnyx, den auch Telnyx Voice nutzt |
| Bridge | Nicht unterstützt |
| Custom Domain | Nicht unterstützt |
| Verknüpfte Agenten | Einer oder mehrere. Eine eingehende Nachricht startet jeden verknüpften Agenten; bei Outbound legt jede Verknüpfung fest, wie ihr Agent sendet. |
| Während der Pause | Inbound: Telnyx erhält 200, und es startet kein Run. Die Nachricht wird weder gespeichert noch später zugestellt. Outbound: Es wird nichts gesendet. |
Einrichtung
Bereite den Absender in Telnyx vor: eine Rufnummer mit SMS oder MMS oder eine aktivierte, registrierte WhatsApp-Nummer beziehungsweise einen RCS-Agenten, jeweils mit zugewiesenem Messaging-Profil. Gib der Nummer für Inbound über SMS und WhatsApp ein eigenes Messaging-Profil und verschiebe andere Nummern und Kurzwahlnummern in ein anderes Profil.
Öffne den Agenten. Klicke im Connector Flow für Inbound auf Add inbound connector oder für Outbound auf Add outbound connector. Klicke dann auf Create New Connector und wähle Telnyx Messaging.
Wähle den Mode. Wähle unter Connection einen Telnyx-Kontozugang oder lege einen mit dem API-Schlüssel und dem öffentlichen Schlüssel des Kontos an. Wähle den Channel und dann den Telnyx sender. Absender, die die Verbindung nicht nutzen kann, etwa eine Nummer ohne Messaging-Profil oder eine mit geteiltem Profil, erscheinen deaktiviert in der Liste und nennen den Grund. Für eine WhatsApp-Nummer, die nicht bei Telnyx gehostet ist, trägst du ihre WhatsApp messaging profile ID ein. Bei Outbound kannst du einen Default recipient und ein Default WhatsApp template setzen. Klicke auf Create.
Bei Inbound trägt connic den Webhook am Messaging-Profil des Absenders oder am RCS-Agenten ein; siehe Einrichtung bei Telnyx. Bei einer externen WhatsApp-Nummer trägst du ihn selbst ein. Bei Outbound legst du fest, wie der Agent sendet: Automatic outbound connector, Agent-tool outbound connector oder Middleware outbound connector. Für Antworten wählst du Only selected inputs und die Inbound-Verbindung.
Sende eine Nachricht an den Absender und öffne den Run. Bei Outbound öffnest du den Run der Verbindung und suchst die zurückgegebene Nachrichten-ID in Telnyx.
Im Code
Deklariere die Verbindungen in connectors/*.yaml. Setze Rufnummern und IDs in Anführungszeichen. Ohne sie liest YAML eine Nummer wie +14155550123 als Ganzzahl und das Deployment scheitert. Eine Inbound-Verbindung, die SMS empfängt:
type: telnyx_messaging
mode: inbound
connection: support-telnyx
config:
channel: sms
sender: "+14155550123"
agents:
- messaging-assistantEine Outbound-Verbindung, die von derselben Nummer antwortet:
type: telnyx_messaging
mode: outbound
connection: support-telnyx
config:
channel: sms
sender: "+14155550123"
agents:
- name: messaging-assistant
outbound: { usage: automatic, source: [support-sms] } # antwortet auf Runs der Inbound-DateiKonfiguration
Die Felder einer Telnyx-Messaging-Verbindung, in connectors/*.yaml genauso wie in der REST API und connic MCP. Die Beschreibungen nennen die passende Einstellung im Dashboard. Felder, die alle Verbindungen gemeinsam haben, etwa agents und environments, beschreibt Verbindungen im Code.
| Feld | Typ | Status | Beschreibung |
|---|---|---|---|
| type | string | Erforderlich | telnyx_messaging. |
| mode | string | Erforderlich | inbound oder outbound. Dashboard: Mode. |
| connection | string | Erforderlich | Name oder ID eines Telnyx-Kontozugangs, der API-Schlüssel und öffentlichen Schlüssel enthält. Dashboard: Connection. |
| config | object | Erforderlich | Einstellungen für Telnyx Messaging. |
| channel | string | Optional | Inbound und Outbound. sms für SMS und MMS, whatsapp oder rcs. Dashboard: Channel.Standard: sms |
| sender | string | Erforderlich | Inbound und Outbound. Der Telnyx-Absender: für SMS und WhatsApp eine Nummer im E.164-Format in Anführungszeichen wie "+14155550123", für RCS die ID des Agenten. In beiden Modi muss er im Konto des Kontozugangs existieren und ein Messaging-Profil haben. Dashboard: Telnyx sender. |
| whatsapp_profile_id | string | Optional | Inbound und Outbound, nur WhatsApp. Für eine WhatsApp-Nummer, die nicht bei Telnyx gehostet ist: die ID ihres Telnyx-Messaging-Profils, eine UUID. Die Verbindung wechselt damit zur manuellen Einrichtung; siehe Externe WhatsApp-Nummern. Bei einer Nummer, die Telnyx hostet, wird das Feld ignoriert. Dashboard: WhatsApp messaging profile ID. |
| to | string | Optional | Outbound. Standardempfänger, eine Nummer im E.164-Format in Anführungszeichen. Ohne ihn antwortet die Verbindung auf eingehende Nachrichten; siehe Empfänger. Dashboard: Default recipient. |
| whatsapp_template | object | Optional | Outbound, nur mit dem Kanal WhatsApp; mit einem anderen Kanal lässt sich die Verbindung nicht anlegen. Genehmigte Standardvorlage: template_id oder name und language.code, dazu optional components. Solange sie gesetzt ist, ersetzt sie den Text des Agenten; siehe WhatsApp-Vorlagen. Dashboard: Default WhatsApp template, als JSON. |
Kontozugang
Ein Telnyx-Kontozugang enthält die Zugangsdaten des Kontos und kann beliebig viele Verbindungen für Telnyx Messaging und Telnyx Voice bedienen. Kanal und Absender gehören zu jeder einzelnen Verbindung. Mit dem API-Schlüssel listet connic Absender auf, setzt Webhooks und sendet Nachrichten; mit dem öffentlichen Schlüssel prüft connic die Signatur jedes Ereignisses von Telnyx. Änderst du den Kontozugang, erhalten alle seine Verbindungen die neuen Zugangsdaten.
| Einstellung | Beschreibung |
|---|---|
| API key | Ein Telnyx-API-Schlüssel für das Konto. Du erstellst ihn im Telnyx Mission Control Portal. |
| Public key | Der Base64-kodierte öffentliche Ed25519-Schlüssel desselben Kontos aus den API-Keys-Einstellungen im Telnyx Mission Control Portal. Telnyx bietet keine API, um ihn abzufragen. Beim Speichern des Kontozugangs prüft connic deshalb nur, ob es ein gültiger Schlüssel ist. Ein Schlüssel aus einem anderen Konto fällt erst auf, wenn Nachrichten eingehen: connic lehnt deren Ereignisse mit 403 ab und schreibt den Signaturfehler in die Logs der Verbindung. |
Erzeugte Werte
connic setzt diese Werte beim Anlegen der Verbindung oder wenn sich der Absender ändert. Die Webhook-URL kopierst du aus dem Detailbereich. Sie gehören nicht in YAML-Dateien; connic lint lehnt sie ab.
| Wert | Modi | Beschreibung |
|---|---|---|
| Incoming-message webhook | Inbound | Die URL, an die Telnyx Nachrichtenereignisse sendet. Bei SMS und WhatsApp gehört die URL zum Kontozugang und zum Messaging-Profil; SMS- und WhatsApp-Verbindungen für dieselbe Nummer teilen sie also. Eine RCS-Verbindung hat ihre eigene. |
sender_id | Inbound, Outbound | Die Telnyx-ID des Absenders: die ID der Rufnummer, die WhatsApp Phone Number ID oder die ID des RCS-Agenten. |
messaging_profile_id | Inbound, Outbound | Das Messaging-Profil des Absenders, bei einer externen WhatsApp-Nummer die whatsapp_profile_id. |
setup_mode | Inbound, Outbound | automatic, bei einer externen WhatsApp-Nummer manual. |
Agent-Input
Modi: Inbound
Telnyx sendet signierte JSON-Ereignisse an den Webhook der Verbindung. Nur Ereignisse vom Typ message.received starten Runs; Zustell- und Lesebestätigungen sowie Nachrichten-Echos starten keine. connic prüft jede Nachricht, reiht für jeden verknüpften Agenten einen Run ein und antwortet mit 200. Antworten an den Kunden sendet eine eigene Outbound-Verbindung. Der Run erhält:
{
"event_id": "7a3a86b3-0e77-48f6-914a-63ad28b7d64e",
"message_id": "4031938e-60e4-4235-a8dd-0b1c55a23e7a",
"channel": "sms",
"from": "+14155550124",
"to": "+14155550123",
"text": "Wurde Bestellung 12345 verschickt?",
"conversation_id": "telnyx_messaging:9e0f77d9-2fd8-5a8e-8d47-59fbf5b8a091",
"raw": {
"id": "4031938e-60e4-4235-a8dd-0b1c55a23e7a",
"direction": "inbound",
"type": "SMS",
"messaging_profile_id": "<profile-id>",
"from": {"phone_number": "+14155550124"},
"to": [{"phone_number": "+14155550123"}],
"text": "Wurde Bestellung 12345 verschickt?",
"media": []
}
}event_idist die Ereignis-ID von Telnyx. Wird dasselbe Ereignis erneut zugestellt, startet für einen Agenten kein zweiter Run.fromist der Kunde undtoder Absender der Verbindung, als E.164-Nummern ohne Kanalpräfix. Bei RCS isttodie ID des Agenten.textist der Nachrichtentext: bei WhatsApp-Medien die Bildunterschrift, bei einer RCS-Antwort auf einen Vorschlag dessen Text. Bei reinen Mediennachrichten ist er leer.rawenthält die ursprünglichen Nachrichtendaten von Telnyx.filesundfile_issueskommen hinzu, wenn die Nachricht Anhänge hat.
Anhänge
connic lädt eingehende Medien herunter und übergibt sie unter files. Jede Datei hat name (etwa attachment-1.jpg), mime_type, Base64-kodierte data und size in Byte. Eine Nachricht nimmt bis zu 50 Dateien an, höchstens 32 MiB insgesamt.
Eine ungültige oder nicht abrufbare Datei lässt connic einzeln aus. Überschreitet eine Datei die Anzahl- oder Größengrenze, behält connic die Dateien davor und lässt diese und alle folgenden aus. file_issues nennt jede ausgelassene Datei mit code, Meldung und überschrittener Grenze, und die Logs der Verbindung erhalten eine Warnung. Der Run startet auch ohne angenommene Datei, außer Files required ist für die Verknüpfung des Agenten aktiviert. Der Agent sollte files und file_issues prüfen.
Gespräche
conversation_id bleibt gleich für jede Kombination aus Inbound-Verbindung, Kanal, Absender und Kunde. Damit der Verlauf über mehrere Nachrichten erhalten bleibt, setze session.key auf input.conversation_id und deploye den Agenten erneut; Sessions sind standardmäßig aus. Ist eine automatische Outbound-Verbindung verknüpft, wird die Textausgabe des Agenten zur Antwort.
version: "1.0"
name: messaging-assistant
description: "Beantwortet eingehende Telnyx-Nachrichten"
model: connic/gpt-5.6-terra
system_prompt: |
Beantworte die eingehende Nachricht kurz.
Frage nach fehlenden Angaben, statt Annahmen zu treffen.
Gib die Antwort als einfachen Text zurück.
session:
key: input.conversation_id
ttl: 86400Das Beispiel hält ein Gespräch 86.400 Sekunden lang. Die Session-Einstellungen beschreibt Agent YAML.
Einrichtung bei Telnyx
Modi: Inbound
Beim Anlegen einer Inbound-Verbindung trägt connic die Webhook-URL der Verbindung als primären Webhook am Messaging-Profil des Absenders ein, mit Webhook-API-Version 2, beziehungsweise am RCS-Agenten. Die Voice-Einstellungen der Nummer bleiben unverändert. Outbound-Verbindungen ändern in Telnyx nichts.
- connic lehnt deaktivierte Messaging-Profile und RCS-Agenten ab, SMS- oder WhatsApp-Profile, die weitere Nummern oder Kurzwahlnummern enthalten, und Profile oder RCS-Agenten, deren Webhook schon auf eine andere connic-Verbindung zeigt. SMS- und WhatsApp-Verbindungen teilen ein Profil nur über denselben Kontozugang; siehe Gemeinsame Rufnummern.
- Beim Wechsel des Absenders oder beim Löschen der letzten Inbound-Verbindung eines Profils entfernt connic den alten Webhook nur, wenn er noch der connic-URL entspricht. Das gilt auch für einen WhatsApp-Webhook, den du selbst eingetragen hast. Eine andere URL, die du später in Telnyx eingetragen hast, bleibt erhalten.
- Kann connic den Webhook nicht entfernen, wird die Verbindung nicht gelöscht; prüfe den Absender in Telnyx und versuche es erneut.
Gemeinsame Rufnummern
SMS und WhatsApp können dieselbe Nummer mit getrennten Inbound-Verbindungen und Agenten nutzen. Beide Verbindungen müssen denselben Kontozugang verwenden und teilen sich eine Webhook-URL; connic ordnet jede Nachricht anhand von Kanal und Empfänger zu. Löschst du eine der Verbindungen, bleibt der andere Kanal erreichbar. Zwei Inbound-Verbindungen können nicht denselben Kanal und Absender verwenden.
Externe WhatsApp-Nummern
Bei einer WhatsApp-Nummer, die nicht bei Telnyx gehostet ist, findet connic das Messaging-Profil nicht. Trage die Profil-ID in whatsapp_profile_id ein. connic prüft, ob das Profil zum Konto gehört, kann aber nicht bestätigen, dass die Nachrichten der Nummer über dieses Profil laufen. Outbound-Verbindungen für die Nummer brauchen dieselbe whatsapp_profile_id.
Kopiere nach dem Anlegen der Inbound-Verbindung den Incoming-message webhook aus dem Detailbereich. Trage ihn in Telnyx als primären Webhook dieses Messaging-Profils ein, wähle Webhook-API-Version 2 und stelle sicher, dass eingehende Nachrichten der Nummer über das Profil laufen. Der Webhook für Statusänderungen des WhatsApp Business Accounts ist eine separate Einstellung und leitet keine Nachrichten weiter.
Kanäle und Absender
Die Liste Telnyx sender zeigt je nach Kanal die Rufnummern des Kontos mit SMS oder MMS, seine aktivierten WhatsApp-Nummern oder seine aktivierten RCS-Agenten. Registriere WhatsApp-Nummern und RCS-Agenten in Telnyx, bevor du sie auswählst; ein RCS-Agent braucht außerdem ein zugewiesenes Messaging-Profil und die Freigaben für den Produktivbetrieb. Ein Wechsel des Kontozugangs oder Kanals leert die Auswahl. Die Adressformate gelten für beide Modi:
| Kanal | Telnyx-Absender | Kundenadresse |
|---|---|---|
| SMS / MMS | Rufnummer mit SMS oder MMS, etwa +14155550123 | +14155550124 |
Aktivierte, registrierte Nummer, etwa +14155550123 | +14155550124 | |
| RCS | ID eines aktivierten RCS-Agenten des Kontos | +14155550124 |
Rufnummern verwenden das E.164-Format mit führendem + und Ländervorwahl, ohne Kanalpräfix.
Ausgehende Zustellung
Modi: Outbound
Eine Outbound-Verbindung sendet über Telnyx vom konfigurierten Absender und seinem Messaging-Profil. Sie sendet, wenn der Run eines verknüpften Agenten abgeschlossen ist, wenn das Modell sie als Tool aufruft oder wenn Middleware sie aufruft, je nach Nutzung der Verknüpfung. Die Outbound-Einrichtung trägt keinen Webhook ein.
Automatische Payload
Eine automatische Verknüpfung sendet die abschließende Ausgabe des Runs. Reiner Text wird zum Nachrichtentext. Ein JSON-Objekt kann die Felder der Agent-Tool-Payload unten enthalten; der Text darf auch in body, message, response oder output stehen.
Payload für Agent-Tool und Middleware
Das Modell oder die Middleware übergibt ein JSON-Objekt mit diesen Feldern. Unbekannte Felder führen zu einem Validierungsfehler. Eine Nachricht braucht Text, Medien oder eine Vorlage. Das Beispiel sendet ein WhatsApp-Bild mit Bildunterschrift:
{
"to": "+14155550124",
"text": "Das Versandetikett",
"media_urls": ["https://example.com/shipping-label.png"],
"media_type": "image"
}text: der Nachrichtentext. Bei reinen Mediennachrichten optional.to: der Empfänger; siehe Empfänger.media_urls: 1 bis 10 öffentliche Medien-URLs; siehe Medien.media_type: bei WhatsApp-Medienimage,video,document,audioodersticker.whatsapp_template: eine genehmigte Vorlage; siehe WhatsApp-Vorlagen.
Empfänger
connic sendet an den ersten Empfänger, den es findet:
toin der Payload oder in der automatischen Ausgabe.- Der Default recipient der Verbindung.
- Bei einem Run, den eine Inbound-Verbindung für Telnyx Messaging gestartet hat, der Kunde, der die Nachricht gesendet hat. Beide Verbindungen müssen denselben Kontozugang, Kanal, Absender und dasselbe Messaging-Profil verwenden.
Ein Standardempfänger hat Vorrang vor Antworten; lass ihn leer, um jedem Kunden zu antworten. Findet connic keinen Empfänger, schlägt der Versand fehl.
Medien
Übergib in media_urls öffentliche HTTP- oder HTTPS-URLs ohne eingebettete Zugangsdaten; Telnyx ruft die Dateien ab. Ausgehende Medien verwenden URLs, nicht das Base64-Format unter files aus eingehenden Nachrichten.
- SMS/MMS: bis zu 10 Medien-URLs. Eine Nachricht mit Medien geht als MMS hinaus.
- WhatsApp: eine Medien-URL mit
media_type. Bei Bildern, Videos und Dokumenten wird der Text zur Bildunterschrift; Audio und Sticker dürfen keinen Text enthalten. - RCS: Text oder eine Medien-URL. Sende Text und Medien als getrennte Nachrichten.
WhatsApp-Vorlagen
Außerhalb des Kundenservice-Fensters von WhatsApp sendest du eine genehmigte Vorlage. Setze whatsapp_template als Standard an der Verbindung oder für eine einzelne Nachricht in der Payload. Bestimme die Vorlage über template_id oder über name und language.code. Optionale components vom Typ header, body oder button enthalten die Parameter im Telnyx-WhatsApp-Format.
{
"to": "+14155550124",
"whatsapp_template": {
"name": "order_confirmation",
"language": {"code": "de"},
"components": [{
"type": "body",
"parameters": [{"type": "text", "text": "12345"}]
}]
}
}Eine Vorlage in der Payload ersetzt den Standard der Verbindung und lässt sich nicht mit Text oder media_urls kombinieren. Solange die Verbindung eine Standardvorlage hat, nutzt jede Nachricht diese: Der Text des Agenten wird ignoriert, Medien-URLs werden abgelehnt. Vorlagen setzen den Kanal WhatsApp voraus. Registrierung und Genehmigung erfolgen bei Telnyx und WhatsApp.
Zustellung und Wiederholungen
Ein erfolgreicher Run der Verbindung bedeutet, dass Telnyx die Anfrage angenommen hat, nicht, dass die Nachricht zugestellt wurde. Die Ausgabe des Runs enthält die Nachrichten-ID von Telnyx; die endgültige Zustellung prüfst du in Telnyx.
connic wiederholt Verbindungsfehler vor der Übermittlung und 429-Antworten, wartet dabei so lange, wie Retry-After von Telnyx verlangt, und versucht es insgesamt 3-mal. Andere Fehler werden nicht wiederholt. Ist das Ergebnis unklar, etwa nach einer Zeitüberschreitung oder einer 5xx-Antwort, prüfe Telnyx, bevor du erneut sendest; Telnyx hat die Nachricht womöglich schon angenommen.
Limits und Fehler
| Limit | Wert |
|---|---|
| WhatsApp-Text | 4.096 UTF-8-Bytes; als Bildunterschrift zu Medien 1.024 Bytes |
| RCS-Text | 3.072 Zeichen |
| Ausgehende Medien | 10 URLs für MMS, laut Telnyx-Message-API insgesamt höchstens 1 MB; eine URL für WhatsApp und RCS |
| Eingehende Anhänge | 50 Dateien, höchstens 32 MiB insgesamt |
| Eingehende Anfrage | 256 KiB JSON |
| Eingehende Nachrichten | 1.000 pro Minute und Verbindung, auch wenn sich SMS- und WhatsApp-Verbindungen eine Webhook-URL teilen |
| Signaturen | connic lehnt Ereignisse ab, deren Zeitstempel mehr als 5 Minuten abweicht. |
| Zustellversuche | 3 insgesamt bei Fehlern, die wiederholt werden können |
| Aktive Verbindungen | Ist das Limit aktiver Verbindungen des Tarifs erreicht, schlägt das Anlegen in beiden Modi mit 403 fehl, statt die Verbindung pausiert anzulegen. Ein Deployment, das sie am Limit anlegen oder zurückholen würde, schlägt fehl. |
Bei Inbound prüft connic die Ed25519-Signatur und den Zeitstempel jedes Ereignisses mit dem öffentlichen Schlüssel des Kontozugangs, danach Messaging-Profil, Kanal und Empfänger, und antwortet Telnyx mit einem dieser Status:
| Status | Bedeutung |
|---|---|
| 200 | Angenommen. Ereignisse, die keine eingehenden Nachrichten sind, pausierte Verbindungen und Verbindungen ohne verknüpfte Agenten erhalten ebenfalls 200 und starten keinen Run. |
| 400 | Das Ereignis ist ungültig, oder die Nachricht ist keine eingehende. |
| 403 | Die Signatur ist ungültig oder zu alt, oder Messaging-Profil, Kanal oder Empfänger passen nicht zur Verbindung. Prüfe, ob der öffentliche Schlüssel des Kontozugangs aus demselben Telnyx-Konto stammt und ob Kanal und Absender der Verbindung zur Nachricht passen. Einen Signaturfehler zeigen auch die Logs der Verbindung. |
| 404 | Unter dieser URL gibt es keine Inbound-Verbindung für Telnyx Messaging. |
| 413 | Die Anfrage ist größer als 256 KiB. |
| 415 | Die Anfrage ist kein JSON. |
| 429 | Das Limit der Verbindung für eingehende Nachrichten ist erreicht. |
| 503 | connic konnte die Nachricht in diesem Moment nicht einreihen, oder mehrere Inbound-Verbindungen passen zu ihr. |
| Problem | Lösung |
|---|---|
| Das Anlegen der Verbindung schlägt fehl | Prüfe den gemeldeten Telnyx-Fehler. Aktiviere Absender und Messaging-Profil und verschiebe andere Nummern und Kurzwahlnummern in ein anderes Profil. |
| Es startet kein Run | Prüfe, ob die Verbindung aktiv und mit einem deployten Agenten verknüpft ist und ob Telnyx an die exakte Webhook-URL sendet. Prüfe bei einer externen WhatsApp-Nummer außerdem die Profilzuordnung der Nummer und Webhook-API-Version 2 in Telnyx. |
| Anhänge fehlen | Lies file_issues im Run-Input und die Warnung zu Anhängen in den Logs der Verbindung. Jeder Eintrag nennt die ausgelassene Datei und den Grund. |
| Versand scheitert ohne Empfänger | Setze to, hinterlege einen Standardempfänger oder sorge dafür, dass Inbound- und Outbound-Verbindung denselben Kontozugang, Kanal, Absender und dasselbe Messaging-Profil verwenden. |
| Telnyx lehnt die Nachricht ab | Prüfe den Telnyx-Fehler, die Registrierung des Absenders, das Messaging-Profil, die Limits des Kanals sowie Genehmigung und Parameter der Vorlage. |
| Keine automatische Antwort | Prüfe die Outbound-Verknüpfung des Agenten und ihre ausgewählten Eingänge, danach das Ergebnis des Agenten und den Run der Outbound-Verbindung. |