npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

openclaw-ringcentral

v2026.1.30

Published

OpenClaw RingCentral Team Messaging channel plugin

Readme

OpenClaw RingCentral Channel

RingCentral Team Messaging channel plugin for OpenClaw. 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

npm install -g openclaw@latest
openclaw onboard --install-daemon

openclaw plugins install openclaw-ringcentral
openclaw config set channels.ringcentral.enabled true
openclaw config set channels.ringcentral.credentials.clientId "your-client-id"
openclaw config set channels.ringcentral.credentials.clientSecret "your-client-secret"
openclaw config set channels.ringcentral.credentials.jwt "your-jwt-token"
openclaw config set channels.ringcentral.credentials.server "https://platform.ringcentral.com"
openclaw gateway restart

Or install from tarball:

npm pack
openclaw plugins install ./openclaw-ringcentral-<version>.tgz

RingCentral App Setup

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

Configuration

Add to ~/.openclaw/openclaw.json:

{
  "channels": {
    "ringcentral": {
      "enabled": true,
      "credentials": {
        "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 | | credentials.clientId | string | - | RingCentral app client ID | | credentials.clientSecret | string | - | RingCentral app client secret | | credentials.jwt | string | - | JWT token for authentication | | credentials.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 openclaw gateway:
openclaw 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": {
          "credentials": {
            "clientId": "work-client-id",
            "clientSecret": "work-client-secret",
            "jwt": "work-jwt-token"
          }
        },
        "personal": {
          "credentials": {
            "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 [Read Accounts, WebSocket Subscriptions, Team Messaging, WebSocket, Read Messages] 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/openclaw/openclaw-*.log | grep ringcentral

Rate limit errors

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

License

MIT