Integraties

E-mail versturen vanuit Google ADK

Bouw een Gemini-agent met de Agent Development Kit van Google en geef hem een e-mailtool via WeSender.

Agent-framework Python Webhooks

Vereisten

  • WeSender-account met geverifieerd domein en API-sleutel
  • Een Gemini API-sleutel via Google AI Studio
  • Python 3.10 of nieuwer
  • pip install google-adk wesender

Stap 1: Installeer de pakketten

Voeg de Google ADK en de WeSender Python SDK toe aan je project.

pip install google-adk wesender

Stap 2: Definieer de tool en maak de agent

Schrijf send_email als gewone Python-functie. De ADK gebruikt de docstring en type-annotaties om het model te vertellen wat de tool doet.

import os
from google.adk.agents import Agent
from wesender import Wesender

client = Wesender(api_key=os.environ["WESENDER_API_KEY"])

def send_email(to: str, subject: str, html: str) -> dict:
    """Verstuur een transactionele e-mail via WeSender."""
    result = client.emails.send(
        from_="agent@jouwdomein.nl",
        to=to,
        subject=subject,
        html=html,
    )
    return {"status": "verstuurd", "id": result.id}

root_agent = Agent(
    name="mailagent",
    model="gemini-2.5-flash",
    instruction="Je verstuurt transactionele e-mails namens de gebruiker.",
    tools=[send_email],
)

Stap 3: Start de agent via de ADK Runner

Maak een Runner-instantie en roep de agent aan met een sessie. De ADK handelt de tool-aanroepen automatisch af.

import asyncio
from google.adk.runners import Runner
from google.adk.sessions import InMemorySessionService

async def main():
    sessions = InMemorySessionService()
    runner   = Runner(agent=root_agent, session_service=sessions)
    session  = await sessions.create_session()
    response = await runner.run(
        session_id=session.id,
        message="Mail een welkomstbericht naar nieuwe@klant.nl",
    )
    print(response.text)

asyncio.run(main())

Volledig voorbeeld

Hier is de volledige implementatie in agent.py:

import asyncio
import os
from google.adk.agents import Agent
from google.adk.runners import Runner
from google.adk.sessions import InMemorySessionService
from wesender import Wesender

client = Wesender(api_key=os.environ["WESENDER_API_KEY"])

def send_email(to: str, subject: str, html: str) -> dict:
    """Verstuur een transactionele e-mail via WeSender."""
    result = client.emails.send(
        from_="agent@jouwdomein.nl",
        to=to,
        subject=subject,
        html=html,
    )
    return {"status": "verstuurd", "id": result.id}

root_agent = Agent(
    name="mailagent",
    model="gemini-2.5-flash",
    instruction="Je verstuurt transactionele e-mails namens de gebruiker.",
    tools=[send_email],
)

async def main():
    sessions = InMemorySessionService()
    runner   = Runner(agent=root_agent, session_service=sessions)
    session  = await sessions.create_session()
    response = await runner.run(
        session_id=session.id,
        message="Mail een welkomstbericht naar nieuwe@klant.nl",
    )
    print(response.text)

if __name__ == "__main__":
    asyncio.run(main())

Bezorgstatussen via webhooks

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

Veelgestelde vragen

Kan ik dit combineren met andere ADK-tools?

Ja. Voeg meer functies toe aan de tools-lijst van de agent. De ADK bepaalt op basis van de instructie welke tool wanneer ingezet wordt.

Werkt dit ook met sub-agents?

Ja. De ADK ondersteunt hiërarchische agents. Geef de e-mailtool aan de sub-agent die berichten moet versturen en laat de root-agent de taakverdeling regelen.

Welke Gemini-modellen kan ik gebruiken?

De ADK werkt met de Gemini-modellenfamilie. Pas de modelnaam aan in de Agent-aanroep, zoals gemini-2.5-pro, om een ander model te kiezen.

Volgende stappen