E-mail versturen vanuit OpenAI Responses API
De opvolger van de Assistants API — definieer send_email als tool en het model bepaalt wanneer er gemaild wordt.
Vereisten
- WeSender-account met geverifieerd domein en API-sleutel
- OPENAI_API_KEY ingesteld als omgevingsvariabele
- Node.js 18 of nieuwer
- npm install openai @wesender/node
Stap 1: Installeer de pakketten
Voeg de officiële OpenAI Node SDK en de WeSender Node SDK toe aan je project.
npm install openai @wesender/node Stap 2: Beschrijf de tool als JSON-schema
Definieer send_email als een functie-tool met een JSON-schema. De Responses API gebruikt dit schema om te bepalen wanneer en met welke argumenten de tool aangeroepen wordt.
export const tools = [
{
type: "function" as const,
name: "send_email",
description: "Verstuur een transactionele e-mail via WeSender",
parameters: {
type: "object",
properties: {
to: { type: "string" },
subject: { type: "string" },
html: { type: "string" },
},
required: ["to", "subject", "html"],
additionalProperties: false,
},
},
] Stap 3: Roep de Responses API aan
Stuur een instructie naar het model. Als het model send_email wil aanroepen, geeft het een function_call-item terug in de output-array.
import OpenAI from "openai"
import { tools } from "./stap-2"
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY! })
const response = await openai.responses.create({
model: "gpt-4o",
input: "Mail een welkomstbericht naar nieuwe@klant.nl",
tools,
}) Stap 4: Voer de toolaanroep uit
Loop door de output en voer elke function_call uit met de WeSender Node SDK.
import { Wesender } from "@wesender/node"
const emailClient = new Wesender(process.env.WESENDER_API_KEY!)
for (const item of response.output) {
if (item.type === "function_call" && item.name === "send_email") {
const args = JSON.parse(item.arguments)
const result = await emailClient.emails.send({
from: "assistent@jouwdomein.nl",
...args,
})
console.log("E-mail verstuurd, id: " + result.id)
}
} Volledig voorbeeld
Hier is de volledige implementatie in src/responses.ts:
import OpenAI from "openai"
import { Wesender } from "@wesender/node"
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY! })
const emailClient = new Wesender(process.env.WESENDER_API_KEY!)
const tools = [
{
type: "function" as const,
name: "send_email",
description: "Verstuur een transactionele e-mail via WeSender",
parameters: {
type: "object",
properties: {
to: { type: "string" },
subject: { type: "string" },
html: { type: "string" },
},
required: ["to", "subject", "html"],
additionalProperties: false,
},
},
]
async function run(prompt: string) {
const response = await openai.responses.create({
model: "gpt-4o",
input: prompt,
tools,
})
for (const item of response.output) {
if (item.type === "function_call" && item.name === "send_email") {
const args = JSON.parse(item.arguments)
const result = await emailClient.emails.send({
from: "assistent@jouwdomein.nl",
...args,
})
console.log("E-mail verstuurd, id: " + result.id)
}
}
}
run("Mail een welkomstbericht naar nieuwe@klant.nl") Bezorgstatussen via webhooks
OpenAI Responses API kan bezorg-, bounce- en klachtsignalen ontvangen via webhooks. Configureer een webhook-endpoint in je OpenAI Responses API-workflow dat POST-verzoeken van Wesender accepteert. Zie Webhooks instellen voor de volledige configuratiestappen en het payload-formaat.
Veelgestelde vragen
Waarom de Responses API en niet de Assistants API?
OpenAI sluit de Assistants API op 26 augustus 2026. De Responses API is de aanbevolen opvolger voor nieuwe projecten en de plek waar nieuwe modellen als eerste beschikbaar komen.
Moet ik het toolresultaat terugsturen voor een vervolggesprek?
Ja. Stuur het toolresultaat terug in een volgende aanroep via het previous_response_id-veld, zodat het model de context van het gesprek behoudt.
Werkt dit met alle OpenAI-modellen?
Met elk model dat tool calling ondersteunt op de Responses API. OpenAI brengt nieuwe modellen exclusief uit op deze API.