Sending OTP Codes Securely - Explore Delivery Methods and Best Practices
Diese API generiert den Verifizierungscode über die EngageLab-Plattform und versendet ihn entsprechend der im Template festgelegten Kanalstrategie.
Wenn Sie den Verifizierungscode lieber selbst generieren möchten, anstatt die EngageLab-Plattform zu nutzen, können Sie die EngageLab Custom OTP Send API aufrufen.
Endpoint
POST https://otp.api.engagelab.cc/v1/messages
Authentifizierung
Zur Verifizierung wird HTTP Basic Authentication verwendet. Fügen Sie eine Autorisierung im HTTP-Header hinzu:
Authorization: Basic ${base64_auth_string}
Der Algorithmus zur Generierung des base64_auth_string lautet: base64(dev_key:dev_secret)
Beispiel für eine Anfrage
Anfrage-Header
POST /v1/messages HTTP/1.1
Content-Type: application/json
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
Anfrage-Body
{
"to": "+8618701235678",
"template":{
"id":"test-template-1",
"language": "default",
"params": {
"key1": "value1",
"key2": "value2"
}
}
}
Anfrageparameter
Das Anfrageobjekt wird im JSON-Format übergeben, daher muss der Anfrage-Header Content-Type: application/json enthalten.
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
| to | String | Erforderlich | Ziel, entweder eine Telefonnummer oder E-Mail-Adresse, z. B. +8613800138000, support@engagelab.com |
| template | JSON-Objekt | Erforderlich | Template-Informationen, einschließlich der untenstehenden Unterparameter |
| |_ id | String | Erforderlich | Template-ID |
| |_ language | String | Optional | Templatesprache, unterstützt folgende Optionen: default (Standardsprache) zh_CN (Vereinfachtes Chinesisch) zh_HK (Traditionelles Chinesisch) en (Englisch) ja (Japanisch) th (Thailändisch) es (Spanisch) Wenn nicht angegeben, wird standardmäßig „default“ verwendet. |
| |_ params | JSON-Objekt | Optional | Benutzerdefinierte Template-Variablenwerte. Wenn Sie beim Erstellen des Templates Variablen definiert haben, übergeben Sie deren Werte hier. Wenn nicht angegeben, werden die Variablenschlüssel wie angegeben versendet, z. B. {{var}} |
Hinweise zu params
- Für Templates mit vordefinierten Feldern wie from_id gilt: Wird der Wert für das Feld param_vars nicht übergeben, verwendet die Nachricht beim Versand die im Template vordefinierte from_id.
- Werden Werte für das Feld param_vars übergeben, z. B.
param_vars:{"from_id":"12345"}, wird beim Versand die from_id des Templates durch 12345 ersetzt. - Ebenso können Sie für benutzerdefinierte Variablenfelder im Template-Inhalt Werte über param_vars zuweisen, z. B. für den Template-Inhalt
Hi {{name}}, your verify code is {{code}}übergeben Sie die Parameter mitparam_vars:{"name":"Bob"}.
Antwortparameter
Erfolgreiche Antwort
| Feld | Typ | Option | Beschreibung |
|---|---|---|---|
| message_id | String | Erforderlich | Message-ID, identifiziert eine Nachricht eindeutig |
| send_channel | String | Erforderlich | Gibt den aktuellen Versandkanal an, Optionen: whatsapp/sms/email/voice |
{
"message_id": "1725407449772531712",
"send_channel": "sms"
}
Beachten Sie, dass der zurückgegebene Wert von send_channel nicht den endgültigen Versandkanal an die Nutzer:innen darstellt, sondern nur den aktuellen Versandschritt. Ist beispielsweise im Template eine Strategie hinterlegt, bei Zustellfehler von WhatsApp auf SMS zurückzufallen, zeigt die API-Rückgabe zunächst whatsapp an. Wird später ein Zustellfehler erkannt, nutzt das System für den Versand den SMS-Kanal.
Fehlerantwort
HTTP-Statuscode 4xx oder 5xx, der Antwort-Body enthält folgende Felder:
| Feld | Typ | Option | Beschreibung |
|---|---|---|---|
| code | int | Erforderlich | Fehlercode, siehe Fehlercodes für Details |
| message | String | Erforderlich | Fehlerdetails |
{
"code": 5001,
"message": "sms send fail"
}
Fehlercodes
| Fehlercode | HTTP-Code | Beschreibung |
|---|---|---|
| 1000 | 500 | Interner Fehler |
| 2001 | 401 | Authentifizierung fehlgeschlagen, Token fehlt oder ist falsch |
| 2002 | 401 | Authentifizierung fehlgeschlagen, Token abgelaufen oder deaktiviert |
| 2004 | 403 | Keine Berechtigung, diese API aufzurufen |
| 3001 | 400 | Ungültiges Anfrageparameterformat, bitte prüfen, ob das JSON-Format eingehalten wird |
| 3002 | 400 | Fehlerhafte Anfrageparameter, bitte Anforderungen überprüfen |
| 3003 | 400 | Fehlerhafte Anfrageparameter, Geschäftsvalidierung fehlgeschlagen, Details siehe message-Feld |
| 3004 | 400 | Frequenzlimit überschritten, erneutes Senden an das gleiche Template und Ziel innerhalb der OTP-Gültigkeitsdauer nicht möglich |
| 4001 | 400 | Zugehörige Ressource existiert nicht, z. B. nicht existierendes Template für den Versand verwendet |
| 5001 | 400 | Senden fehlgeschlagen (allgemein/andere Gründe) |
| 5011 | 400 | Ungültiges Telefonnummernformat |
| 5012 | 400 | Ziel nicht erreichbar |
| 5013 | 400 | Nummer zur Sperrliste hinzugefügt |
| 5014 | 400 | Inhalt entspricht nicht den Vorschriften |
| 5015 | 400 | Nachricht blockiert/abgelehnt |
| 5016 | 400 | Internes Sendeproblem |
| 5017 | 400 | Keine Berechtigung zum Senden in der Region China |
| 5018 | 400 | Telefonfehler (ausgeschaltet/deaktiviert) |
| 5019 | 400 | Benutzer hat abbestellt |
| 5020 | 400 | Nummer nicht registriert/ungültige Nummer |

