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.
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.