Appearance
openclaw voicecall 是语音通话插件提供的 CLI 工具,可完成从设置检查到实际通话全流程操作。子命令 setup 和 smoke 用于就绪检查;call/start 发起外呼,continue/speak 控制对话,dtmf 发送按键,end 挂断,status 查看通话状态。需要先安装插件并启用公用 webhook(仅外部提供商需要)。tail 和 latency 子命令可实时跟踪和汇总通话延迟指标。expose 子命令用于控制 Tailscale serve/funnel 暴露 webhook。
openclaw voicecall 命令参考:语音通话插件 CLI 配置与调试
voicecall 是由插件提供的命令,仅在安装并启用语音通话插件后才会出现。
Gateway 运行时,操作类命令(call、start、continue、speak、dtmf、end、status)会路由到该 Gateway 的语音通话运行时。如果无法连接到 Gateway,会回退到独立的 CLI 运行时。
子命令一览
bash
openclaw voicecall setup [--json]
openclaw voicecall smoke [-t <phone>] [--message <text>] [--mode <m>] [--yes] [--json]
openclaw voicecall call -m <text> [-t <phone>] [--mode <m>]
openclaw voicecall start --to <phone> [--message <text>] [--mode <m>]
openclaw voicecall continue --call-id <id> --message <text>
openclaw voicecall speak --call-id <id> --message <text>
openclaw voicecall dtmf --call-id <id> --digits <digits>
openclaw voicecall end --call-id <id>
openclaw voicecall status [--call-id <id>] [--json]
openclaw voicecall tail [--file <path>] [--since <n>] [--poll <ms>]
openclaw voicecall latency [--file <path>] [--last <n>]
openclaw voicecall expose [--mode <m>] [--path <p>] [--port <port>] [--serve-path <p>]| Subcommand | 说明 |
|---|---|
setup | 显示提供商和 webhook 就绪检查。 |
smoke | 运行就绪检查;仅在提供 --yes 时才会拨打真实测试电话。 |
call | 发起外呼语音通话。 |
start | call 的别名,--to 为必选,--message 可选。 |
continue | 说一句话并等待响应。 |
speak | 说一句话但不等待响应。 |
dtmf | 向生效通话发送 DTMF 按键。 |
end | 挂断生效通话。 |
status | 查看生效通话(或通过 --call-id 查看某一通话)。 |
tail | 实时跟踪 calls.jsonl 日志(在提供商测试时有用)。 |
latency | 从 calls.jsonl 中汇总轮次延迟指标。 |
expose | 切换 Tailscale serve/funnel 以暴露 webhook 端点。 |
就绪检查与测试
setup
默认输出人类可读的就绪检查结果。加上 --json 可输出机器可读的 JSON。
bash
openclaw voicecall setup
openclaw voicecall setup --jsonsmoke
运行相同的就绪检查,但不会拨打真实电话,除非同时提供了 --to 和 --yes 两个标志。
| Flag | 默认值 | 说明 |
|---|---|---|
-t, --to <phone> | (无) | 真实拨测的目标电话号码。 |
--message <text> | OpenClaw voice call smoke test. | 拨测时要播放的语音消息。 |
--mode <mode> | notify | 通话模式:notify(通知后挂断)或 conversation(保持通话)。 |
--yes | false | 是否真正发起外呼。 |
--json | false | 输出机器可读的 JSON。 |
bash
openclaw voicecall smoke
openclaw voicecall smoke --to "+15555550123" # 仅检查,不拨号
openclaw voicecall smoke --to "+15555550123" --yes # 真实拨测(notify 模式)注意:使用外部提供商(
twilio、telnyx、plivo)时,setup和smoke需要一个通过publicUrl、隧道或 Tailscale 暴露的公开 webhook URL。回环地址或私有 serve 会被拒绝,因为运营商无法访问。
通话生命周期
call
发起一次外呼语音通话。
| Flag | 是否必选 | 默认值 | 说明 |
|---|---|---|---|
-m, --message <text> | 是 | (无) | 接通后播放的语音消息。 |
-t, --to <phone> | 否 | 配置项 toNumber | E.164 格式的电话号码。 |
--mode <mode> | 否 | conversation | 通话模式:notify(播完即挂)或 conversation(保持通话)。 |
bash
openclaw voicecall call --to "+15555550123" --message "Hello"
openclaw voicecall call -m "Heads up" --mode notifystart
call 的别名,参数形状稍有不同。
| Flag | 是否必选 | 默认值 | 说明 |
|---|---|---|---|
--to <phone> | 是 | (无) | 电话号码。 |
--message <text> | 否 | (无) | 接通后播放的语音消息。 |
--mode <mode> | 否 | conversation | 通话模式:notify 或 conversation。 |
continue
说一句话并等待响应(适合连续对话)。
| Flag | 是否必选 | 说明 |
|---|---|---|
--call-id <id> | 是 | 通话 ID。 |
--message <text> | 是 | 要播放的语音消息。 |
speak
说一句话但不等待响应。
| Flag | 是否必选 | 说明 |
|---|---|---|
--call-id <id> | 是 | 通话 ID。 |
--message <text> | 是 | 要播放的语音消息。 |
dtmf
向生效通话发送 DTMF 按键。
| Flag | 是否必选 | 说明 |
|---|---|---|
--call-id <id> | 是 | 通话 ID。 |
--digits <digits> | 是 | DTMF 按键序列(例如 ww123456# 表示等待)。 |
end
挂断生效通话。
| Flag | 是否必选 | 说明 |
|---|---|---|
--call-id <id> | 是 | 通话 ID。 |
status
查看生效通话列表或某一通话的详细信息。
| Flag | 默认值 | 说明 |
|---|---|---|
--call-id <id> | (无) | 只查看指定通话。 |
--json | false | 输出机器可读的 JSON。 |
bash
openclaw voicecall status
openclaw voicecall status --json
openclaw voicecall status --call-id <id>日志与指标
tail
实时跟踪 calls.jsonl 日志。启动时先打印最近 --since 行,再持续输出新写入的行。
| Flag | 默认值 | 说明 |
|---|---|---|
--file <path> | 来自插件存储的路径 | calls.jsonl 文件路径。 |
--since <n> | 25 | 跟踪前先打印的行数。 |
--poll <ms> | 250(最小 50) | 轮询间隔(毫秒)。 |
latency
从 calls.jsonl 中汇总轮次延迟和监听等待指标。输出为 JSON,包含 recordsScanned、turnLatency 和 listenWait 统计。
| Flag | 默认值 | 说明 |
|---|---|---|
--file <path> | 来自插件存储的路径 | calls.jsonl 文件路径。 |
--last <n> | 200(最小 1) | 分析最近的记录数。 |
暴露 Webhook 端点
expose
启用、禁用或更改语音 webhook 的 Tailscale serve/funnel 配置。
| Flag | 默认值 | 说明 |
|---|---|---|
--mode <mode> | funnel | 可选值:off(关闭)、serve(仅在 tailnet 内)、funnel(公开)。 |
--path <path> | 配置项 tailscale.path 或 --serve-path | Tailscale 暴露路径。 |
--port <port> | 配置项 serve.port 或 3334 | 本地 webhook 端口。 |
--serve-path <path> | 配置项 serve.path 或 /voice/webhook | 本地 webhook 路径。 |
bash
openclaw voicecall expose --mode serve
openclaw voicecall expose --mode funnel
openclaw voicecall expose --mode off安全警告:只将 webhook 端点暴露给你信任的网络。在可能的情况下,优先使用 Tailscale Serve 而非 Funnel。
相关文档
常见问题
为什么 openclaw voicecall smoke 没有实际拨打电话?
smoke 命令默认只运行就绪检查,不会拨号。必须同时提供 --to <phone> 和 --yes 两个标志才会发起真实外呼。例如:openclaw voicecall smoke --to "+15555550123" --yes。
怎么把呼叫目标号码传给 openclaw voicecall call?
可以在命令中直接传入 -t 或 --to 参数指定 E.164 格式号码。如果省略,则使用配置项 toNumber 中的默认值。例如:openclaw voicecall call --to "+8613800138000" --message "测试"。
openclaw voicecall expose 报错 "tailscale" 相关怎么办?
确认本机已安装并登录 Tailscale。expose 命令需要 Tailscale 正常运行,并且您有权限启用了 serve/funnel。可以先手动运行 tailscale serve 验证基础功能。如果仍需外部公开 webhook,可以使用 funnel 模式。