Skip to content

Add Discord, Teams, iMessage, and WhatsApp channel adapters - #17

Merged
moe-berri merged 7 commits into
mainfrom
codex/messaging-providers
Oct 12, 2026
Merged

moe-berri merged 7 commits into
mainfrom
codex/messaging-providers

Conversation

@moe-berri

Copy link
Copy Markdown
Collaborator

AgentChat can now receive messages and send confirmed text replies through Discord, Microsoft Teams, iMessage via BlueBubbles, and WhatsApp Business Cloud API. Each provider has its own package, optional dependencies, setup guide, and framework-free echo example.

  • Discord uses its gateway for incoming events and single-attempt REST sends with mentions disabled.
  • Teams uses Microsoft 365 Agents SDK authentication, tenant checks, HTTPS service URL validation, and continuation contexts for replies after HTTP acknowledgement.
  • iMessage uses authenticated BlueBubbles Socket.IO events and REST sends through AppleScript.
  • WhatsApp verifies webhook challenges and raw-body HMAC signatures, admits batches atomically, and sends replies through the Cloud API.

The adapters preserve provider/account/conversation identity and attachment references, bound pending handlers, drain or cancel work on shutdown, and reject missing send receipts. The shared private dispatch helper contains no provider imports. Provider imports stay inside their own packages, following the containment rules on current main.

This first pass implements the minimum Channel contract. Native history, rich replies, file transfer, mirroring, and working indicators use the existing unsupported-capability behavior on these new adapters. Setup guides document conversation routing, text limits, delivery limitations, and live verification steps.

Validation:

  • ruff check . passed.
  • python -m pytest: 342 passed on Python 3.12.14, including real local HTTP/Socket.IO round trips, Microsoft/Discord SDK parsing/routing, authentication rejection, receipt failures, queue limits, cancellation, and import isolation.
  • Built wheel and source distribution; separately installed the base package and every provider extra in clean environments and checked provider isolation and package containment.
  • Echo examples compile; relative documentation links resolve.

No live provider credentials or destinations were used. This is a draft pending the documented live echo checks against provisioned accounts.

The branch contains six focused implementation/test commits and a merge adapting them to upstream main through b85fb2d (including the Slack transport-composition and reply-routing changes).

@moe-berri
moe-berri marked this pull request as ready for review October 12, 2026 18:58
@moe-berri
moe-berri merged commit 34837a3 into main Oct 12, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant