callme-openclaw-plugin 1.0.4 ā 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/openclaw.plugin.json +46 -0
- package/package.json +22 -14
- package/setup.js +33 -31
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "callme",
|
|
3
|
+
"name": "callme.ai Voice",
|
|
4
|
+
"version": "1.0.4",
|
|
5
|
+
"description": "Hands-free voice calls with your AI assistant via callme.ai",
|
|
6
|
+
"author": "callme.ai",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"configSchema": {
|
|
9
|
+
"type": "object",
|
|
10
|
+
"properties": {
|
|
11
|
+
"apiKey": {
|
|
12
|
+
"type": "string",
|
|
13
|
+
"description": "Your callme.ai API key from the dashboard"
|
|
14
|
+
},
|
|
15
|
+
"defaultVoice": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"enum": ["alloy", "echo", "fable", "onyx", "nova", "shimmer"],
|
|
18
|
+
"default": "nova",
|
|
19
|
+
"description": "Default voice for TTS"
|
|
20
|
+
},
|
|
21
|
+
"language": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"enum": ["en", "de", "es", "fr"],
|
|
24
|
+
"default": "en",
|
|
25
|
+
"description": "Language code"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"required": ["apiKey"],
|
|
29
|
+
"additionalProperties": false
|
|
30
|
+
},
|
|
31
|
+
"uiHints": {
|
|
32
|
+
"apiKey": {
|
|
33
|
+
"label": "API Key",
|
|
34
|
+
"placeholder": "callme_xxx",
|
|
35
|
+
"sensitive": true
|
|
36
|
+
},
|
|
37
|
+
"defaultVoice": {
|
|
38
|
+
"label": "Default Voice",
|
|
39
|
+
"placeholder": "nova"
|
|
40
|
+
},
|
|
41
|
+
"language": {
|
|
42
|
+
"label": "Language",
|
|
43
|
+
"placeholder": "en"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
package/package.json
CHANGED
|
@@ -1,26 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "callme-openclaw-plugin",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"description": "OpenClaw plugin for callme.ai - hands-free voice calls with your AI assistant",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"callme-setup": "./setup.js"
|
|
8
8
|
},
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"callme"
|
|
9
|
+
"files": [
|
|
10
|
+
"index.js",
|
|
11
|
+
"setup.js",
|
|
12
|
+
"install.sh",
|
|
13
|
+
"openclaw.plugin.json",
|
|
14
|
+
"README.md"
|
|
16
15
|
],
|
|
17
|
-
"author": "callme.ai",
|
|
18
|
-
"license": "MIT",
|
|
19
|
-
"repository": {
|
|
20
|
-
"type": "git",
|
|
21
|
-
"url": "https://github.com/Benedict-VC/openclaw-voice.git"
|
|
22
|
-
},
|
|
23
16
|
"openclaw": {
|
|
17
|
+
"extensions": ["./index.js"],
|
|
24
18
|
"displayName": "callme.ai Voice",
|
|
25
19
|
"description": "Make hands-free voice calls to your AI assistant",
|
|
26
20
|
"category": "communication",
|
|
@@ -55,6 +49,20 @@
|
|
|
55
49
|
}
|
|
56
50
|
}
|
|
57
51
|
},
|
|
52
|
+
"keywords": [
|
|
53
|
+
"openclaw",
|
|
54
|
+
"plugin",
|
|
55
|
+
"voice",
|
|
56
|
+
"ai",
|
|
57
|
+
"calls",
|
|
58
|
+
"callme"
|
|
59
|
+
],
|
|
60
|
+
"author": "callme.ai",
|
|
61
|
+
"license": "MIT",
|
|
62
|
+
"repository": {
|
|
63
|
+
"type": "git",
|
|
64
|
+
"url": "https://github.com/Benedict-VC/openclaw-voice.git"
|
|
65
|
+
},
|
|
58
66
|
"dependencies": {
|
|
59
67
|
"ws": "^8.16.0",
|
|
60
68
|
"node-fetch": "^2.7.0"
|
package/setup.js
CHANGED
|
@@ -47,33 +47,18 @@ async function main() {
|
|
|
47
47
|
process.exit(1);
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
// Step 3:
|
|
51
|
-
console.log('\nš¦
|
|
52
|
-
fs.mkdirSync(PLUGIN_DIR, { recursive: true });
|
|
50
|
+
// Step 3: Install plugin via OpenClaw CLI
|
|
51
|
+
console.log('\nš¦ Installing plugin...');
|
|
53
52
|
|
|
54
|
-
// Copy plugin from the npx cache to the OpenClaw plugins directory
|
|
55
53
|
try {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
// Copy main files
|
|
59
|
-
const filesToCopy = ['index.js', 'package.json'];
|
|
60
|
-
for (const file of filesToCopy) {
|
|
61
|
-
const src = path.join(thisDir, file);
|
|
62
|
-
const dest = path.join(PLUGIN_DIR, file);
|
|
63
|
-
if (fs.existsSync(src)) {
|
|
64
|
-
fs.copyFileSync(src, dest);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// Install dependencies
|
|
69
|
-
process.chdir(PLUGIN_DIR);
|
|
70
|
-
await execAsync('npm install --production --no-package-lock');
|
|
54
|
+
// Use OpenClaw's plugin installer (official method)
|
|
55
|
+
await execAsync('openclaw plugins install callme-openclaw-plugin');
|
|
71
56
|
console.log('ā
Plugin installed');
|
|
72
57
|
} catch (error) {
|
|
73
58
|
console.error('ā Failed to install plugin:', error.message);
|
|
74
|
-
console.log('\nš Manual
|
|
75
|
-
console.log(' 1. Run:
|
|
76
|
-
console.log(' 2.
|
|
59
|
+
console.log('\nš Manual fallback:');
|
|
60
|
+
console.log(' 1. Run: openclaw plugins install callme-openclaw-plugin');
|
|
61
|
+
console.log(' 2. Then re-run this setup');
|
|
77
62
|
process.exit(1);
|
|
78
63
|
}
|
|
79
64
|
|
|
@@ -111,15 +96,32 @@ plugins:
|
|
|
111
96
|
|
|
112
97
|
// Done!
|
|
113
98
|
console.log('\n⨠\x1b[1;32mSetup complete!\x1b[0m\n');
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
99
|
+
|
|
100
|
+
// Step 5: Offer to restart gateway
|
|
101
|
+
const shouldRestart = await question('š Restart OpenClaw Gateway now? (y/n): ');
|
|
102
|
+
|
|
103
|
+
if (shouldRestart.toLowerCase() === 'y' || shouldRestart.toLowerCase() === 'yes') {
|
|
104
|
+
console.log('\nš Restarting Gateway...');
|
|
105
|
+
try {
|
|
106
|
+
await execAsync('openclaw gateway restart');
|
|
107
|
+
console.log('ā
Gateway restarted!\n');
|
|
108
|
+
console.log('š \x1b[1;32mYou\'re all set!\x1b[0m\n');
|
|
109
|
+
console.log('š Start your first call: \x1b[36m/call\x1b[0m\n');
|
|
110
|
+
console.log('š Other commands:');
|
|
111
|
+
console.log(' /voice-usage Check your usage stats');
|
|
112
|
+
console.log(' /voice-keys Manage your API keys\n');
|
|
113
|
+
} catch (error) {
|
|
114
|
+
console.log('ā ļø Could not restart automatically.');
|
|
115
|
+
console.log('\nš Please restart manually:');
|
|
116
|
+
console.log(' \x1b[36mopenclaw gateway restart\x1b[0m\n');
|
|
117
|
+
console.log('Then type: \x1b[36m/call\x1b[0m\n');
|
|
118
|
+
}
|
|
119
|
+
} else {
|
|
120
|
+
console.log('\nš \x1b[1mRemember to restart the Gateway:\x1b[0m');
|
|
121
|
+
console.log(' \x1b[36mopenclaw gateway restart\x1b[0m\n');
|
|
122
|
+
console.log('š Then type: \x1b[36m/call\x1b[0m to start your first voice call!\n');
|
|
123
|
+
}
|
|
124
|
+
|
|
123
125
|
console.log('š Need help? https://docs.callme.ai/openclaw\n');
|
|
124
126
|
|
|
125
127
|
rl.close();
|