Skip to content

افزایش قابلیت‌ها از طریق ورکرهای دیگر

قابلیت اصلی ایمیل موقت در مدیریت ایمیل‌ها است. با استفاده از ورکرهای دیگر می‌توان عملکرد ایمیل موقت را افزایش داد، مثلاً با استفاده از قابلیت هوش مصنوعی auth-inbox برای تجزیه و تحلیل کدهای تأیید یا لینک‌های فعال‌سازی
این قابلیت فقط ورکرهای دیگر را فعال می‌کند و پس از webhook اجرا می‌شود
[!NOTE]
اگر می‌خواهید از افزایش قابلیت‌ها با ورکر استفاده کنید، لطفاً از قبل یک ورکر با قابلیت فراخوانی rpc ایجاد کنید. جزئیات در ادامه توضیح داده شده است
مراجع:

ایجاد ورکر دیگر (با استفاده از پروژه auth-inbox به عنوان مثال برای تجزیه و تحلیل کدهای تأیید با هوش مصنوعی)

تغییر ورکر برای ارث‌بری از WorkerEntrypoint

یک کد ساده ورکر که به عنوان طرف فراخوانی شونده، متدهای rpc را ارائه می‌دهد به شرح زیر است (متد rpcEmail به عنوان نمونه) (استفاده از پروژه‌ای که قبلاً اصلاح شده است https://github.com/oneisall8955/AuthInbox-fork)

فایل src/index.ts

js
import { WorkerEntrypoint } from "cloudflare:workers";

interface Env {
    DB: D1Database;
    // ...
}

export default class extends WorkerEntrypoint<Env> {
    async fetch(request: Request): Promise<Response> {
        console.log("ورودی اصلی رابط fetch شامل request, env, ctx است");
        console.log("پس از تغییر به سبک WorkerEntrypoint، فقط یک ورودی request وجود دارد، دریافت متغیرهای محیطی و زمینه کمی تغییر کرده است");
        // جزئیات تغییرات متغیرهای محیطی و زمینه:
        // https://developers.cloudflare.com/workers/runtime-apis/bindings/service-bindings/rpc/#bindings-env
        // https://developers.cloudflare.com/workers/runtime-apis/bindings/service-bindings/rpc/#lifecycle-methods-ctx
        const env: Env = this.env;
        const ctx: ExecutionContext = this.ctx;
        console.log("منطق بعدی بدون تغییر است");
        return new Response('ok', { status: 200 });
    }

    // عملکرد اصلی
    async email(message: ForwardableEmailMessage): Promise<void> {
        console.log("ورودی اصلی رابط fetch شامل message, env, ctx است");
        console.log("پس از تغییر به سبک WorkerEntrypoint، فقط یک ورودی message وجود دارد، دریافت متغیرهای محیطی و زمینه مانند متد fetch است");
        const env: Env = this.env;
        const ctx: ExecutionContext = this.ctx;
        console.log("پس از دریافت درخواست email routing، منطق بعدی بدون تغییر است");
    }

    // ارائه رابط rpc، پردازش درخواست‌های ایمیل از سایر ورکرها
    async rpcEmail(requestBody: string): Promise<void> {
        console.log(`دریافت درخواست از ورکر دیگر (سرویس ایمیل موقت cloudflare_temp_email)، بدنه درخواست: ${requestBody}`);
        // فرمت JSON بدنه درخواست، ارسال شده توسط سرویس ایمیل موقت، به شکل زیر است
        // type RPCEmailMessage = {
        //     from: string | undefined | null,
        //     to: string | undefined | null,
        //     rawEmail: string | undefined | null,
        //     headers: Map<string, string>,
        // }
        // ... todo ...
    }
}

پیکربندی ورکر دیگر

برای ایجاد ورکر دیگر، مثلاً با استفاده از پروژه auth-inbox به عنوان مثال برای تجزیه و تحلیل کدهای تأیید با هوش مصنوعی، به صفحه پیکربندی ورکر در cloudflare یا استفاده از پروژه‌ای که قبلاً اصلاح شده است https://github.com/oneisall8955/AuthInbox-fork بروید.

پیکربندی سرویس

با استفاده از wrangler.toml

toml
[[services]]
binding = "AUTH_INBOX"
service = "auth-inbox"

در اینجا binding = "AUTH_INBOX" می‌تواند به صورت دلخواه تعریف شود، می‌تواند هر رشته‌ای باشد، service = "auth-inbox" نام worker ارائه‌دهنده rpc است.

پیکربندی کاربر

در صفحه تنظیمات-بنداز، اضافه کردن بنداز، انتخاب بنداز سرویس را انتخاب کنید.
نام متغیر را به صورت دلخواه تعریف کنید، می‌تواند هر رشته‌ای باشد، مثلاً AUTH_INBOX.
سرویس بنداز را انتخاب کنید، مثلاً auth-inbox.

another-worker-enhanced-01.png

another-worker-enhanced-02.png

پیکربندی متغیر محیطی

با استفاده از wrangler.toml

toml
ENABLE_ANOTHER_WORKER = true
ANOTHER_WORKER_LIST ="""
[
    {
        "binding":"AUTH_INBOX",
        "method":"rpcEmail",
        "keywords":[
            "کد تأیید","کد فعال‌سازی","لینک تأیید","لینک تأیید","تأیید ایمیل","تأیید ایمیل","فعال‌سازی حساب","تأیید ایمیل","تأیید حساب","کد امنیت","تأیید امنیت","تأیید امنیت","کد ورود","تأیید کد","فعال‌سازی حساب","فعال‌سازی حساب","تأیید حساب","تأیید ثبت نام",
            "حساب","فعال‌سازی","تأیید","تأیید","فعال","تأیید","ایمیل","کد","تأیید","ثبت نام","ورود","کد","منقضی","تأیید"
        ]
    }
]
"""

توضیح متغیرهای محیطی:

  • ENABLE_ANOTHER_WORKER = true: پیش‌فرض false، اگر true باشد، سرویس دیگری برای پردازش ایمیل فعال می‌شود
  • ANOTHER_WORKER_LIST یک آرایه JSON است، هر شیء سه فیلد دارد
    • binding: ضروری، باید با بنداز در بخش services ذکر شده باشد، مثال AUTH_INBOX
    • method: اختیاری، پیش‌فرض rpcEmail، به معنی استفاده از کدام متد rpc این ورکر برای پردازش استفاده شود
    • keywords: آرایه کلمات کلید، بدون توجه به حروف بزرگ و کوچک. برای فیلتر کردن، اگر متن ایمیل پس از تجزیه با این کلمات کلید مطابقت داشته باشد، این ورکر فعال شود و این متد ورکر فراخوانی می‌شود*

پیکربندی کاربر

در صفحه تنظیمات-متغیرهای محیطی، اضافه کردن متغیرهای محیطی

  • ENABLE_ANOTHER_WORKER = true
  • ANOTHER_WORKER_LIST به عنوان آرایه JSON رشته ذکر شده در بالا، به جزئیات بالا مراجعه کنید
json
[
    {
        "binding":"AUTH_INBOX",
        "method":"rpcEmail",
        "keywords":[
            "کد تأیید","کد فعال‌سازی","لینک تأیید","لینک تأیید","تأیید ایمیل","تأیید ایمیل","فعال‌سازی حساب","تأیید ایمیل","تأیید حساب","کد امنیت","تأیید امنیت","تأیید امنیت","کد ورود","تأیید کد","فعال‌سازی حساب","فعال‌سازی حساب","تأیید حساب","تأیید ثبت نام",
            "حساب","فعال‌سازی","تأیید","تأیید","فعال","تأیید","ایمیل","کد","تأیید","ثبت نام","ورود","کد","منقضی","تأیید"
        ]
    }
]

another-worker-enhanced-03.png

آزمایش

یک ایمیل به عنوان ایمیل موقت ارسال کنید، ورکر لاگ را بررسی کنید، یا به صفحه ارائه‌دهنده auth-inbox مراجعه کنید تا کد تأیید را ببینید

another-worker-enhanced-04.png

منتشر شده تحت مجوز MIT