Integraties

E-mail versturen vanuit OpenAI Agents SDK

De officiële OpenAI Agents SDK met ingebouwde tool-lus — voeg send_email toe en de agent mailt zelfstandig.

Agent-framework TypeScript Webhooks

Vereisten

  • WeSender-account met geverifieerd domein en API-sleutel
  • OPENAI_API_KEY ingesteld als omgevingsvariabele
  • Node.js 18 of nieuwer
  • npm install @openai/agents @wesender/node zod

Stap 1: Installeer de pakketten

Voeg de OpenAI Agents SDK, de WeSender Node SDK en Zod toe aan je project.

npm install @openai/agents @wesender/node zod

Stap 2: Definieer de e-mailtool

Maak send_email aan als een Agents SDK-tool met een Zod-schema. De execute-functie verstuurt de mail via WeSender en geeft het e-mail-ID terug.

import { tool } from "@openai/agents"
import { z } from "zod"
import { Wesender } from "@wesender/node"

const emailClient = new Wesender(process.env.WESENDER_API_KEY!)

export const sendEmail = tool({
  name: "send_email",
  description: "Verstuur een transactionele e-mail via WeSender",
  parameters: z.object({
    to:      z.string(),
    subject: z.string(),
    html:    z.string(),
  }),
  execute: async ({ to, subject, html }) => {
    const result = await emailClient.emails.send({
      from: "agent@jouwdomein.nl",
      to,
      subject,
      html,
    })
    return "E-mail verstuurd, id: " + result.id
  },
})

Stap 3: Maak de agent aan en start hem

Maak een agent met de e-mailtool en start hem via run(). De SDK handelt de tool-lus automatisch af: aanroepen, uitvoeren, doorgaan.

import { Agent, run } from "@openai/agents"
import { sendEmail } from "./stap-2"

const agent = new Agent({
  name: "Mailagent",
  instructions: "Je verstuurt transactionele e-mails namens de gebruiker.",
  tools: [sendEmail],
})

const result = await run(agent, "Mail een welkomstbericht naar nieuwe@klant.nl")
console.log(result.finalOutput)

Volledig voorbeeld

Hier is de volledige implementatie in src/agent.ts:

import { Agent, run, tool } from "@openai/agents"
import { z } from "zod"
import { Wesender } from "@wesender/node"

const emailClient = new Wesender(process.env.WESENDER_API_KEY!)

const sendEmail = tool({
  name: "send_email",
  description: "Verstuur een transactionele e-mail via WeSender",
  parameters: z.object({
    to:      z.string(),
    subject: z.string(),
    html:    z.string(),
  }),
  execute: async ({ to, subject, html }) => {
    const result = await emailClient.emails.send({
      from:    "agent@jouwdomein.nl",
      to,
      subject,
      html,
    })
    return "E-mail verstuurd, id: " + result.id
  },
})

const agent = new Agent({
  name: "Mailagent",
  instructions: "Je verstuurt transactionele e-mails namens de gebruiker.",
  tools: [sendEmail],
})

const result = await run(agent, "Mail een welkomstbericht naar nieuwe@klant.nl")
console.log(result.finalOutput)

Bezorgstatussen via webhooks

OpenAI Agents SDK kan bezorg-, bounce- en klachtsignalen ontvangen via webhooks. Configureer een webhook-endpoint in je OpenAI Agents SDK-workflow dat POST-verzoeken van Wesender accepteert. Zie Webhooks instellen voor de volledige configuratiestappen en het payload-formaat.

Veelgestelde vragen

Kan de agent meerdere tools combineren?

Ja. Voeg extra tools toe aan de tools-array. De agent kiest zelf welke hij nodig heeft op basis van de instructie en de context van het gesprek.

Werkt dit ook met handoffs naar andere agents?

Ja. De Agents SDK ondersteunt handoffs tussen agents. Geef de e-mailtool aan de agent die berichten moet versturen en gebruik handoffs voor de overige taken.

Hoe beperk ik wat de agent mag doen?

Wees specifiek in de instructies en voeg een goedkeuringsstap in voor onomkeerbare acties. Je kunt ook de output van de agent eerst tonen aan de gebruiker voordat je de tool-aanroep uitvoert.

Volgende stappen