Channels
Linq
OpenClaw channel plugin for Linq β iMessage, RCS & SMS via Linq cloud API
Install
npm install
openclaw
Configuration Example
{
"channels": {
"linq": {
"enabled": true,
"apiKey": "<your-linq-api-key>",
"fromNumber": "+1XXXXXXXXXX",
"webhookSecret": "<signing-secret-from-webhook-subscription>",
"dmPolicy": "pairing",
"allowFrom": ["[email protected]"],
"groupPolicy": "open",
"serve": {
"port": 3337,
"bind": "127.0.0.1",
"path": "/linq-webhook"
}
}
}
}
README
# openclaw-linq
OpenClaw channel plugin for [Linq](https://www.linqapp.com/) β enables AI conversations via iMessage, RCS, and SMS through Linq's cloud messaging API.
## Features
- iMessage, RCS, SMS support with intelligent fallback
- DM and group chat support
- Pairing-based access control
- Webhook signature verification (HMAC-SHA256)
- Typing indicators and read receipts
- Reply context tracking
- Standalone webhook server (bypasses gateway auth)
## Setup
### 1. Install the plugin
```bash
cd openclaw-linq
npm install
openclaw plugins install --link .
```
### 2. Configure
Add to `~/.openclaw/clawdbot.json`:
```json
{
"channels": {
"linq": {
"enabled": true,
"apiKey": "<your-linq-api-key>",
"fromNumber": "+1XXXXXXXXXX",
"webhookSecret": "<signing-secret-from-webhook-subscription>",
"dmPolicy": "pairing",
"allowFrom": ["[email protected]"],
"groupPolicy": "open",
"serve": {
"port": 3337,
"bind": "127.0.0.1",
"path": "/linq-webhook"
}
}
}
}
```
### 3. Register a webhook subscription
```bash
curl -X POST https://api.linqapp.com/api/partner/v3/webhook-subscriptions \
-H "Authorization: Bearer <your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"target_url": "https://your-domain.com/linq-webhook",
"subscribed_events": [
"message.received", "message.sent",
"message.delivered", "message.failed",
"reaction.added", "reaction.removed"
]
}'
```
Save the returned `signing_secret` as `webhookSecret` in the config.
### 4. Expose webhook endpoint
Use Cloudflare Tunnel, ngrok, or any reverse proxy to route your public URL to the standalone server port (default 3337).
### 5. Restart gateway
```bash
openclaw gateway restart
```
## Configuration Options
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| `apiKey` | string | β | Linq Partner API key (required) |
| `fromNumber` | string | β | Your Linq phone number in E.164 format (required) |
| `webhookSecret` | string | β | Webhook signing secret for HMAC verification |
| `dmPolicy` | string | `"pairing"` | DM access policy: `pairing`, `allowlist`, `open`, `disabled` |
| `allowFrom` | string[] | `[]` | Allowed sender handles (email/phone) |
| `groupPolicy` | string | `"allowlist"` | Group chat policy: `open`, `allowlist`, `disabled` |
| `groupAllowFrom` | string[] | β | Group-specific allowlist (falls back to `allowFrom`) |
| `preferredService` | string | β | Preferred messaging service: `iMessage`, `RCS`, `SMS` |
| `sendReadReceipts` | boolean | `true` | Auto-send read receipts on inbound messages |
| `blockStreaming` | boolean | β | Enable/disable block streaming for replies |
| `textChunkLimit` | number | `4000` | Max characters per outbound message chunk |
| `serve.port` | number | `3337` | Standalone webhook server port |
| `serve.bind` | string | `"127.0.0.1"` | Standalone server bind address |
| `serve.path` | string | `"/linq-webhook"` | Webhook endpoint path |
## Pairing
When `dmPolicy` is set to `"pairing"`, new senders receive a pairing code. Approve with:
```bash
openclaw pairing approve linq <CODE>
```
## License
MIT
channels
Comments
Sign in to leave a comment