Integraties

E-mail versturen vanuit OpenAI Codex

Codex schrijft en test WeSender-integraties in een geïsoleerde cloud-omgeving.

Coding-agent TypeScript

Vereisten

  • OpenAI-account met toegang tot Codex (codex.openai.com)
  • GitHub-repository voor je project
  • WeSender-account met geverifieerd domein en API-sleutel

Stap 1: Open Codex en koppel je repository

Ga naar codex.openai.com en log in met je OpenAI-account. Koppel je GitHub-repository via de OAuth-flow. Codex krijgt leestoegang tot je code en kan pull requests aanmaken.

Stap 2: Voeg de WeSender API-sleutel toe als secret

In de Codex-omgeving kun je omgevingsvariabelen instellen voordat een taak start. Voeg WESENDER_API_KEY toe als secret. Codex injecteert de variabele in de sandboxomgeving zodat tests kunnen draaien zonder de sleutel in de code te zetten.

Stap 3: Geef Codex een taakopdracht

Maak een nieuwe taak aan in Codex: Voeg een TypeScript-functie toe aan src/lib/email.ts die een transactionele e-mail verstuurt via de WeSender REST API. Gebruik process.env.WESENDER_API_KEY als Bearer-token. Schrijf ook een Vitest-test die de fetch-aanroep mockt en de Authorization-header controleert. Codex werkt asynchroon: het schrijft de code, runt de tests en maakt een pull request als alles slaagt.

Stap 4: Review de pull request

Als Codex klaar is, ontvang je een GitHub pull request met de gegenereerde code en de testresultaten. Controleer de code op hardcoded waarden, het from-adres en de foutafhandeling. Merge de PR als alles klopt.

Stap 5: Deploy en stel omgevingsvariabelen in

Voeg WESENDER_API_KEY toe aan je productie-omgeving (Vercel, Railway, Render of een andere hostingdienst). De code die Codex heeft geschreven gebruikt process.env, dus je hoeft alleen de variabele in te stellen.

Volledig voorbeeld

Hier is de volledige implementatie in src/lib/email.ts:

import { Wesender } from "@wesender/node"

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

export async function sendTransactionalEmail(opts: {
  to:      string
  subject: string
  html:    string
}): Promise<{ id: string }> {
  const result = await client.emails.send({
    from: "noreply@jouwdomein.nl",
    to:      opts.to,
    subject: opts.subject,
    html:    opts.html,
  })
  return { id: result.id }
}

Veelgestelde vragen

Codex heeft toegang tot mijn repository. Is dat veilig?

Codex werkt in een geïsoleerde sandboxomgeving en heeft geen toegang tot productiesystemen. Sla secrets op via de Codex secrets-interface, niet in de code. Controleer altijd de gegenereerde pull request voor je merget.

Codex draait de tests maar WeSender-aanroepen mislukken in de sandbox.

Dat klopt. Codex-testen die echte API-aanroepen doen werken niet in de sandbox tenzij je netwerktoegang hebt ingeschakeld. Schrijf unit tests met een gemockte fetch en gebruik integratietests lokaal of in CI met de echte sleutel.

Kan ik Codex ook vragen om een webhook-handler te schrijven?

Ja. Prompt: voeg een POST /webhooks/wesender route toe die WeSender-webhook-events verwerkt. Valideer de handtekening via de X-Wesender-Signature-header. Sla de sleutel op als WESENDER_WEBHOOK_SECRET.

Volgende stappen