openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
375 lines (374 loc) • 11.8 kB
JSON
{
"id": "sms",
"name": "SMS",
"description": "Twilio SMS channel plugin for OpenClaw text messages.",
"activation": {
"onStartup": false
},
"channels": [
"sms"
],
"channelEnvVars": {
"sms": [
"TWILIO_ACCOUNT_SID",
"TWILIO_AUTH_TOKEN",
"TWILIO_PHONE_NUMBER",
"TWILIO_SMS_FROM",
"TWILIO_MESSAGING_SERVICE_SID",
"SMS_PUBLIC_WEBHOOK_URL",
"SMS_WEBHOOK_PATH",
"SMS_ALLOWED_USERS"
]
},
"configSchema": {
"type": "object",
"additionalProperties": false,
"properties": {}
},
"channelConfigs": {
"sms": {
"schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"accountSid": {
"type": "string"
},
"authToken": {
"anyOf": [
{
"type": "string"
},
{
"oneOf": [
{
"type": "object",
"properties": {
"source": {
"type": "string",
"const": "env"
},
"provider": {
"type": "string",
"pattern": "^[a-z][a-z0-9_-]{0,63}$"
},
"id": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]{0,127}$"
}
},
"required": [
"source",
"provider",
"id"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"source": {
"type": "string",
"const": "file"
},
"provider": {
"type": "string",
"pattern": "^[a-z][a-z0-9_-]{0,63}$"
},
"id": {
"type": "string"
}
},
"required": [
"source",
"provider",
"id"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"source": {
"type": "string",
"const": "exec"
},
"provider": {
"type": "string",
"pattern": "^[a-z][a-z0-9_-]{0,63}$"
},
"id": {
"type": "string"
}
},
"required": [
"source",
"provider",
"id"
],
"additionalProperties": false
}
]
}
]
},
"fromNumber": {
"type": "string"
},
"messagingServiceSid": {
"type": "string"
},
"defaultTo": {
"type": "string"
},
"webhookPath": {
"type": "string"
},
"publicWebhookUrl": {
"type": "string"
},
"dangerouslyDisableSignatureValidation": {
"type": "boolean"
},
"dmPolicy": {
"default": "pairing",
"type": "string",
"enum": [
"pairing",
"allowlist",
"open",
"disabled"
]
},
"allowFrom": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
]
}
},
"textChunkLimit": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"accounts": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"accountSid": {
"type": "string"
},
"authToken": {
"anyOf": [
{
"type": "string"
},
{
"oneOf": [
{
"type": "object",
"properties": {
"source": {
"type": "string",
"const": "env"
},
"provider": {
"type": "string",
"pattern": "^[a-z][a-z0-9_-]{0,63}$"
},
"id": {
"type": "string",
"pattern": "^[A-Z][A-Z0-9_]{0,127}$"
}
},
"required": [
"source",
"provider",
"id"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"source": {
"type": "string",
"const": "file"
},
"provider": {
"type": "string",
"pattern": "^[a-z][a-z0-9_-]{0,63}$"
},
"id": {
"type": "string"
}
},
"required": [
"source",
"provider",
"id"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"source": {
"type": "string",
"const": "exec"
},
"provider": {
"type": "string",
"pattern": "^[a-z][a-z0-9_-]{0,63}$"
},
"id": {
"type": "string"
}
},
"required": [
"source",
"provider",
"id"
],
"additionalProperties": false
}
]
}
]
},
"fromNumber": {
"type": "string"
},
"messagingServiceSid": {
"type": "string"
},
"defaultTo": {
"type": "string"
},
"webhookPath": {
"type": "string"
},
"publicWebhookUrl": {
"type": "string"
},
"dangerouslyDisableSignatureValidation": {
"type": "boolean"
},
"dmPolicy": {
"default": "pairing",
"type": "string",
"enum": [
"pairing",
"allowlist",
"open",
"disabled"
]
},
"allowFrom": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
]
}
},
"textChunkLimit": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"dmPolicy"
],
"additionalProperties": false
}
},
"defaultAccount": {
"type": "string"
}
},
"required": [
"dmPolicy"
],
"additionalProperties": false
},
"label": "SMS",
"description": "Twilio-backed SMS with inbound webhooks and outbound replies.",
"uiHints": {
"": {
"label": "SMS",
"help": "Twilio SMS channel configuration for inbound webhooks and outbound text replies."
},
"accountSid": {
"label": "Twilio Account SID",
"help": "Twilio Account SID used for SMS outbound API calls."
},
"authToken": {
"label": "Twilio Auth Token",
"help": "Twilio Auth Token used to sign webhook validation and SMS outbound API calls."
},
"fromNumber": {
"label": "SMS From Number",
"help": "Twilio SMS-capable phone number in E.164 format, for example +15551234567."
},
"messagingServiceSid": {
"label": "Twilio Messaging Service SID",
"help": "Twilio Messaging Service SID to use instead of a dedicated fromNumber."
},
"defaultTo": {
"label": "SMS Default To Number",
"help": "Optional default outbound phone number used when a send flow omits an explicit SMS target."
},
"publicWebhookUrl": {
"label": "SMS Public Webhook URL",
"help": "Public URL configured in Twilio for incoming messages. Must match Twilio's signed URL exactly."
},
"webhookPath": {
"label": "SMS Webhook Path",
"help": "Gateway HTTP path that receives Twilio incoming-message webhooks. Use a distinct path per account."
},
"dmPolicy": {
"label": "SMS DM Policy",
"help": "Direct SMS access control (\"pairing\" recommended). \"open\" requires channels.sms.allowFrom=[\"*\"]."
},
"allowFrom": {
"label": "SMS Allow From",
"help": "Allowed sender phone numbers in E.164 format, or * when dmPolicy is open."
},
"textChunkLimit": {
"label": "SMS Text Chunk Limit",
"help": "Maximum characters per outbound SMS chunk before OpenClaw splits long replies."
}
}
}
}
}