cookbook/05_agent_os/19_whatsapp/TEST_LOG.md
Date: 2026-07-24
Library source: /Users/ab/code/worktrees/agno-agent-os-rewrite/libs/agno
at commit a7ffb023da5f99a1c43fe28a181e379d855831ba.
Each example was imported with sentinel credentials. The checks exercised only the in-process AgentOS app, local routes, and Meta's GET verification challenge. No model inference, signed webhook POST, Meta API call, or message/media delivery was attempted.
Credentials required for a later live run:
| Files | Required environment |
|---|---|
basic.py, interactive.py, reasoning_agent.py | WHATSAPP_ACCESS_TOKEN, WHATSAPP_PHONE_NUMBER_ID, WHATSAPP_VERIFY_TOKEN, WHATSAPP_APP_SECRET, OPENAI_API_KEY |
media.py | WHATSAPP_ACCESS_TOKEN, WHATSAPP_PHONE_NUMBER_ID, WHATSAPP_VERIFY_TOKEN, WHATSAPP_APP_SECRET, GOOGLE_API_KEY, FAL_API_KEY |
multiple_instances.py | BASIC_WHATSAPP_ACCESS_TOKEN, BASIC_WHATSAPP_PHONE_NUMBER_ID, BASIC_WHATSAPP_VERIFY_TOKEN, RESEARCH_WHATSAPP_ACCESS_TOKEN, RESEARCH_WHATSAPP_PHONE_NUMBER_ID, RESEARCH_WHATSAPP_VERIFY_TOKEN, process-wide WHATSAPP_APP_SECRET, OPENAI_API_KEY |
Status: PASS
Test mode: CONSTRUCTION_SMOKE
Description: Constructs one persistent Agent on the default WhatsApp interface.
Observed result: /health returned status=ok; /config returned OS
whatsapp-basic-os, Agent whatsapp-assistant, and interface /whatsapp.
OpenAPI contained GET /whatsapp/status and GET, POST /whatsapp/webhook.
The status route returned {"status": "available"}, and the GET verification
challenge returned basic-challenge.
Status: PASS
Test mode: CONSTRUCTION_SMOKE
Description: Constructs the focused reply-button, list, location, and reaction tool configuration.
Observed result: /health returned status=ok; /config returned OS
whatsapp-interactive-os, Agent whatsapp-concierge, and interface
/whatsapp. OpenAPI contained the expected status and GET/POST webhook routes.
The status route returned {"status": "available"}, and the GET verification
challenge returned interactive-challenge.
Status: PASS
Test mode: CONSTRUCTION_SMOKE
Description: Constructs the Gemini multimodal Agent, Gemini image tool, Fal video tool, and a 60-second WhatsApp media timeout.
Observed result: With sentinel GOOGLE_API_KEY and FAL_API_KEY, /health
returned status=ok; /config returned OS whatsapp-media-os, Agent
whatsapp-media-agent, and interface /whatsapp. OpenAPI contained the
expected status and GET/POST webhook routes. The status route returned
{"status": "available"}, and the GET verification challenge returned
media-challenge.
Status: PASS
Test mode: CONSTRUCTION_SMOKE
Description: Constructs a reasoning Agent with the WhatsApp interface's
show_reasoning=True behavior enabled.
Observed result: /health returned status=ok; /config returned OS
whatsapp-reasoning-os, Agent whatsapp-reasoning-agent, and interface
/whatsapp. OpenAPI contained the expected status and GET/POST webhook routes.
The status route returned {"status": "available"}, and the GET verification
challenge returned reasoning-challenge.
Status: PASS
Test mode: CONSTRUCTION_SMOKE
Description: Constructs two independently credentialed WhatsApp interfaces
under /basic and /web-research.
Observed result: With six bot-specific sentinel credentials, /health
returned status=ok; /config returned OS whatsapp-multiple-os, Agents
whatsapp-basic-bot and whatsapp-research-bot, and both interface prefixes.
Both status routes returned {"status": "available"}. OpenAPI contained GET
status and GET/POST webhook routes under both prefixes. The GET challenges
returned basic-bot-challenge and research-bot-challenge.
Known live limitation: Signed POST validation still reads one global
WHATSAPP_APP_SECRET; this construction smoke does not claim secure delivery
from two Meta apps with distinct app secrets.
git diff --check passed for the new folder and mapped legacy deletions.