164 lines
7.7 KiB
Plaintext
164 lines
7.7 KiB
Plaintext
---
|
|
title: Composio notifier
|
|
description: Route notifications through the Composio toolkit — Slack, Discord, or Gmail.
|
|
---
|
|
|
|
<div style={{ display: "flex", alignItems: "center", gap: "0.75rem", margin: "0.5rem 0 1.25rem" }}>
|
|
<Logo name="composio" size={28} />
|
|
<span style={{ fontSize: "0.8125rem", color: "var(--color-fd-muted-foreground)" }}>
|
|
Slot: <code>notifier</code> · Name: <code>composio</code>
|
|
</span>
|
|
</div>
|
|
|
|
<PlatformSupport macos="full" linux="full" windows="full" />
|
|
|
|
Uses the [Composio toolkit](https://composio.dev) to deliver notifications. Handy when you already have Composio set up for other agent tooling — a single credential covers Slack, Discord, and Gmail. Discord supports a low-friction webhook mode and an advanced bot mode.
|
|
|
|
## Setup
|
|
|
|
Run the interactive Composio setup hub:
|
|
|
|
```bash
|
|
ao setup composio
|
|
```
|
|
|
|
The hub lets you choose Slack, Discord webhook, Discord bot, or Gmail. AO asks for the Composio API key, `userId`, required target details, which notification priorities the notifier should receive, then reviews the config before writing. When you run `ao setup composio`, the selected app is written to the canonical `notifiers.composio` target. You can skip the app picker with `--slack`, `--discord-webhook`, `--discord-bot`, or `--gmail`. Discord webhook mode does not need a Composio connected account; Discord bot mode uses a bot token once to create a connected account and stores only the resulting `connectedAccountId`. Gmail mode uses an existing Gmail connected account, or creates a Composio connect link from an existing Gmail auth config.
|
|
|
|
Dedicated commands use the same guided setup but write app-specific targets:
|
|
|
|
```bash
|
|
ao setup composio-slack # writes notifiers.composio-slack
|
|
ao setup composio-discord # writes notifiers.composio-discord
|
|
ao setup composio-discord-bot # writes notifiers.composio-discord-bot
|
|
ao setup composio-mail # writes notifiers.composio-mail
|
|
```
|
|
|
|
You can also run the scriptable Slack setup directly:
|
|
|
|
```bash
|
|
export COMPOSIO_API_KEY=ak_...
|
|
ao setup composio-slack --user-id aoagent --channel "#agents" --non-interactive
|
|
```
|
|
|
|
All Composio setup commands accept `--routing-preset urgent-only`,
|
|
`--routing-preset urgent-action`, or `--routing-preset all`.
|
|
|
|
If you already know the Slack connected account id, pass it directly:
|
|
|
|
```bash
|
|
ao setup composio-slack --connected-account-id ca_... --non-interactive
|
|
```
|
|
|
|
Run the Discord webhook setup when you only need channel notifications:
|
|
|
|
```bash
|
|
export COMPOSIO_API_KEY=ak_...
|
|
ao setup composio-discord --webhook-url "https://discord.com/api/webhooks/..." --non-interactive
|
|
```
|
|
|
|
Run the Discord bot setup when you need a bot identity and channel-id based delivery:
|
|
|
|
```bash
|
|
export COMPOSIO_API_KEY=ak_...
|
|
ao setup composio-discord-bot --channel-id "1234567890" --bot-token "$DISCORD_BOT_TOKEN" --non-interactive
|
|
```
|
|
|
|
The bot token is used once to create a Composio connected account. AO writes only the resulting `connectedAccountId`.
|
|
|
|
Run the Gmail setup when you want AO notifications by email:
|
|
|
|
```bash
|
|
export COMPOSIO_API_KEY=ak_...
|
|
ao setup composio-mail --email-to alerts@example.com --non-interactive
|
|
```
|
|
|
|
Connect Gmail in Composio first, or choose Gmail in `ao setup composio` and generate a connect link from an existing Gmail auth config. AO does not create Gmail OAuth/auth configs. The setup command finds an active Gmail connected account for the configured `userId` and writes its `connectedAccountId`. If multiple Gmail accounts are available, pass the one AO should use:
|
|
|
|
```bash
|
|
ao setup composio-mail --email-to alerts@example.com --connected-account-id ca_...
|
|
```
|
|
|
|
You can also ask AO to print a Composio Gmail connect URL:
|
|
|
|
```bash
|
|
ao setup composio-mail --email-to alerts@example.com --connect
|
|
```
|
|
|
|
AO uses an existing Composio Gmail auth config for that link. If you need a specific custom Gmail auth config, pass it explicitly:
|
|
|
|
```bash
|
|
ao setup composio-mail --email-to alerts@example.com --connect --auth-config-id ac_...
|
|
```
|
|
|
|
If Google blocks a Gmail connection, fix the Gmail auth config in Composio, then rerun `ao setup composio-mail`.
|
|
|
|
## Use
|
|
|
|
```yaml title="agent-orchestrator.yaml"
|
|
notifiers:
|
|
composio:
|
|
plugin: composio
|
|
defaultApp: slack # slack | discord | gmail
|
|
userId: aoagent # Composio user id
|
|
connectedAccountId: ca_... # preferred when available
|
|
channelName: "#agents" # Slack
|
|
emailTo: alerts@example.com # required when defaultApp=gmail
|
|
composioApiKey: ak_... # optional override; otherwise uses env
|
|
|
|
composio-discord:
|
|
plugin: composio
|
|
defaultApp: discord
|
|
mode: webhook
|
|
webhookUrl: https://discord.com/api/webhooks/...
|
|
userId: aoagent
|
|
|
|
composio-discord-bot:
|
|
plugin: composio
|
|
defaultApp: discord
|
|
mode: bot
|
|
channelId: "1234567890"
|
|
userId: aoagent
|
|
connectedAccountId: ca_...
|
|
|
|
composio-mail:
|
|
plugin: composio
|
|
defaultApp: gmail
|
|
emailTo: alerts@example.com
|
|
userId: aoagent
|
|
connectedAccountId: ca_...
|
|
|
|
composio-slack:
|
|
plugin: composio
|
|
defaultApp: slack
|
|
userId: aoagent
|
|
connectedAccountId: ca_...
|
|
channelName: "#agents"
|
|
```
|
|
|
|
## Config
|
|
|
|
| Key | Required | Default | What it does |
|
|
| -------------------- | --------------- | ---------------------- | -------------------------------------------------------------------- |
|
|
| `defaultApp` | ✓ | `slack` | Which Composio app to target: `slack`, `discord`, or `gmail` |
|
|
| `mode` | Discord only | auto | `webhook` uses Discord webhooks; `bot` uses bot channel messages |
|
|
| `userId` | optional | `aoagent` | Composio user id for connected-account lookup |
|
|
| `entityId` | optional | — | Backward-compatible alias for `userId` |
|
|
| `authConfigId` | setup only | — | Existing Composio Gmail auth config used by `--connect` |
|
|
| `connectedAccountId` | Slack/Gmail/bot | — | Specific connected account to use; not used for Discord webhook mode |
|
|
| `channelName` | for Slack | — | Slack channel name |
|
|
| `channelId` | Discord bot | — | Discord channel id for bot mode |
|
|
| `webhookUrl` | Discord webhook | — | Discord webhook URL for webhook mode |
|
|
| `emailTo` | ✓ when `gmail` | — | Recipient address |
|
|
| `composioApiKey` | optional | env `COMPOSIO_API_KEY` | Override the API key from config |
|
|
| `toolVersion` | optional | app default | Tool version passed to `@composio/core` |
|
|
| `toolVersions` | optional | — | App-specific tool versions, for example `{ slack: "20260508_00" }` |
|
|
|
|
Slack defaults to `20260508_00`; Discord defaults to `20260429_01`; Gmail defaults to `20260506_01`. Discord uses Composio's `discordbot` toolkit for both webhook and bot modes. Webhook mode calls `DISCORDBOT_EXECUTE_WEBHOOK` with the Discord webhook id/token from `webhookUrl`, so no Composio Discord connect link is required.
|
|
If `mode` is omitted for Discord, AO uses `webhook` when `webhookUrl` is present and `bot` otherwise.
|
|
|
|
## When to use
|
|
|
|
- Your org already has Composio set up.
|
|
- You want to route notifications to Gmail as a fallback for people who don't live in Slack/Discord.
|
|
- You'd rather manage one Composio credential than three webhook URLs.
|