Diese Integration ermöglicht Ihrem Team, über eine benutzerdefinierte Implementierung über jeden beliebigen Messaging-Kanal mit Ihren Kunden zu chatten.
Einen benutzerdefinierten Kanal verbinden
Schritt 1: Gehe zu Einstellungen > Kanäle
Schritt 2: Klicken Sie auf Kanal hinzufügen > Benutzerdefinierter Kanal > Verbinden
Schritt 3: Geben Sie die Ziel-Webhook-URL ein, an die ausgehende Nachrichten gesendet werden.
Schritt 4: Wählen Sie den ID-Typ für den Kanal > klicken Sie auf Weiter
ID-Typen werden zur Benutzeridentifizierung und zur Kommunikation mit Ihrem benutzerdefinierten Integrationsserver verwendet.
Es stehen zwei Arten von IDs zur Verfügung:
Telefonnummer: Verwenden Sie dies, wenn der Nachrichtendienstanbieter Kontakte anhand ihrer Telefonnummer erkennt.
Beispielformat:
+60177872890
Benutzerdefinierte ID: Verwenden Sie dies, wenn der Messaging-Dienstanbieter Kontakte anhand einer benutzerdefinierten ID erkennt.
Die maximale Zeichenlänge beträgt 50.
AZ,az,0-9,_,=,+,/und@sind erlaubt.
Schritt 5: Der folgende Dialog liefert dieKanal-ID,API-TokenundWebhook-URLzB
Kanal-ID:
gfd8g7fd89dgfdAPI-Token:
aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasdWebhook-URL:
https://app.respond.io/custom/channel/webhook/Mithilfe des ID-Typs „Telefonnummer“ können Sie eine Konversation beginnen und die erste Nachricht an einen Kontakt senden.
Nachrichten an respond.io weiterleiten
Die Webhook-URLwird verwendet, um dieNachrichten,NachrichtenechosundNachrichtenbelegeauf der respond.io-Plattform zu posten.
Der bereitgestellte Code löst den Webhook auf respond.io aus, erstellt bei Bedarf einen Kontakt und speichert die Nachricht unter diesem Kontakt.
Beispiel für Nachrichten
curl -X POST \\
https://app.respond.io/custom/channel/webhook/ \\
-H 'Authorization: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'Cache-Control: no-cache' \\
-H 'Content-Type: application/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"events": \[
{
"type": "message",
"mId": "xcvzzxcxczxczxc",
"timestamp": 2132131321000,
"message": {
"type": "text",
"text": "Hallo Welt"
}
}
\],
"contact": {
"firstName": "John",
"lastName": "Doe",
"profilePic": "",
"countryCode": "MY",
"email": "john@respond.io",
"phone": "+60177872890",
"language": "en"
}
}' Beispiel für Messaging Echoes
curl -X POST \\
https://app.respond.io/custom/channel/webhook/ \\
-H 'Authorization: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'Cache-Control: no-cache' \\
-H 'Content-Type: application/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"events": \[
{
"type": "message_echo",
"mId": "xcvzzxcxczxczxc",
"timestamp": 2132131321000,
"message": {
"type": "text",
"text": "Hallo Welt"
}
}
\],
"contact": {
"firstName": "John",
"lastName": "Doe",
"profilePic": "",
"countryCode": "MY",
"email": "john@respond.io",
"phone": "+60177872890",
"language": "en"
}
}' Beispiel für Messaging-Belege
curl -X POST \\
https://app.respond.io/custom/channel/webhook/ \\
-H 'Authorization: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'Cache-Control: no-cache' \\
-H 'Content-Type: application/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"events": \[
{
"type": "message_status",
"mId": "xcvzzxcxczxczxc",
"timestamp": 2132131321000,
"status": {
"value": "sent|delivered|read|failed",
"message": "Fehler: Senden aufgrund eines ungültigen Tokens fehlgeschlagen"
}
\]
}'Feld | Beschreibung | Validierung |
|---|---|---|
Kanal-ID | Eindeutige Kanal-ID | Erforderlich. Eindeutiges Feld. Wird von respond.io generiert. |
Kontakt-ID | Eindeutige Kontakt-ID | Erforderlich. Eindeutige respond.io-Kontakt-ID. Maximal 50 Zeichen. |
Ereignisse.Typ | Ereignistyp | Erforderlich. Verfügbarer Typ: Nachricht, Nachrichtenecho und Nachrichtenstatus. |
events.mld | Nachrichten-ID | Erforderlich. Eindeutige Nachrichten-ID. Maximal 50 Zeichen. |
Ereignisse.Zeitstempel | UNIX-Epochenzeit (Millisekunden) | Erforderlich. Zeitpunkt des Ereignisses, das den Rückruf ausgelöst hat. |
Ereignisse.Nachrichtentyp | Nachrichtentyp | Erforderlich. Verfügbare Nachrichtentypen: Text, Anhang, Standort und Quick_Reply. Weitere Beispiele für Nachrichtentypen finden Sie im Abschnitt „Nachrichtentyp“. |
Ereignisse.Nachrichtentext | Nachrichtentext | Erforderlich. Maximale Länge 7.000 Zeichen. |
Ereignisse.Status.Wert | Text | Erforderlich, wenn event.type message_status ist. Verfügbare Statuswerte: Gesendet, Zugestellt, Gelesen und Fehlgeschlagen. |
Ereignisse.Status.Nachricht | Text | Erforderlich, wenn events.status.value fehlgeschlagen ist. |
Kontakt.Vorname | Vorname | Optional. Maximal 50 Zeichen. |
kontakt.nachname | Nachname | Optional. Maximal 50 Zeichen. |
Kontakt.Profilbild | Profilbild-URL | Optional. Die Avatargröße sollte nicht mehr als 100 KB betragen. Empfohlen werden 720 x 720. |
contact.locale | Gebietsschemacode | Optional. Die Werteliste finden Sie hier. |
Kontakt.Ländercode | Landesvorwahl | Optional. 2-stelliger Ländercode – ISO ALPHA-2-Code. |
Kontakt.Zeitzone | Zeitzone | Optional. (min: -24) (max: 24). |
kontakt.email | E-Mail-Adresse | Optional. Maximal 50 Zeichen. |
Kontakttelefon | Telefonnummer | Optional. Maximal 18 Zeichen. |
Kontakt.Sprache | Sprache | Optional. ISO 639-1. |
Antwort – Erfolg (HTTP-Status → 200)
"OK"Ausgehende Nachrichten von respond.io verarbeiten
respond.io ruft den Endpunkt<API Base URL>/messageauf
Stellen Sie sicher, dass Sie den CodeOutgoing Messageauf der Route
/messageIhres Webservers anwenden.
Hier ist das cURL-Beispiel von respond.io, das den Endpunkt aufruft:
curl -X POST \\
/message \\
-H 'Authorization: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'Cache-Control: no-cache' \\
-H 'Content-Type: application/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"message": {
"type": "text",
"text": "Hallo Welt"
}
}' Antwort – Erfolgreich (HTTP-Status → 200)
{
"mId": "1640141607842"
}Die Authentifizierung muss am Endpunkt erfolgen, bevor die Nachricht an den Messaging-Dienstanbieter gesendet wird.
Hier ist ein Beispiel für die Verwendung einer Express-Middleware zu diesem Zweck:
const {validationResult} = require('express-validator');
const validateToken = (req, res, next) => {
const apiToken = <>;
const bearerToken = req.headers.authorization;
if (!bearerToken) {
return res.send(401);
}
const token = bearerToken.substring(7, bearerToken.length);
if (apiToken !== token) {
return res.send(401);
}
next();
};
module.exports = {
validateToken
}; Wir'haben ein Beispiel für einen benutzerdefinierten Kanal beigefügt, den Sie auf Ihrem Server testen können. Schauen Sie sich hier unser GitHub-Projekt an.
Nachrichtentyp
Beispiel für Text
{
"type": "text",
"text": "Willkommen bei respond.io"
}Feld | Beschreibung | Validierung |
|---|---|---|
Typ | Nachrichtentyp | Erforderlich. Text |
Text | Nachrichtentext | Erforderlich. Maximale Länge 7.000 Zeichen. |
Beispiel für Mediendatei
{
"Typ": "Anhang",
"Anhang": {
"Typ": "Bild|Video|Audio|Datei",
"URL": "https://abc/japan.png",
"MIME-Typ": "image/png",
"Dateiname":"Firmenlogo.png",
"Beschreibung": "neuestes Firmenlogo"
}
}Feld | Beschreibung | Validierung |
|---|---|---|
Typ | Nachrichtentyp | Erforderlich. Anhang. |
Anhangstyp | Anhangstyp | Erforderlich. Verfügbare Anhangstypen: Bild, Video, Audio und Datei. |
Anhang.URL | URL | Erforderlich. Maximal 2.000 Zeichen. Stellen Sie sicher, dass es sich um einen öffentlichen Link handelt, damit Benutzer oder Kontakte den Inhalt sehen können. |
Anhang.MIME-Typ | MIME-Typ des Anhangs | Optional |
Anhang.Dateiname | Dateiname | Optional. Der Dateiname sollte eine Erweiterung enthalten. Maximal 256 Zeichen (einschließlich Dateierweiterung). Das Senden einer Datei ohne Erweiterung oder mit der falschen Erweiterung kann dazu führen, dass der Kontakt oder Benutzer die Datei nicht öffnen kann. |
Anhang.Beschreibung | Dateibeschreibung | Optional. Maximal 256 Zeichen. Gilt nur für Anhangstyp = Bild. |
Stellen Sie sicher, dass die Anhang-URL nicht zwangsweise vom Browser heruntergeladen wird. Der Content-Disposition Header der HTTP-Antwort sollte den Standardwert haben, der inline ist.
Beispiel für Standort
{
"Typ": "Standort",
"Breitengrad": 0,123456,
"Längengrad": -0,1234,
"Adresse": "Sky Suites, Jalan P. Ramlee, Kuala Lumpur, 50250 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur"
}Feld | Beschreibung | Validierung |
|---|---|---|
Typ | Nachrichtentyp | Erforderlich. Standort. |
Breite | Koordinaten | Erforderlich. Breitengrad (±90°) innerhalb gültiger Bereiche. |
Längengrad | Koordinaten | Erforderlich. Längengrad (±180°) innerhalb gültiger Bereiche. |
Adresse | Standortadresse | Optional. Maximal 256 Zeichen. |
Beispiel für eine Schnellantwort
{
"Typ": "Schnellantwort",
"Titel": "Wählen Sie Ihre bevorzugte Sprache",
"Antworten": \[
"Malaiisch",
"Englisch"
\]
}Feld | Beschreibung | Validierung |
|---|---|---|
Typ | Nachrichtentyp | Erforderlich. schnelle Antwort. |
Titel | Titel der Schnellantwort | Erforderlich. Maximal 256 Zeichen. |
Antworten | Antworttext | Erforderlich. Maximal 10 Antworten mit maximal 256 Zeichen pro Antwort. |
Fehlercodes
Fehler (HTTP-Status → 4xx)
Kanalkonfiguration
Schritt 1: Klicken Sie auf Einstellungen > Kanäle
Schritt 2: Suchen Sie den benutzerdefinierten Kanal > Klicken Sie auf Verwalten
Schritt 3: Auf der Seite zur Konfiguration des benutzerdefinierten Kanals sehen Sie die folgenden Konfigurationen:
Kanalsymbol – Laden Sie ein Bild hoch, das als Symbol für Ihren benutzerdefinierten Kanal dient.
Kanalname – Der Kanalname kann geändert werden und wird intern zur Identifizierung des Kanals verwendet.
Webhook-URL für ausgehende Nachrichten — Die Webhook-URL für ausgehende Nachrichten an diesen Kanal.
Webhook-URL für eingehende Nachrichten — Die Webhook-URL für eingehende Nachrichten an diesen Kanal.
ID-Typ — Diese werden zur Benutzeridentifizierung und zur Kommunikation mit Ihrem benutzerdefinierten Integrationsserver verwendet.
Kanal-ID — Eindeutige Kanal-ID zur Identifizierung Ihres benutzerdefinierten Kanals.
API-Token — Eine eindeutige Kennung, die zur Authentifizierung eines Benutzers für den Zugriff auf eine API verwendet wird.
Schritt 4: Klicken Sie auf Änderungen speichern , um die benutzerdefinierte Kanalkonfiguration zu aktualisieren.
FAQ und Problemlösung
Kann ich Chats von anderen Plattformen über einen benutzerdefinierten Kanal verbinden?
Ja, das kannst du. Hier sind drei Schritte, die du befolgen solltest:
Gib in respond.io die Ziel-Webhook-URL der anderen Plattform in das Feld Webhook-URL für eingehende Nachrichten ein.
Richte auf der anderen Plattform eine Webhook-URL ein, die auf respond.io verweist, damit Kontakte dir Nachrichten zurücksenden können.
Du benötigst einen Custom Integration Server, um die APIs von sowohl respond.io als auch der anderen Plattform zu interpretieren, was den Nachrichtenaustausch zwischen ihnen ermöglicht.
Stelle sicher, dass du mit der anderen Plattform bestätigst, dass die ersten beiden Schritte machbar sind.
FAQ für benutzerdefinierte Kanal-Webhooks
Warum gibt der Webhook einen Status 200 zurück, auch wenn die Nachricht nicht an respond.io zugestellt werden kann?
Beim Verbinden eines benutzerdefinierten Kanals gibt die über Webhooks an respond.io gesendete Nachricht sofort einen Statuscode 200 zurück, unabhängig davon, ob die Nachricht erfolgreich an respond.io übermittelt wurde. Dies liegt an der Natur von Webhooks, die so konzipiert sind, dass sie eine sofortige Antwort zurückgeben, ohne den Erfolg der Nachrichtenübermittlung zu überprüfen.