← Создание агентов на Cloudflare / agents / communication-channels
Электронная почта
Email представляет собой канал связи для агентов, которым нужно взаимодействовать с пользователями или системами через почтовые ящики вместо чат-интерфейсов. Агенты могут отправлять исходящие письма, получать входящие письма, направлять ответы обратно в существующую сессию и использовать содержимое письма как часть workflow агента.
Используйте email, если хотите, чтобы агент:
- Отправляйте уведомления, сводки, подтверждения или последующие сообщения.
- Обработка входящих сообщений через Cloudflare Email Service.
- Продолжите разговор из ответа.
- Маршрутизируйте обращения в поддержку, отдел продаж или операционные рабочие процессы через агента.
Как это работает
Исходящая электронная почта использует send_email привязку в вашем Worker. Для входящей почты используется правило маршрутизации Email Service, которое отправляет сообщения вашему Worker, где агент может разобрать отправителя, получателей, заголовки и тело письма, прежде чем решить, как ответить.
Для обработки ответов включите стабильный идентификатор в адрес для ответа, метаданные сообщения или заголовки, чтобы Worker мог направлять последующие сообщения на нужный экземпляр агента.
Базовый паттерн
Реализуйте onEmail() чтобы обрабатывать входящую почту, и использовать sendEmail() или replyToEmail() когда агенту нужно отправить ответ.
import { Agent, callable, routeAgentEmail } from "agents";
import { createAddressBasedEmailResolver } from "agents/email";
export class EmailAgent extends Agent {
@callable()
async sendWelcomeEmail(to) {
await this.sendEmail({
binding: this.env.EMAIL,
to,
from: "[email protected]",
replyTo: "[email protected]",
subject: "Welcome",
text: "Thanks for signing up. Reply to this email if you need help.",
});
}
async onEmail(email) {
await this.replyToEmail(email, {
fromName: "Support Agent",
body: "Thanks for your email. We received it.",
});
}
}
export default {
async email(message, env) {
await routeAgentEmail(message, env, {
resolver: createAddressBasedEmailResolver("EmailAgent"),
});
},
};import { Agent, callable, routeAgentEmail } from "agents";
import { createAddressBasedEmailResolver, type AgentEmail } from "agents/email";
export class EmailAgent extends Agent {
@callable()
async sendWelcomeEmail(to: string) {
await this.sendEmail({
binding: this.env.EMAIL,
to,
from: "[email protected]",
replyTo: "[email protected]",
subject: "Welcome",
text: "Thanks for signing up. Reply to this email if you need help.",
});
}
async onEmail(email: AgentEmail) {
await this.replyToEmail(email, {
fromName: "Support Agent",
body: "Thanks for your email. We received it.",
});
}
}
export default {
async email(message, env) {
await routeAgentEmail(message, env, {
resolver: createAddressBasedEmailResolver("EmailAgent"),
});
},
} satisfies ExportedHandler<Env>;Конфигурация
Добавьте send_email привязку для исходящей почты, затем настройте правило маршрутизации Email Service для отправки входящей почты в ваш Worker.
{
"$schema": "./node_modules/wrangler/config-schema.json",
"send_email": [
{
"name": "EMAIL",
"remote": true
}
]
}[[send_email]]
name = "EMAIL"
remote = true remote = true опция позволяет вызывать реальный API Email Service во время локальной разработки с помощью wrangler dev.
Создайте агента для электронной почты
Полное пошаговое руководство, включающее настройку домена, привязки, входящую маршрутизацию и защищённые ответы, см. в примере email agent.