
Übersicht
Ein Telefonbericht wird jedes Mal erstellt, wenn ein Workflow-Knoten die Funktion „Telefonverifizierung“ ausführt. Jeder Bericht stellt eine OTP-Abfrage für eine Telefonnummer dar und enthält:- Die Telefonnummer, aufgeschlüsselt in Vorwahl, nationale Rufnummer und vollständiges E.164-Format, sowie ISO-Ländercode und Ländername.
- Mobilfunkanbieter-Metadaten (
name,type), die über das Zielnetzwerk ermittelt wurden. - Boolesche Risikoflags (
is_disposable,is_virtual), die aus der Leitungstypanalyse abgeleitet werden. - Den tatsächlich verwendeten Zustellkanal (
verification_method) und die Anzahl der OTP-Sendeversuche. - Ein chronologisches
lifecycle[]-Protokoll jedes Sende-, Wiederholungs- und Zustellungsereignisses sowie jedes Code-Prüfungsversuchs. - Ein
matches[]-Array, das dieselbe Nummer in anderen Sitzungen anzeigt – unabhängig vom Status, über KYC, KYB und eigenständige API-Verifizierungen hinweg – oder auf Ihrer Sperrliste. - Ein
warnings[]-Array – Risikoereignisse, die während der Verifizierung ausgegeben wurden (siehe Warnungen der Telefonverifizierung). - Eine
node_id, die angibt, welcher Workflow-Graph-Knoten den Bericht erstellt hat (nur V3-Sitzungen).
POST /v3/phone/send/ zur Zustellung des Codes und POST /v3/phone/check/ zur Validierung der Benutzereingabe. Ein ausstehendes OTP ist ab dem ersten Senden 5 Minuten lang gültig (Wiederholungsversuche verlängern das Zeitfenster nicht). In Workflow-Sitzungen stehen Benutzern standardmäßig 2 OTP-Sendeversuche (phone_max_retries) und 2 Codeeingabeversuche (phone_max_check_attempts) zur Verfügung – beides lässt sich pro Workflow-Knoten anpassen; das Erreichen eines der beiden Limits schließt den Schritt als Declined mit VERIFICATION_CODE_ATTEMPTS_EXCEEDED ab. Die eigenständige Telefon-API erlaubt 3 Codeeingabeversuche pro Verifizierung.
Wo es in API-Antworten erscheint
Der Entscheidungs-Endpoint (GET /v3/session/{sessionId}/decision/) gibt Telefonberichte unter dem Plural-Array-Schlüssel phone_verifications zurück. Das Array enthält einen Eintrag pro Telefonverifizierungsknoten im Workflow-Graph – typischerweise einen; Step-up-Abläufe können jedoch mehrere erzeugen.
null-Wert bedeutet, dass noch kein Telefonverifizierungsschritt ausgeführt wurde. Iterieren Sie über das Array (anstatt phone_verifications[0] auszulesen), wenn Ihr Workflow mehr als eine Telefonnummer erfassen kann.
Schema
Das kanonische feldbasierte Schema finden Sie auf der Seite Datenmodelle.Statuswerte
Lifecycle-Ereignistypen
lifecycle[] ist chronologisch sortiert. Jedes Ereignis enthält type, timestamp, details und eine abrechenbare fee (sofern zutreffend):
Die
details-Payload hängt von der Ereignisfamilie ab:
- Sendeereignisse (
PHONE_VERIFICATION_MESSAGE_SENT,PHONE_VERIFICATION_RETRY_MESSAGE_SENT,PHONE_VERIFICATION_BLOCKED) –{ status, reason, channel, actual_channel }.statusistSuccess,RetryoderBlocked;reasonistnull, es sei denn, der Versand wurde blockiert (invalid_phone_number,repeated_attempts,suspicious,spam,unknown);channelist der angeforderte Kanal undactual_channelder Kanal, über den tatsächlich zugestellt wurde (z. B. ein WhatsApp-Versand mit Fallback auf SMS). - Zustellungsereignisse (
PHONE_DELIVERY_DELIVERED,PHONE_DELIVERY_UNDELIVERABLE) –{ channel, status }mitstatusalsdeliveredoderundeliverable. - Prüfungsereignisse (
VALID_CODE_ENTERED,INVALID_CODE_ENTERED) –{ code_tried, status }mitstatusalsApproved,Declined,FailedoderExpired or Not Found. - Endstatusereignisse –
null, außerPHONE_VERIFICATION_DECLINED/PHONE_VERIFICATION_IN_REVIEW, die{ "reason": "<risk code>" }enthalten (z. B.PHONE_NUMBER_IN_BLOCKLIST).
fee bei einem Sendeereignis ist der Gesamtpreis dieses Versands: der Carrier- oder WhatsApp-Preis zuzüglich der Didit-Gebühr von $0.02 bzw. nur die Didit-Gebühr von $0.02 für einen WhatsApp-Code, der über Ihre eigene WhatsApp Business-Nummer gesendet wurde. Es ist der geschätzte Preis, bis die Zustellung bestätigt wird, und danach der tatsächlich in Rechnung gestellte Betrag. Nur Blocked-Sendungen sind garantiert kostenlos: Jeder andere Versand wird berechnet, sobald die Verifizierung abgeschlossen ist oder abläuft, selbst wenn die Zustellung nie bestätigt wurde oder die Nachricht unzustellbar war. Zustellungs-, Prüfungs- und Statusereignisse enthalten immer fee: 0.
Sitzungsübergreifende Übereinstimmungen
matches[] erfasst andere Sitzungen in derselben Anwendung, bei denen dieselbe Nummer aufgetreten ist – über KYC-, KYB- und eigenständige API-Verifizierungen hinweg, unabhängig von ihrem Status – sowie Sperrlistentreffer, die in den Management-API-Listen konfiguriert sind. Sitzungen, die dieselben vendor_data wie die aktuelle Sitzung aufweisen, werden ausgeschlossen (derselbe Endbenutzer wird nicht mit sich selbst abgeglichen), und das Array ist auf 5 Einträge begrenzt. Wenn die Nummer auf Ihrer Sperrliste steht, aber keine der übereinstimmenden Sitzungen auf der Sperrliste geführt wird, wird dem Array ein synthetischer Eintrag mit source: "list_entry" (alle Sitzungsfelder null) vorangestellt.
Beispiele
Approved – WhatsApp-OTP, Mobilfunkanbieter
Declined – VoIP-Nummer auf Sperrliste
Der Benutzer hat ein gültiges OTP eingegeben, aber beim Abschluss wurde die Nummer auf der Sperrliste der Anwendung gefunden (automatische Ablehnung) und der Leitungstyp der Nummer als VoIP gekennzeichnet (voip_number_action verblieb auf NO_ACTION, weshalb sie als information protokolliert wird). Da keine der übereinstimmenden Sitzungen auf der Sperrliste steht, erscheint der Sperrlistentreffer als synthetischer list_entry-Treffer.
Verwandte Themen
- Telefonverifizierung – Übersicht – Funktionsweise, Preise, unterstützte Kanäle.
- Telefonverifizierung – Warnungen – alle Risikocodes, Ablehnungsauslöser und konfigurierbare Aktionen.
- Datenmodelle – Telefonverifizierung – kanonisches feldbasiertes Schema.
- Eigenständige Telefon-API – Endpoints
POST /v3/phone/send/undPOST /v3/phone/check/. - Management-API – Listen – Verwaltung der Telefon-Sperrliste, die
matches[]mitsource: list_entryspeist.