curl -X POST \
https://verification.didit.me/v3/session/3fa85f64-5717-4562-b3fc-2c963f66afa6/decision-email-preview/ \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"new_status": "Approved", "email_language": "en"}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.sessions.preview_decision_email(
"3fa85f64-5717-4562-b3fc-2c963f66afa6",
new_status="Approved",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.sessions.previewDecisionEmail("3fa85f64-5717-4562-b3fc-2c963f66afa6", {
new_status: "Approved",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Sessions.PreviewDecisionEmail(ctx, "3fa85f64-5717-4562-b3fc-2c963f66afa6", didit.SessionsPreviewDecisionEmailParams{
NewStatus: "Approved",
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.SessionsPreviewDecisionEmailParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.sessions().previewDecisionEmail("3fa85f64-5717-4562-b3fc-2c963f66afa6", SessionsPreviewDecisionEmailParams.builder()
.newStatus(SessionsPreviewDecisionEmailParams.NewStatus.of("Approved"))
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->sessions->previewDecisionEmail('3fa85f64-5717-4562-b3fc-2c963f66afa6', [
'new_status' => 'Approved',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.sessions.preview_decision_email(
"3fa85f64-5717-4562-b3fc-2c963f66afa6",
new_status: "Approved"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Sessions.PreviewDecisionEmailAsync("3fa85f64-5717-4562-b3fc-2c963f66afa6", new SessionsPreviewDecisionEmailParams
{
NewStatus = "Approved",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"recipient": "person@example.com",
"recipient_source": "email_verification",
"sender": "Example App <no-reply@mail.example.com>",
"sender_name": "Example App",
"sender_email": "no-reply@mail.example.com",
"sender_kind": "customer",
"subject": "Your verification has been approved in Example App",
"html": "<!DOCTYPE html><html><body>...</body></html>",
"language": "en",
"will_be_sent": true,
"not_sent_reason": null,
"preview_token": "eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000"
}معاينة بريد القرار عبر API: رسائل المقبولة والمرفوضة
اعرض في Didit البريد الإلكتروني للحالة المقبولة أو المرفوضة الذي يتلقاه الشخص، مع المستلم والمرسل واللغة، قبل تغيير حالة الجلسة.
curl -X POST \
https://verification.didit.me/v3/session/3fa85f64-5717-4562-b3fc-2c963f66afa6/decision-email-preview/ \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"new_status": "Approved", "email_language": "en"}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.sessions.preview_decision_email(
"3fa85f64-5717-4562-b3fc-2c963f66afa6",
new_status="Approved",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.sessions.previewDecisionEmail("3fa85f64-5717-4562-b3fc-2c963f66afa6", {
new_status: "Approved",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Sessions.PreviewDecisionEmail(ctx, "3fa85f64-5717-4562-b3fc-2c963f66afa6", didit.SessionsPreviewDecisionEmailParams{
NewStatus: "Approved",
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.SessionsPreviewDecisionEmailParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.sessions().previewDecisionEmail("3fa85f64-5717-4562-b3fc-2c963f66afa6", SessionsPreviewDecisionEmailParams.builder()
.newStatus(SessionsPreviewDecisionEmailParams.NewStatus.of("Approved"))
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->sessions->previewDecisionEmail('3fa85f64-5717-4562-b3fc-2c963f66afa6', [
'new_status' => 'Approved',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.sessions.preview_decision_email(
"3fa85f64-5717-4562-b3fc-2c963f66afa6",
new_status: "Approved"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Sessions.PreviewDecisionEmailAsync("3fa85f64-5717-4562-b3fc-2c963f66afa6", new SessionsPreviewDecisionEmailParams
{
NewStatus = "Approved",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"recipient": "person@example.com",
"recipient_source": "email_verification",
"sender": "Example App <no-reply@mail.example.com>",
"sender_name": "Example App",
"sender_email": "no-reply@mail.example.com",
"sender_kind": "customer",
"subject": "Your verification has been approved in Example App",
"html": "<!DOCTYPE html><html><body>...</body></html>",
"language": "en",
"will_be_sent": true,
"not_sent_reason": null,
"preview_token": "eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000"
}Approved أو Declined مع send_email: true.
كما تُبيّن لك من سيستلمه، ومن مُرسله، وما إذا كان تأكيد التغيير سيرسله أصلاً.
من يستلم البريد الإلكتروني
يُرسَل البريد الإلكتروني إلى عنوان الشخص نفسه، وهو العنوان الذي تحقق منه في خطوة التحقق من البريد الإلكتروني ضمن التدفق، وإلا فالعنوان المذكور فيcontact_details عند إنشاء الجلسة.
يحدد recipient_source المصدر المستخدَم (email_verification أو contact_details).
عندما لا يتوفر عنوان بريد إلكتروني للشخص في الجلسة، تكون قيم recipient وrecipient_source وpreview_token سلاسل نصية فارغة، ولا يمكن إرسال أي بريد إلكتروني.
يُرسَل البريد الإلكتروني من نطاق المرسل المُتحقَّق منه في تطبيقك عندما ينطبق إعداد العلامة البيضاء الخاص بك (sender_kind: customer)، وإلا فمن مرسل Didit (sender_kind: didit).
هل سيُرسَل البريد الإلكتروني
تكون قيمةwill_be_sent مساوية لـ true عندما يؤدي تأكيد التغيير مع send_email: true إلى إرسال البريد الإلكتروني.
عندما تكون القيمة false، يوضح not_sent_reason السبب:
not_sent_reason | المعنى |
|---|---|
status_unchanged | تملك الجلسة هذه الحالة مسبقاً، لذا لا يغيّر التحديث شيئاً ولا يرسل بريداً إلكترونياً. |
notification_emails_disabled | أُنشئت الجلسة دون contact_details.send_notification_emails: true، لذلك لا يُرسَل بريد قرار إلى العنوان المذكور في contact_details. |
no_recipient | لا يتوفر أي عنوان بريد إلكتروني للشخص. |
sandbox | الجلسة جلسة في البيئة التجريبية، ولم يشترك المستلم في تسليم البريد الإلكتروني في البيئة التجريبية، لذلك يُحاكى إرسال البريد الإلكتروني فقط. راجع الاشتراك في البريد الإلكتروني. |
تأكيد القرار
استدعِ تحديث حالة الجلسة مع هذه الحقول:| حقل تحديث حالة الجلسة | القيمة |
|---|---|
new_status | قيمة new_status نفسها التي عاينتها |
send_email | true |
email_address | القيمة recipient من المعاينة |
email_language | القيمة language من المعاينة |
email_preview_token | القيمة preview_token من المعاينة |
409 قبل إجراء أي تغيير.
أعِد المعاينة وأكِّد بالإيصال الجديد.
مواضيع ذات صلة
- تحديث حالة الجلسة: الموافقة على الجلسة أو رفضها وإرسال البريد الإلكتروني.
- معاينة بريد إعادة التقديم: معاينة البريد الإلكتروني الخاص بإعادة التقديم بدلاً من ذلك.
- العلامة البيضاء: المرسل والعلامة التجارية اللذان يستخدمهما البريد الإلكتروني.
التفويضات
مفتاح API الخاص بتطبيقك، من Developers -> API keys في Business Console. يمتلك المفتاح الأساسي وصولاً كاملاً. يمكن تحديد نطاق المفتاح المسمى: لا شيء، أو قراءة، أو كتابة لكل مورد، ومحدوداً ببعض مسارات العمل أو بالجلسات المقبولة، وبقائمة من عناوين IP، وبتاريخ انتهاء الصلاحية. يشير 401 إلى أن المفتاح غير صحيح أو ملغى أو منتهي الصلاحية؛ ويشير 403 إلى أنه لم يتم إرسال أي مفتاح، أو أن المفتاح ليس لديه حق الوصول إلى هذا المورد أو الإجراء، أو أن الطلب جاء من عنوان خارج قائمة عناوين IP الخاصة به؛ ويشير 404 في مسار جلسة إلى أن الجلسة خارج مسارات العمل أو الحالات الخاصة بالمفتاح. يتلقى المفتاح الذي لا يمتلك حق الوصول إلى الوسائط عناوين URL للصور ومقاطع الفيديو وملفات PDF كـ null، ويتلقى المفتاح الذي لا يمتلك إذن كتابة للجلسات روابط الجلسة وtoken كـ null. راجع https://docs.didit.me/console/api-keys.
معلمات المسار
معرّف UUID لجلسة التحقق. يقبل معرّفات جلسات المستخدمين (KYC) والشركات (KYB).
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
الجسم
القرار الذي تريد معاينة بريده الإلكتروني.
Approved, Declined "Approved"
لغة البريد الإلكتروني، بنفس القيمة الافتراضية مثل تحديث حالة الجلسة. اللغة غير المتوفرة تعود تلقائياً إلى الإنجليزية؛ يحدد الحقل language في الاستجابة اللغة المستخدمة.
"en"
الاستجابة
معاينة فقط. تظل الجلسة دون تغيير ولا يتم إرسال أي بريد إلكتروني.
العنوان الذي يُرسل إليه البريد الإلكتروني. سلسلة فارغة عند عدم معرفة أي عنوان للشخص: وعندئذٍ لا يمكن إرسال بريد إلكتروني ويكون preview_token فارغاً أيضاً. مرّره كـ email_address عند التأكيد.
"person@example.com"
مصدر recipient. القيمة email_verification: العنوان الذي تحقق منه الشخص في خطوة التحقق من البريد الإلكتروني في سير العمل. القيمة contact_details: العنوان المقدَّم في contact_details عند إنشاء الجلسة. سلسلة نصية فارغة في حال عدم وجود عنوان.
email_verification, contact_details, "email_verification"
رأس From الذي يرسل به البريد الإلكتروني.
"Example App <no-reply@mail.example.com>"
جزء الاسم المعروض من sender.
"Example App"
جزء العنوان من sender.
"no-reply@mail.example.com"
customer: يخرج البريد الإلكتروني من نطاق الإرسال المعتمد لتطبيقك (العلامة البيضاء). didit: يخرج من مُرسِل Didit نفسه.
customer, didit "customer"
سطر الموضوع تماماً كما تم إرساله.
"Your verification has been approved in Example App"
كود HTML الخاص بالبريد الإلكتروني تماماً كما يُرسل، مع تضمين شعاره كـ data URL. اعرضه داخل إطار معزول، وتجنب تماماً عرضه مباشرة في DOM الخاص بتطبيقك.
"<!DOCTYPE html><html><body>...</body></html>"
كلمات البريد الإلكتروني كنص عادي، كما يحتفظ بها تسلسل رسائل الشخص، للحصول على معاينة موجزة (يظل كود HTML هو البريد الإلكتروني الفعلي الذي يستلمه الشخص).
"Verification Approved\n\nYour identity has been successfully verified with Acme Pay. No further action is needed on your part."
اللغة المكتوب بها البريد الإلكتروني. تكون الإنجليزية (en) عندما لا تتوفر email_language التي طلبتها.
"en"
ما إذا كان تأكيد التغيير باستخدام send_email: true يرسل هذا البريد الإلكتروني. false عندما يكون not_sent_reason معيناً.
true
سبب عدم إرسال أي بريد إلكتروني عند التأكيد، أو null عند إرساله. status_unchanged: تمتلك الجلسة هذه الحالة بالفعل، لذا فإن التحديث لا يغير شيئاً ولا يرسل شيئاً. notification_emails_disabled: تم إنشاء الجلسة دون contact_details.send_notification_emails: true، لذا لن يُرسل أي بريد إلكتروني خاص بالقرار إلى العنوان المحدد في contact_details. no_recipient: لا يوجد عنوان معروف للشخص. sandbox: جلسة بيئة تجريبية لم يشترك مستلمها في تسليم رسائل البريد الإلكتروني للبيئة التجريبية، لذا فإن الإرسال يتم بشكل محاكاة فقط.
status_unchanged, notification_emails_disabled, no_recipient, sandbox, null null
إيصال موقّع لرسالة البريد الإلكتروني هذه تحديداً، صالح لمدة 15 دقيقة. مرّره كـ email_preview_token إلى تحديث حالة الجلسة. سلسلة فارغة في حال عدم وجود مستلم.
"eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000"