Custom OTP Code Delivery - Secure Transmission and Best Practices
Wenn Sie den Verifizierungscode lieber selbst generieren möchten, anstatt die EngageLab-Plattform zu verwenden, können Sie diese API aufrufen.
Diese API dient ausschließlich dem Versand bereits generierter Verifizierungscodes und generiert die Codes nicht selbst. Nach dem Versand des Verifizierungscodes ist kein weiterer Aufruf der Verifizierungs-API zur Validierung erforderlich.
Wenn Sie möchten, dass die EngageLab-Plattform den Verifizierungscode generiert, nutzen Sie bitte die EngageLab OTP Send API.
Endpoint
POST https://otp.api.engagelab.cc/v1/codes
Authentifizierung
Zur Verifizierung wird HTTP Basic Authentication verwendet. Fügen Sie im HTTP-Header eine Authorization hinzu:
Authorization: Basic ${base64_auth_string}
Der base64_auth_string wird wie folgt generiert: base64(dev_key:dev_secret)
Beispiel für eine Anfrage
Request Header
POST /v1/codes HTTP/1.1
Content-Type: application/json
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
Request Body
{
"to": "+8618701235678",
"code": "398210",
"template":{
"id":"test-template-1",
"language": "default",
"params": {
"key1": "value1",
"key2": "value2"
}
}
}
Anfrageparameter
Das Anfrageobjekt wird im JSON-Format übermittelt, daher muss der Request-Header Content-Type: application/json enthalten.
| Parameter | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
| to | String | Erforderlich | Zieladresse, entweder eine Telefonnummer oder E-Mail-Adresse, z. B. +8613800138000 oder support@engagelab.com |
| code | String | Erforderlich | Der benutzerdefinierte Verifizierungscode |
| template | JSON-Objekt | Erforderlich | Template-Informationen, einschließlich der folgenden Unterparameter |
| |_ id | String | Erforderlich | Template-ID |
| |_ language | String | Optional | Sprache des Templates, unterstützt folgende Optionen: default (Standardsprache) zh_CN (Vereinfachtes Chinesisch) zh_HK (Traditionelles Chinesisch) en (Englisch) ja (Japanisch) th (Thailändisch) es (Spanisch) Wird keine Sprache angegeben, wird standardmäßig „default“ verwendet. |
| |_ params | JSON-Objekt | Optional | Benutzerdefinierte Werte für Template-Variablen. Wenn Sie beim Erstellen des Templates Variablen definiert haben, geben Sie deren Werte hier an. Andernfalls werden die Variablenschlüssel als Platzhalter versendet, z. B. {{var}} |
Hinweise zu params
- Für Templates mit vordefinierten Feldern wie from_id gilt: Wird kein Wert für das Feld param_vars übergeben, verwendet die Nachricht beim Versand den im Template hinterlegten from_id-Wert.
- Werden Werte für param_vars übergeben, z. B.
param_vars:{"from_id":"12345"}, ersetzt beim Versand der Wert 12345 den im Template hinterlegten from_id. - Ebenso können benutzerdefinierte Variablen im Template-Inhalt über param_vars zugewiesen werden, z. B. für den Template-Text
Hi {{name}}, your verify code is {{code}}erfolgt die Zuweisung mitparam_vars:{"name":"Bob"}.
Antwortparameter
Erfolgreiche Antwort
| Feld | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
| message_id | String | Erforderlich | Nachrichten-ID, eindeutig zur Identifizierung einer Nachricht |
| send_channel | String | Erforderlich | Gibt den aktuellen Versandkanal an, z. B. WhatsApp/SMS/E-Mail/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 Versandweg. Ist beispielsweise im Template eine Strategie hinterlegt, bei Zustellfehler von WhatsApp auf SMS umzuschalten, zeigt die API zunächst WhatsApp an. Wird ein Fehler erkannt, erfolgt der Versand automatisch per SMS.
Fehlerantwort
Bei einem HTTP-Statuscode 4xx oder 5xx enthält der Response-Body folgende Felder:
| Feld | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
| code | int | Erforderlich | Fehlercode, siehe Fehlercodes für Details |
| message | String | Erforderlich | Fehlerbeschreibung |
{
"code": 5001,
"message": "sms send fail"
}
Fehlercodes
| Fehlercode | HTTP-Code | Beschreibung |
|---|---|---|
| 1000 | 500 | Interner Fehler |
| 2001 | 401 | Authentifizierung fehlgeschlagen, Token falsch oder fehlt |
| 2002 | 401 | Authentifizierung fehlgeschlagen, Token abgelaufen oder deaktiviert |
| 2004 | 403 | Keine Berechtigung für diesen API-Aufruf |
| 3001 | 400 | Ungültiges Anfrageparameter-Format, bitte prüfen Sie das JSON-Format |
| 3002 | 400 | Falsche Anfrageparameter, bitte gemäß Vorgaben prüfen |
| 3003 | 400 | Falsche Anfrageparameter, Geschäftsvalidierung fehlgeschlagen, Details siehe message-Feld |
| 3004 | 400 | Frequenzlimit überschritten, es kann nicht erneut an dieselbe Vorlage und Zielnutzer:in innerhalb der OTP-Gültigkeitsdauer gesendet werden |
| 4001 | 400 | Zugehörige Ressource existiert nicht, z. B. nicht vorhandenes 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 |

