openclaw/extensions/ringcentral
John Lin 0b1aebe80f
feat(ringcentral): add markdown conversion for RingCentral Mini-Markdown
RingCentral uses a different markdown format where _text_ means underline,
not italic. This adds automatic conversion:
- _italic_ -> *italic* (preserve italic intent)
- __bold__ -> **bold**
- Remove unsupported: ~~strikethrough~~, `code`, ```code blocks```
- # Heading -> **Heading** (bold)
- Preserve URLs in links from underscore conversion

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-01-28 23:11:39 +08:00
..
src feat(ringcentral): add markdown conversion for RingCentral Mini-Markdown 2026-01-28 23:11:39 +08:00
clawdbot.plugin.json feat: add RingCentral Team Messaging channel extension 2026-01-28 23:11:36 +08:00
index.ts feat: add RingCentral Team Messaging channel extension 2026-01-28 23:11:36 +08:00
package.json feat: add RingCentral Team Messaging channel extension 2026-01-28 23:11:36 +08:00
README.md fix(ringcentral): change dmPolicy default to allowlist 2026-01-28 23:11:39 +08:00

Clawdbot RingCentral Channel

RingCentral Team Messaging channel plugin for Clawdbot. Enables bidirectional messaging with AI assistants through RingCentral Team Messaging.

Features

  • WebSocket-based real-time messaging (no public webhook required)
  • JWT authentication
  • Self-only mode (talk to AI as yourself)
  • Support for text messages and attachments
  • Typing indicators

Prerequisites

  1. A RingCentral account with Team Messaging enabled
  2. A RingCentral REST API App (not Bot Add-in)

Installation

clawdbot plugin install @clawdbot/ringcentral

Or install from tarball:

clawdbot plugin install ./clawdbot-ringcentral-2026.1.25.tgz

RingCentral App Setup

  1. Go to RingCentral Developer Portal
  2. Create a new app:
    • App Type: REST API App
    • Auth: JWT auth flow
  3. Add permissions:
    • Team Messaging - Read and send messages
    • WebSocket Subscriptions - Real-time event subscriptions
    • Read Accounts - Read user information
  4. Generate a JWT token for your user

Configuration

Add to ~/.clawdbot/clawdbot.json:

{
  "channels": {
    "ringcentral": {
      "enabled": true,
      "clientId": "your-client-id",
      "clientSecret": "your-client-secret",
      "jwt": "your-jwt-token",
      "server": "https://platform.ringcentral.com"
    }
  }
}

Or use environment variables:

export RINGCENTRAL_CLIENT_ID="your-client-id"
export RINGCENTRAL_CLIENT_SECRET="your-client-secret"
export RINGCENTRAL_JWT="your-jwt-token"

Configuration Options

Option Type Default Description
enabled boolean false Enable the RingCentral channel
clientId string - RingCentral app client ID
clientSecret string - RingCentral app client secret
jwt string - JWT token for authentication
server string https://platform.ringcentral.com RingCentral API server URL
selfOnly boolean true Only respond to JWT user in Personal chat
name string - Bot display name
textChunkLimit number 4000 Maximum characters per message chunk
dmPolicy string "allowlist" DM policy (only when selfOnly: false)
groupPolicy string "allowlist" Group policy (only when selfOnly: false)

Note: When selfOnly: true (default), the bot only responds to the JWT user in their Personal chat. All other policy settings (dmPolicy, allowFrom, groupPolicy, etc.) are ignored.

Usage

  1. Start the Clawdbot gateway:
clawdbot gateway run
  1. Open RingCentral app and go to your "Personal" chat (conversation with yourself)

  2. Send a message - the AI will respond!

How It Works

This plugin uses JWT authentication, which means:

  • Messages appear from your own account (not a separate bot)
  • Default mode (selfOnly: true): Only processes messages you send to yourself
  • Personal chat only: By default, only responds in your "Personal" chat

This is ideal for personal AI assistant use without needing to set up a separate bot account.

Advanced Configuration

Allow Group Chats

To enable the bot in group chats:

{
  "channels": {
    "ringcentral": {
      "enabled": true,
      "selfOnly": false,
      "groupPolicy": "open",
      "dmPolicy": "open"
    }
  }
}

Multiple Accounts

{
  "channels": {
    "ringcentral": {
      "enabled": true,
      "defaultAccount": "work",
      "accounts": {
        "work": {
          "clientId": "work-client-id",
          "clientSecret": "work-client-secret",
          "jwt": "work-jwt-token"
        },
        "personal": {
          "clientId": "personal-client-id",
          "clientSecret": "personal-client-secret",
          "jwt": "personal-jwt-token"
        }
      }
    }
  }
}

Troubleshooting

"Unauthorized for this grant type"

Your app type is wrong. Create a REST API App (not Bot Add-in) with JWT auth flow.

"In order to call this API endpoint, application needs to have [WebSocket] permission"

Add WebSocket Subscriptions permission in your app settings. Permission changes may take a few minutes to propagate.

Messages not being processed

  1. Check that selfOnly mode matches your use case
  2. Verify you're sending messages in a "Personal" chat (conversation with yourself)
  3. Check gateway logs: tail -f /tmp/clawdbot/clawdbot-*.log | grep ringcentral

Rate limit errors

RingCentral has API rate limits. If you see "Request rate exceeded", wait a minute before retrying.

License

MIT