callme-openclaw-plugin 1.0.3 ā 1.0.5
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 +11 -1
- package/setup.js +26 -54
|
@@ -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,6 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "callme-openclaw-plugin",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
|
+
"files": [
|
|
5
|
+
"index.js",
|
|
6
|
+
"setup.js",
|
|
7
|
+
"install.sh",
|
|
8
|
+
"openclaw.plugin.json",
|
|
9
|
+
"README.md"
|
|
10
|
+
],
|
|
11
|
+
"openclaw": {
|
|
12
|
+
"extensions": ["./index.js"]
|
|
13
|
+
},
|
|
4
14
|
"description": "OpenClaw plugin for callme.ai - hands-free voice calls with your AI assistant",
|
|
5
15
|
"main": "index.js",
|
|
6
16
|
"bin": {
|
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
|
|
|
@@ -112,45 +97,32 @@ plugins:
|
|
|
112
97
|
// Done!
|
|
113
98
|
console.log('\n⨠\x1b[1;32mSetup complete!\x1b[0m\n');
|
|
114
99
|
|
|
115
|
-
// Step 5: Offer to
|
|
116
|
-
const
|
|
100
|
+
// Step 5: Offer to restart gateway
|
|
101
|
+
const shouldRestart = await question('š Restart OpenClaw Gateway now? (y/n): ');
|
|
117
102
|
|
|
118
|
-
if (
|
|
119
|
-
console.log('\nš
|
|
103
|
+
if (shouldRestart.toLowerCase() === 'y' || shouldRestart.toLowerCase() === 'yes') {
|
|
104
|
+
console.log('\nš Restarting Gateway...');
|
|
120
105
|
try {
|
|
121
|
-
|
|
122
|
-
console.log('ā
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
console.log('\nš Starting voice call...');
|
|
129
|
-
console.log(' Type /call in your OpenClaw session to begin!\n');
|
|
130
|
-
console.log('š” Tip: You can also run:');
|
|
131
|
-
console.log(' - /voice-usage (Check your usage stats)');
|
|
132
|
-
console.log(' - /voice-keys (Manage API keys)\n');
|
|
133
|
-
} else {
|
|
134
|
-
console.log('\nš When ready, use these commands:');
|
|
135
|
-
console.log(' /call - Start voice call');
|
|
136
|
-
console.log(' /voice-usage - Check usage stats');
|
|
137
|
-
console.log(' /voice-keys - Manage API keys\n');
|
|
138
|
-
}
|
|
139
|
-
|
|
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');
|
|
140
113
|
} catch (error) {
|
|
141
|
-
console.log('ā ļø Could not
|
|
142
|
-
console.log('
|
|
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');
|
|
143
118
|
}
|
|
144
119
|
} else {
|
|
145
|
-
console.log('\nš
|
|
146
|
-
console.log(' \x1b[36mopenclaw
|
|
147
|
-
console.log('
|
|
148
|
-
console.log(' /call - Start voice call');
|
|
149
|
-
console.log(' /voice-usage - Check usage stats');
|
|
150
|
-
console.log(' /voice-keys - Manage API keys\n');
|
|
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');
|
|
151
123
|
}
|
|
152
124
|
|
|
153
|
-
console.log('Need help? https://docs.callme.ai/openclaw\n');
|
|
125
|
+
console.log('š Need help? https://docs.callme.ai/openclaw\n');
|
|
154
126
|
|
|
155
127
|
rl.close();
|
|
156
128
|
}
|