mirror of
https://github.com/dreamhunter2333/cloudflare_temp_email.git
synced 2026-06-08 08:59:53 +08:00
feat: trigger another worker (#547)
This commit is contained in:
@@ -108,6 +108,23 @@ ENABLE_AUTO_REPLY = false
|
||||
# ENABLE_CHECK_JUNK_MAIL = false
|
||||
# 垃圾邮件检查配置, 任何一项不存在或者不通过则被判定为垃圾邮件
|
||||
# JUNK_MAIL_FORCE_PASS_LIST = ["spf", "dkim", "dmarc"]
|
||||
# 是否开启其他 worker 处理邮件
|
||||
# ENABLE_ANOTHER_WORKER = false
|
||||
# 其他 worker 处理邮件的配置,可以配置多个其他 worker。
|
||||
# 通过关键词筛选,调用对应绑定的 worker 的方法(默认方法名为 rpcEmail)
|
||||
# keywords必填,否则 worker 将不会被触发
|
||||
#ANOTHER_WORKER_LIST ="""
|
||||
#[
|
||||
# {
|
||||
# "binding":"AUTH_INBOX",
|
||||
# "method":"rpcEmail",
|
||||
# "keywords":[
|
||||
# "验证码","激活码","激活链接","确认链接","验证邮箱","确认邮件","账号激活","邮件验证","账户确认","安全码","认证码","安全验证","登陆码","确认码","启用账户","激活账户","账号验证","注册确认",
|
||||
# "account","activation","verify","verification","activate","confirmation","email","code","validate","registration","login","code","expire","confirm"
|
||||
# ]
|
||||
# }
|
||||
#]
|
||||
#"""
|
||||
|
||||
# D1 数据库的名称和 ID 可以在 cloudflare 控制台查看
|
||||
[[d1_databases]]
|
||||
@@ -127,6 +144,11 @@ database_id = "xxx" # D1 数据库 ID
|
||||
# namespace_id = "1001"
|
||||
# # 10 requests per minute
|
||||
# simple = { limit = 10, period = 60 }
|
||||
|
||||
# 绑定其他 worker 处理邮件,例如通过 auth-inbox ai 能力解析验证码或激活链接
|
||||
# [[services]]
|
||||
# binding = "AUTH_INBOX"
|
||||
# service = "auth-inbox"
|
||||
```
|
||||
|
||||
## Telegram Bot 配置
|
||||
|
||||
144
vitepress-docs/docs/zh/guide/feature/another-worker-enhanced.md
Normal file
144
vitepress-docs/docs/zh/guide/feature/another-worker-enhanced.md
Normal file
@@ -0,0 +1,144 @@
|
||||
# 通过其他 worker 增强
|
||||
|
||||
> 临时邮箱的核心能力在邮件的管理,通过其他 worker 可以增强临时邮箱的功能,例如通过 auth-inbox ai 能力解析验证码或激活链接
|
||||
> 该功能仅触发其他 worker ,在 webhook 后执行
|
||||
> [!NOTE]
|
||||
> 如果要使用 worker 增强,请提前创建可以 rpc 调用的 worker,具体下文详述
|
||||
> 参考:
|
||||
> - https://developers.cloudflare.com/workers/runtime-apis/bindings/service-bindings/rpc/
|
||||
> - https://developers.cloudflare.com/workers/runtime-apis/rpc/
|
||||
> - auth-inbox 项目:https://github.com/TooonyChen/AuthInbox
|
||||
|
||||
## 创建其他 worker(以 auth-inbox 项目ai解析验证码为例子)
|
||||
|
||||
### worker 改造为继承 WorkerEntrypoint
|
||||
|
||||
一个简单,作为被调用方,提供 rpc 方法调用的worker代码如下(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接口,处理来自其他worker的邮件请求
|
||||
async rpcEmail(requestBody: string): Promise<void> {
|
||||
console.log(`接受其他worker(临时邮件服务cloudflare_temp_email)的请求,request body: ${requestBody}`);
|
||||
// requestBody json 格式,由临时邮件服务发送,格式如下
|
||||
// type RPCEmailMessage = {
|
||||
// from: string | undefined | null,
|
||||
// to: string | undefined | null,
|
||||
// rawEmail: string | undefined | null,
|
||||
// headers: Map<string, string>,
|
||||
// }
|
||||
// ... todo ...
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 部署其他 worker
|
||||
|
||||
修改好或者使用 以auth-inbox 为例,部署到 cloudflare worker 上,详见 https://github.com/TooonyChen/AuthInbox ,或者使用已经修改好的项目 https://github.com/oneisall8955/AuthInbox-fork
|
||||
|
||||
## 配置临时邮件服务,使用指定其他 worker 增强
|
||||
|
||||
## 绑定服务
|
||||
|
||||
### 通过 wrangler.toml 配置
|
||||
|
||||
```toml
|
||||
[[services]]
|
||||
binding = "AUTH_INBOX"
|
||||
service = "auth-inbox"
|
||||
```
|
||||
|
||||
这里的 `binding = "AUTH_INBOX"` 可以自定义,可以是任何字符串,`service = "auth-inbox"` 是部署好的提供rpc接口调用的worker名称。
|
||||
|
||||
### 用户界面配置
|
||||
|
||||
在设置-绑定,添加绑定,选择绑定服务。
|
||||
变量名称填写自定义的名称,可以任意字符串 ,例如 `AUTH_INBOX`。
|
||||
服务绑定选择上一步创建好的服务,例如 `auth-inbox`。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## 环境变量配置
|
||||
|
||||
### 通过 wrangler.toml 配置
|
||||
|
||||
```toml
|
||||
ENABLE_ANOTHER_WORKER = true
|
||||
ANOTHER_WORKER_LIST ="""
|
||||
[
|
||||
{
|
||||
"binding":"AUTH_INBOX",
|
||||
"method":"rpcEmail",
|
||||
"keywords":[
|
||||
"验证码","激活码","激活链接","确认链接","验证邮箱","确认邮件","账号激活","邮件验证","账户确认","安全码","认证码","安全验证","登陆码","确认码","启用账户","激活账户","账号验证","注册确认",
|
||||
"account","activation","verify","verification","activate","confirmation","email","code","validate","registration","login","code","expire","confirm"
|
||||
]
|
||||
}
|
||||
]
|
||||
"""
|
||||
```
|
||||
|
||||
环境变量解释:
|
||||
- ENABLE_ANOTHER_WORKER = true:默认为false,true则开启其他 worker 处理邮件
|
||||
- ANOTHER_WORKER_LIST 是一个JOSN数组,每个对象包3个字段
|
||||
- binding: *必填,必须与services部分指定的 binding = "XXX" 保持一致*,例子中为 AUTH_INBOX
|
||||
- method: 可选,默认 rpcEmail,指的是调用这个 worker 的哪一个 rpc 方法处理
|
||||
- keywords: 关键词数组,忽略大小写。用于过滤,如果*解析后邮件文本*匹配到这些关键词,触发这个 worker,并且调用这个 worker 的 `method` 方法
|
||||
|
||||
### 用户界面配置
|
||||
|
||||
在设置-环境变量,添加环境变量
|
||||
- ENABLE_ANOTHER_WORKER = true
|
||||
- ANOTHER_WORKER_LIST 为上面提及的JSON数组字符串,不再复述,详细介绍看上文
|
||||
```json
|
||||
[
|
||||
{
|
||||
"binding":"AUTH_INBOX",
|
||||
"method":"rpcEmail",
|
||||
"keywords":[
|
||||
"验证码","激活码","激活链接","确认链接","验证邮箱","确认邮件","账号激活","邮件验证","账户确认","安全码","认证码","安全验证","登陆码","确认码","启用账户","激活账户","账号验证","注册确认",
|
||||
"account","activation","verify","verification","activate","confirmation","email","code","validate","registration","login","code","expire","confirm"
|
||||
]
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||

|
||||
|
||||
## 测试
|
||||
|
||||
发送一个邮件到临时邮箱,观察worker日志到,或者到 auth-inbox 提供的面板上查看验证码
|
||||
|
||||

|
||||
Reference in New Issue
Block a user