INTEGRITY Документация

Электронная почта

Email представляет собой канал связи для агентов, которым нужно взаимодействовать с пользователями или системами через почтовые ящики вместо чат-интерфейсов. Агенты могут отправлять исходящие письма, получать входящие письма, направлять ответы обратно в существующую сессию и использовать содержимое письма как часть workflow агента.

Используйте email, если хотите, чтобы агент:

Как это работает

Исходящая электронная почта использует 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.

Email-агент

Создайте агента, который отправляет, получает, маршрутизирует и отвечает на электронные письма с помощью Cloudflare Email Service и Agents SDK.

Служба электронной почты

Маршрутизируйте, получайте и отправляйте электронную почту с помощью Cloudflare Email Service.

Отправка писем из Workers

Используйте Workers API для отправки исходящей электронной почты.