mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 05:20:43 +00:00
441 lines
12 KiB
JSON
441 lines
12 KiB
JSON
{
|
|
"id": "google-meet",
|
|
"name": "Google Meet",
|
|
"description": "Join Google Meet calls through Chrome or Twilio transports.",
|
|
"enabledByDefault": false,
|
|
"commandAliases": [{ "name": "googlemeet" }],
|
|
"activation": {
|
|
"onStartup": true,
|
|
"onCommands": ["googlemeet"],
|
|
"onCapabilities": ["tool"]
|
|
},
|
|
"uiHints": {
|
|
"defaults.meeting": {
|
|
"label": "Default Meeting",
|
|
"help": "Meet URL, meeting code, or spaces/{id} used when commands omit a meeting."
|
|
},
|
|
"preview.enrollmentAcknowledged": {
|
|
"label": "Preview Acknowledged",
|
|
"help": "Confirms you understand the Google Meet Media API is still Developer Preview.",
|
|
"advanced": true
|
|
},
|
|
"defaultTransport": {
|
|
"label": "Default Transport",
|
|
"help": "Chrome uses a signed-in browser profile. Chrome-node runs Chrome on a paired node. Twilio uses Meet dial-in numbers."
|
|
},
|
|
"defaultMode": {
|
|
"label": "Default Mode",
|
|
"help": "Realtime voice is the default."
|
|
},
|
|
"chrome.audioBackend": {
|
|
"label": "Chrome Audio Backend",
|
|
"help": "BlackHole 2ch is required for local duplex audio routing."
|
|
},
|
|
"chrome.launch": {
|
|
"label": "Launch Chrome"
|
|
},
|
|
"chrome.browserProfile": {
|
|
"label": "Chrome Profile",
|
|
"advanced": true
|
|
},
|
|
"chrome.guestName": {
|
|
"label": "Guest Name",
|
|
"help": "Used when Chrome lands on the signed-out Meet guest-name screen."
|
|
},
|
|
"chrome.reuseExistingTab": {
|
|
"label": "Reuse Existing Meet Tab",
|
|
"help": "Avoids opening duplicate tabs for the same Meet URL."
|
|
},
|
|
"chrome.autoJoin": {
|
|
"label": "Auto Join Guest Screen",
|
|
"help": "Best-effort guest-name fill and Join Now click through OpenClaw browser automation."
|
|
},
|
|
"chrome.waitForInCallMs": {
|
|
"label": "Wait For In-Call (ms)",
|
|
"help": "Waits for Chrome to report that the Meet tab is in-call before the realtime intro speaks.",
|
|
"advanced": true
|
|
},
|
|
"chrome.audioInputCommand": {
|
|
"label": "Audio Input Command",
|
|
"help": "Command that writes meeting audio to stdout in chrome.audioFormat.",
|
|
"advanced": true
|
|
},
|
|
"chrome.audioOutputCommand": {
|
|
"label": "Audio Output Command",
|
|
"help": "Command that reads assistant audio from stdin in chrome.audioFormat.",
|
|
"advanced": true
|
|
},
|
|
"chrome.audioFormat": {
|
|
"label": "Audio Format",
|
|
"help": "Command-pair audio format. PCM16 24 kHz is the default Chrome/Meet path; G.711 mu-law 8 kHz remains available for legacy command pairs.",
|
|
"advanced": true
|
|
},
|
|
"chrome.audioBridgeCommand": {
|
|
"label": "Audio Bridge Command",
|
|
"advanced": true
|
|
},
|
|
"chrome.audioBridgeHealthCommand": {
|
|
"label": "Audio Bridge Health Command",
|
|
"advanced": true
|
|
},
|
|
"chromeNode.node": {
|
|
"label": "Chrome Node",
|
|
"help": "Node id/name/IP that owns Chrome, BlackHole, and SoX for chrome-node transport.",
|
|
"advanced": true
|
|
},
|
|
"twilio.defaultDialInNumber": {
|
|
"label": "Default Dial-In Number",
|
|
"placeholder": "+15551234567"
|
|
},
|
|
"twilio.defaultPin": {
|
|
"label": "Default PIN",
|
|
"advanced": true
|
|
},
|
|
"twilio.defaultDtmfSequence": {
|
|
"label": "Default DTMF Sequence",
|
|
"advanced": true
|
|
},
|
|
"voiceCall.enabled": {
|
|
"label": "Delegate To Voice Call"
|
|
},
|
|
"voiceCall.gatewayUrl": {
|
|
"label": "Voice Call Gateway URL",
|
|
"advanced": true
|
|
},
|
|
"voiceCall.token": {
|
|
"label": "Voice Call Gateway Token",
|
|
"sensitive": true,
|
|
"advanced": true
|
|
},
|
|
"voiceCall.requestTimeoutMs": {
|
|
"label": "Voice Call Request Timeout (ms)",
|
|
"advanced": true
|
|
},
|
|
"voiceCall.dtmfDelayMs": {
|
|
"label": "DTMF Delay (ms)",
|
|
"advanced": true
|
|
},
|
|
"voiceCall.introMessage": {
|
|
"label": "Voice Call Intro Message",
|
|
"advanced": true
|
|
},
|
|
"realtime.provider": {
|
|
"label": "Realtime Provider",
|
|
"help": "Defaults to OpenAI; uses OPENAI_API_KEY when no provider config is set."
|
|
},
|
|
"realtime.model": {
|
|
"label": "Realtime Model",
|
|
"advanced": true
|
|
},
|
|
"realtime.instructions": {
|
|
"label": "Realtime Instructions",
|
|
"advanced": true
|
|
},
|
|
"realtime.introMessage": {
|
|
"label": "Realtime Intro Message",
|
|
"help": "Spoken once when the realtime bridge is ready. Set to an empty string to join silently."
|
|
},
|
|
"realtime.agentId": {
|
|
"label": "Realtime Consult Agent",
|
|
"help": "OpenClaw agent id used by openclaw_agent_consult. Defaults to \"main\".",
|
|
"advanced": true
|
|
},
|
|
"realtime.toolPolicy": {
|
|
"label": "Realtime Tool Policy",
|
|
"help": "Safe read-only tools are available by default; owner requests can unlock broader tools.",
|
|
"advanced": true
|
|
},
|
|
"oauth.clientId": {
|
|
"label": "OAuth Client ID"
|
|
},
|
|
"oauth.clientSecret": {
|
|
"label": "OAuth Client Secret",
|
|
"sensitive": true
|
|
},
|
|
"oauth.refreshToken": {
|
|
"label": "OAuth Refresh Token",
|
|
"sensitive": true
|
|
},
|
|
"oauth.accessToken": {
|
|
"label": "Cached Access Token",
|
|
"sensitive": true,
|
|
"advanced": true
|
|
},
|
|
"oauth.expiresAt": {
|
|
"label": "Cached Access Token Expiry",
|
|
"help": "Unix epoch milliseconds used only for the cached access-token fast path.",
|
|
"advanced": true
|
|
}
|
|
},
|
|
"configSchema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"defaults": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"meeting": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"preview": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"enrollmentAcknowledged": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"defaultTransport": {
|
|
"type": "string",
|
|
"enum": ["chrome", "chrome-node", "twilio"],
|
|
"default": "chrome"
|
|
},
|
|
"defaultMode": {
|
|
"type": "string",
|
|
"enum": ["realtime", "transcribe"],
|
|
"default": "realtime"
|
|
},
|
|
"chrome": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"audioBackend": {
|
|
"type": "string",
|
|
"enum": ["blackhole-2ch"],
|
|
"default": "blackhole-2ch"
|
|
},
|
|
"launch": {
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"browserProfile": {
|
|
"type": "string"
|
|
},
|
|
"guestName": {
|
|
"type": "string",
|
|
"default": "OpenClaw Agent"
|
|
},
|
|
"reuseExistingTab": {
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"autoJoin": {
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"joinTimeoutMs": {
|
|
"type": "number",
|
|
"default": 30000
|
|
},
|
|
"waitForInCallMs": {
|
|
"type": "number",
|
|
"default": 20000
|
|
},
|
|
"audioFormat": {
|
|
"type": "string",
|
|
"enum": ["pcm16-24khz", "g711-ulaw-8khz"],
|
|
"default": "pcm16-24khz"
|
|
},
|
|
"audioInputCommand": {
|
|
"type": "array",
|
|
"default": [
|
|
"sox",
|
|
"-q",
|
|
"-t",
|
|
"coreaudio",
|
|
"BlackHole 2ch",
|
|
"-t",
|
|
"raw",
|
|
"-r",
|
|
"24000",
|
|
"-c",
|
|
"1",
|
|
"-e",
|
|
"signed-integer",
|
|
"-b",
|
|
"16",
|
|
"-L",
|
|
"-"
|
|
],
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"audioOutputCommand": {
|
|
"type": "array",
|
|
"default": [
|
|
"sox",
|
|
"-q",
|
|
"-t",
|
|
"raw",
|
|
"-r",
|
|
"24000",
|
|
"-c",
|
|
"1",
|
|
"-e",
|
|
"signed-integer",
|
|
"-b",
|
|
"16",
|
|
"-L",
|
|
"-",
|
|
"-t",
|
|
"coreaudio",
|
|
"BlackHole 2ch"
|
|
],
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"audioBridgeCommand": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"audioBridgeHealthCommand": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"chromeNode": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"node": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"twilio": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"defaultDialInNumber": {
|
|
"type": "string"
|
|
},
|
|
"defaultPin": {
|
|
"type": "string"
|
|
},
|
|
"defaultDtmfSequence": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"voiceCall": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"gatewayUrl": {
|
|
"type": "string"
|
|
},
|
|
"token": {
|
|
"type": "string"
|
|
},
|
|
"requestTimeoutMs": {
|
|
"type": "number",
|
|
"default": 30000
|
|
},
|
|
"dtmfDelayMs": {
|
|
"type": "number",
|
|
"default": 2500
|
|
},
|
|
"introMessage": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"realtime": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"provider": {
|
|
"type": "string",
|
|
"default": "openai"
|
|
},
|
|
"model": {
|
|
"type": "string"
|
|
},
|
|
"instructions": {
|
|
"type": "string",
|
|
"default": "You are joining a private Google Meet as an OpenClaw agent. Keep spoken replies brief and natural. When a question needs deeper reasoning, current information, or tools, call openclaw_agent_consult before answering."
|
|
},
|
|
"introMessage": {
|
|
"type": "string",
|
|
"default": "Say exactly: I'm here and listening."
|
|
},
|
|
"agentId": {
|
|
"type": "string",
|
|
"description": "OpenClaw agent id used by openclaw_agent_consult. Defaults to \"main\"."
|
|
},
|
|
"toolPolicy": {
|
|
"type": "string",
|
|
"enum": ["safe-read-only", "owner", "none"],
|
|
"default": "safe-read-only"
|
|
},
|
|
"providers": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"oauth": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"clientId": {
|
|
"type": "string"
|
|
},
|
|
"clientSecret": {
|
|
"type": "string"
|
|
},
|
|
"refreshToken": {
|
|
"type": "string"
|
|
},
|
|
"accessToken": {
|
|
"type": "string"
|
|
},
|
|
"expiresAt": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"auth": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"provider": {
|
|
"type": "string",
|
|
"enum": ["google-oauth"]
|
|
},
|
|
"clientId": {
|
|
"type": "string"
|
|
},
|
|
"clientSecret": {
|
|
"type": "string"
|
|
},
|
|
"tokenPath": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|