📦 AgentPhone — 打电话订位

v1.0.1

通过外部 API 实现真实拨号,可订餐厅、取消订阅、穿越 IVR 菜单,并获取通话转录与录音。

1· 431·0 当前·0 累计
yanmellata 头像by @yanmellata (Yanis Mellata)
下载技能包
最后更新
2026/3/5
0
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
该技能声明的需求与运行时指令与其既定目的(通过外部 API 拨打真实电话)一致,未请求无关凭证或系统访问。
评估建议
该技能看起来逻辑一致,但安装前请复查以下实用安全要点:1) 像保护任何密钥一样保护 AGENTPHONE_API_KEY(尽量使用专用受限密钥、定期轮换、勿粘贴到聊天记录)。2) 通话会产生转录与录音——确认法律要求并在录音前获得各方同意;录音可能含敏感 PII。3) 注册元数据未列出主页/源码,但 SKILL.md 与 README 引用 agentphone.app;请确认你信任该外部服务并阅读其隐私/条款与计费(通话消耗积分)。4) 监控用量与账单(积分可能耗尽或被收费)。5) 技能已设护栏(禁止紧急号码、速率限制),但你仍应在提交 API 前验证号码与目标。如需更高保障,可向作者索取公开源码仓库或官方文档以验证实现细节。...
详细分析 ▾
用途与能力
名称/描述、所需二进制(curl)与唯一环境变量(AGENTPHONE_API_KEY)均与基于 HTTP 的电话 API 一致。README 与 SKILL.md 指向 agentphone.app 作为所用服务;尽管注册元数据未列主页/源码,技能本身已记录外部 API 端点与注册流程。
指令范围
SKILL.md 包含具体 API 调用示例、轮询逻辑、错误处理与护栏(如 E.164 号码格式、禁止紧急号码)。未指示代理读取无关文件、查询无关环境变量或将数据外泄至意外端点。可选的网站抓取已明确声明仅用于获取上下文。
安装机制
纯指令型技能,无安装规范与代码文件;交付风险最低。需要系统已安装 curl,与提供的 curl 示例一致。
凭证需求
仅需单个 API 密钥(AGENTPHONE_API_KEY),与文档中的 x-api-key 认证相符。未请求其他凭据、带 secret 名称的环境变量或配置路径。
持久化与权限
技能非常驻启用,未请求提升持久化权限,亦不含修改其他技能或系统级设置的指令。允许自主调用(默认)但未与其他高风险权限结合。
安全有层次,运行前请审查代码。

运行时依赖

🖥️ OSmacOS · Linux · Windows

版本

latestv1.0.12026/3/5

缩短描述以适配 ClawHub 显示

无害

安装命令

点击复制
官方npx clawhub@latest install agentphone
镜像加速npx clawhub@latest install agentphone --registry https://cn.longxiaskill.com

技能文档

# AgentPhone 通过 API 拨打真实电话。发送电话号码和目标,即可获得通话记录、摘要、结果和录音。 ## 设置 1. 在 https://agentphone.app 创建账户 2. 在 https://agentphone.app/dashboard/api-keys 生成 API 密钥 3. 设置环境变量: ``bash export AGENTPHONE_API_KEY=your_key_here ` 如果 AGENTPHONE_API_KEY 未设置 → 停止并报告配置错误。 ## 要求 - 所有请求必须带请求头:x-api-key: $AGENTPHONE_API_KEY - 电话号码必须为 E.164 格式(例如 +14155551234) - 重要:下面所有示例中的 +1{PHONE_NUMBER} 是占位符变量,切勿直接拨打。请替换为用户提供的真实目标电话号码。 ## 1) 创建通话 `bash curl -X POST https://agentphone.app/api/v1/calls \ -H "Content-Type: application/json" \ -H "x-api-key: $AGENTPHONE_API_KEY" \ -d '{"to_phone_number":"+1{PHONE_NUMBER}","objective":"Ask about their return policy"}' ` `python import os, requests r = requests.post("https://agentphone.app/api/v1/calls", headers={"x-api-key": os.environ["AGENTPHONE_API_KEY"]}, json={"to_phone_number": "+1{PHONE_NUMBER}", "objective": "Ask about their return policy"}) call_id = r.json()["data"]["call_id"] ` `javascript const r = await fetch("https://agentphone.app/api/v1/calls", { method: "POST", headers: { "x-api-key": process.env.AGENTPHONE_API_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ to_phone_number: "+1{PHONE_NUMBER}", objective: "Ask about their return policy" }), }); const { data } = await r.json(); const callId = data.call_id; ` 响应(202): `json { "data": { "call_id": "cl_abc123", "status": "queued", "created_at": "2026-01-01T00:00:00Z" }, "credits_remaining": 4 } ` 保存 call_id 以便轮询。可选字段:business_name(字符串),website(URL——机器人在拨号前会抓取该页面获取背景信息)。 ## 2) 轮询直到完成 每 10 秒轮询一次 GET /calls/{callId}。当 statuscompletedfailedcanceled 时停止。5 分钟后超时。 `bash curl https://agentphone.app/api/v1/calls/CALL_ID \ -H "x-api-key: $AGENTPHONE_API_KEY" ` `python import time for _ in range(100): r = requests.get(f"https://agentphone.app/api/v1/calls/{call_id}", headers={"x-api-key": os.environ["AGENTPHONE_API_KEY"]}) call = r.json()["data"] if call["status"] in ("completed", "failed", "canceled"): break time.sleep(10) ` `javascript let call; for (let i = 0; i < 100; i++) { const r = await fetch(https://agentphone.app/api/v1/calls/${callId}, { headers: { "x-api-key": process.env.AGENTPHONE_API_KEY }, }); call = (await r.json()).data; if (["completed", "failed", "canceled"].includes(call.status)) break; await new Promise((r) => setTimeout(r, 10000)); } ` 如果 statuscompletedtranscriptsummary 缺失,再轮询 2 次,每次间隔 2 秒——补充信息通常会在完成后很快到达。 ## 3) 读取结果 `json { "data": { "call_id": "cl_abc123", "status": "completed", "outcome": "achieved", "summary": "Successfully booked a table for 2 at 7pm.", "transcript": "Agent: Hi, I'd like to book a table...\nHost: Sure...", "recording_url": "https://...", "duration_seconds": 42 } } ` 使用以下字段: - outcomeachievedpartialnot_achieved - summary:简短描述通话结果 - transcript:完整对话文本 - recording_url:音频文件 URL ## 错误 | 代码 | 含义 | 操作 | |------|---------|--------| | 400 | 输入无效 | 修正字段后重试 | | 401 | API 密钥错误或缺失 | 检查 x-api-key 请求头 | | 402 | 余额不足 | 停止并告知用户 | | 429 | 限流(10 次/分钟) | 等待 60 秒后重试一次 | ## 安全限制 - 如果 AGENTPHONE_API_KEY 未设置 → 停止,不调用 API。 - 如果 to_phone_number 不是 E.164 格式 → 停止,不调用 API。 - 如果 POST /calls 返回 402 → 停止并告知余额不足。 - 如果 429 → 等待 60 秒,重试一次。若再次 429 → 停止。 - 如果 statusfailedcanceled → 停止并告知用户。 ## 约束 - 禁止拨打紧急服务(911 等) - 禁止垃圾或批量骚扰电话 - 前 5 通电话免费,无需信用卡 ## 通话生命周期 queueddialingin_progresscompleted | failed | canceled`

数据来源ClawHub ↗ · 中文优化:龙虾技能库