openclaw voicecall¶
voicecall 是一个由插件提供的命令。只有在 voice-call 插件已安装并启用时它才会出现。如果 openclaw voicecall 无法识别,请在 Gateway 主机上安装并启用该插件:
这些命令会自动应用于正在运行的 Gateway;如果它处于离线状态,请先启动它。有关提供商凭据和 webhook 配置,请参阅 语音通话插件;有关运行时验证,请参阅 应用更改并检查。
当 Gateway 运行时,操作命令(call、start、continue、speak、dtmf、end、status)会路由到该 Gateway 的 voice-call 运行时。如果没有可用的 Gateway,这些命令会回退到独立的 CLI 运行时。status 使用持久化的通话存储,而不是启动该运行时。
回退仅限传输层不可用的情况。如果 Gateway 返回请求错误或认证错误,或者在超时之前未应答,命令将以非零状态退出,并指向 openclaw gateway status;它不会启动第二个 webhook 服务器。如果独立回退无法绑定配置的 serve.port,错误信息会指出可能正在运行的 Gateway,而不是打印原始的 EADDRINUSE 失败。
子命令¶
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>]
| 子命令 | 描述 |
|---|---|
setup |
显示提供商和 webhook 就绪检查。 |
smoke |
运行就绪检查;仅在带 --yes 时拨打实时测试电话。 |
call |
发起外呼语音通话。 |
start |
call 的别名,--to 为必填,--message 可选。 |
continue |
播报消息并等待下一条响应。 |
speak |
播报消息但不等待响应。 |
dtmf |
向活动通话发送 DTMF 按键。 |
end |
挂断活动通话。 |
status |
查看活动通话(或通过 --call-id 查看单个通话)。 |
tail |
跟踪持久化的通话记录或显式的自定义 JSONL 日志。 |
latency |
从通话历史或自定义 JSONL 日志汇总轮次延迟。 |
expose |
为 webhook 端点切换 Tailscale serve/funnel。 |
设置与冒烟测试¶
setup¶
默认打印人类可读的就绪检查。如需脚本处理,请传递 --json。
smoke¶
运行相同的就绪检查。仅当同时提供 --to 和 --yes 时才会拨打真实电话。
| 标志 | 默认值 | 描述 |
|---|---|---|
-t, --to <phone> |
(无) | 用于实时冒烟测试的电话号码。 |
--message <text> |
OpenClaw voice call smoke test. |
冒烟测试通话期间要播报的消息。 |
--mode <mode> |
notify |
通话模式:notify 或 conversation。 |
--yes |
false |
实际拨打实时外呼电话。 |
--json |
false |
输出机器可读的 JSON。 |
openclaw voicecall smoke
openclaw voicecall smoke --to "+15555550123" # dry run
openclaw voicecall smoke --to "+15555550123" --yes # live notify call
Note
对于外部提供商(plivo、telnyx、twilio),setup 和 smoke 需要来自 publicUrl、隧道或 Tailscale 暴露的公网 webhook URL。回环或私有 serve 回退会被拒绝,因为运营商无法访问它们。
通话生命周期¶
call¶
发起外呼语音通话。
| 标志 | 必填 | 默认值 | 描述 |
|---|---|---|---|
-m, --message <text> |
是 | (无) | 通话接通时要播报的消息。 |
-t, --to <phone> |
否 | 配置 toNumber |
要呼叫的 E.164 电话号码。 |
--mode <mode> |
否 | conversation |
通话模式:notify(播报后挂断)或 conversation(保持通话)。 |
openclaw voicecall call --to "+15555550123" --message "Hello"
openclaw voicecall call -m "Heads up" --mode notify
start¶
call 的别名,但默认参数形式不同。
| 标志 | 必填 | 默认值 | 描述 |
|---|---|---|---|
--to <phone> |
是 | (无) | 要呼叫的电话号码。 |
--message <text> |
否 | (无) | 通话接通时要播报的消息。 |
| 标志 | 必填 | 默认值 | 描述 |
|---|---|---|---|
--mode <mode> |
否 | conversation |
通话模式:notify 或 conversation。 |
continue¶
发送一条消息并等待响应。
| 标志 | 必填 | 描述 |
|---|---|---|
--call-id <id> |
是 | 通话 ID。 |
--message <text> |
是 | 要播报的消息。 |
speak¶
发送一条消息,但不等待响应。
| 标志 | 必填 | 描述 |
|---|---|---|
--call-id <id> |
是 | 通话 ID。 |
--message <text> |
是 | 要播报的消息。 |
dtmf¶
向活动通话发送 DTMF 数字。
| 标志 | 必填 | 描述 |
|---|---|---|
--call-id <id> |
是 | 通话 ID。 |
--digits <digits> |
是 | DTMF 数字(例如等待时使用 ww123456#)。 |
end¶
挂断活动通话。
| 标志 | 必填 | 描述 |
|---|---|---|
--call-id <id> |
是 | 通话 ID。 |
status¶
查看活动通话。
| 标志 | 默认值 | 描述 |
|---|---|---|
--call-id <id> |
(无) | 将输出限制为单个通话。 |
--json |
false |
打印机器可读的 JSON。 |
日志与指标¶
tail¶
从 SQLite 中跟踪已持久化的语音通话记录:初始打印最近 --since 条记录,之后仅打印新的快照(--since 0 仅从新快照开始)。对于已存在的自定义 --file,如果其 basename 不是 calls.jsonl,启动时打印最近 --since 行非空完整行,然后流式输出新的完整行。不完整行会等待换行;文件被替换或检测到截断时,会开始新的流。缓慢的输出管道会暂停读取,而不是将日志的其余部分累积到内存中。
| 标志 | 默认值 | 描述 |
|---|---|---|
--file <path> |
从插件存储解析 | calls.jsonl 的路径。 |
--since <n> |
25 |
开始跟踪前打印的行数。 |
--poll <ms> |
250(最小值 50) |
轮询间隔(毫秒)。 |
latency¶
从 SQLite 或使用 --file 选择的现有自定义日志中汇总回合延迟和监听等待指标。输出为 JSON,包含 recordsScanned、turnLatency 和 listenWait 摘要。
自定义日志会增量扫描,请求的历史记录没有字节上限。latency 选择最近 N 条非空记录,跳过格式错误的 JSON,并接受末尾没有换行符的最终 JSON 记录。它一次解析一条选中的记录;内存仍随最大的选中 JSON 记录和请求的指标样本数量而变化。
| 标志 | 默认值 | 描述 |
|---|---|---|
--file <path> |
从插件存储解析 | calls.jsonl 的路径。 |
--last <n> |
200(最小值 1) |
要分析的最近记录数。 |
公开 webhooks¶
expose¶
启用、禁用或更改语音 webhook 的 Tailscale serve/funnel 配置。当启用实时或流式音频时,该命令还会公开或清除该模式的 WebSocket 流路径。外部 HTTPS 端口来自 tailscale.port(默认 443);Funnel 支持 443、8443 或 10000。
| 标志 | 默认值 | 描述 |
|---|---|---|
--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 路径。 |
openclaw voicecall expose --mode serve
openclaw voicecall expose --mode funnel
openclaw voicecall expose --mode off
Warning
仅将 webhook 端点暴露给受信任的网络。尽可能优先使用 Tailscale Serve 而非 Funnel。
相关¶
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw