← Back to Skills Marketplace
zhangchengzc

keyue-call

by zhangchengzc · GitHub ↗ · v1.0.5 · MIT-0
cross-platform ✓ Security Clean
1072
Downloads
33
Stars
1
Active Installs
6
Versions
Install in OpenClaw
/install keyue-call
Description
通过百度 AIOB 的获取 Token 与实时任务接口创建外呼任务。适用于:立即拨打电话、定时提醒电话(例如 5 分钟后拨打)、以及需要把用户意图整理为 dialogVar.name、dialogVar.owner_name 和 dialogVar.user_intent 后再发起外呼的场景;也适合通过脚本自动化...
README (SKILL.md)

AIOB 外呼技能

用于稳定地创建“立即外呼”与“延时外呼”任务。

工作流

  1. config.json 中配置默认参数(可参考 config.json.example),包括:accessKeysecretKeyrobotIdmobilecallerNum
  2. references/aiob-auth.md 获取 accessToken
  3. references/aiob-realtime-task.md 组织实时外呼请求体。
  4. 先按 references/extraction-rules.md 从用户自然语言中提取 mobilenameowner_nameuser_intentschedule
  5. 使用 scripts/create_realtime_call.py 发起请求(命令行参数可覆盖配置文件中的默认值)。
  6. 对“5 分钟后提醒我打电话”这类需求,使用 OpenClaw cron 做精确定时触发。

典型场景

1)立即外呼

采用配置优先模式。

示例(拨打配置文件中的默认手机号):

python3 scripts/create_realtime_call.py --config config.json

示例(仅覆盖被叫手机号):

python3 scripts/create_realtime_call.py --config config.json --mobile "13333333333"

2)通知某人某件事

当用户表达“打电话给张三,告诉他下午三点开会”这类需求时:

  • name = "张三"
  • owner_name = "李四"(表示是谁发起这通电话;若上下文明确且用户希望话术体现发起人身份,则优先补齐)
  • user_intent = "下午三点开会"

示例:

python3 scripts/create_realtime_call.py \
  --config config.json \
  --mobile "13333333333" \
  --name "张三" \
  --user-intent "下午三点开会"

3)提醒或催办

适用于:

  • 打电话给张三,提醒他今天下班前提交周报
  • 打电话给李四,告诉他快递到了
  • 打电话给我,提醒我两分钟后出门

变量提取建议:

  • name:被称呼的人名;若用户没有明确姓名,可留空或使用默认值
  • owner_name:外呼任务发起人的姓名或身份称呼,用于在话术里体现“这是谁让打来的电话”;若上下文明确且用户有这个需求,优先传递
  • user_intent:真正要传达的内容,保留原意,尽量简洁

4)延时提醒外呼(例如 5 分钟后)

使用 OpenClaw cron 进行一次性调度。

实现模式:

  1. 创建 one-shot cron 任务(schedule.kind = "at"),触发时间为当前时间 + 5 分钟。
  2. 任务使用 isolated agentTurn 执行本技能流程。
  3. cron 文案中写明“这是提醒电话”,并带上必要上下文。

5)带截止时间的排队外呼

设置 --stop-date "yyyy-MM-dd HH:mm:ss",超过截止时间后 AIOB 不再继续拨打。

自然语言入口

当用户直接说自然语言时,优先按 references/extraction-rules.md 解析,不要让用户自己组织 JSON。

推荐支持这类表达:

  • “打电话给张三,告诉他下午三点开会”
  • “打个电话给 14444444444,提醒他尽快回我微信”
  • “2 分钟后打电话给我,提醒我出门拿快递”

执行策略:

  1. 判断是立即外呼还是延时/定时外呼。
  2. 抽取手机号;只有“打电话给我 / 给我自己打电话 / 提醒我自己”这类明确打给自己的场景,才允许回退到 config.json 默认手机号。
  3. 若目标不是用户自己,则必须要求用户明确提供手机号;不要因为给了姓名就擅自使用默认号码。
  4. 抽取 name
  5. 若用户希望在电话里体现“是谁发起的提醒/通知”,或上下文已明确发起人身份,则抽取 owner_name
  6. 抽取 user_intent
  7. 立即外呼时优先调用:
    python3 scripts/create_realtime_call.py --config config.json [--mobile ...] [--name ...] [--owner-name ...] [--user-intent ...]
    
  8. 延时/定时时用 OpenClaw cron 调度,并在触发时执行同一脚本。

参数约定

默认把外呼平台常用变量统一收敛到 dialogVar

  • dialogVar.name:称呼对象,例如“张三”
  • dialogVar.owner_name:外呼任务发起人的姓名或身份称呼,例如“李四”“妈妈”“公司行政”
  • dialogVar.user_intent:要传达的信息,例如“下午三点开会”

优先使用快捷参数:

  • --name → 写入 dialogVar.name
  • --owner-name → 写入 dialogVar.owner_name
  • --user-intent → 写入 dialogVar.user_intent

如果确实需要额外变量,再使用 --dialog-var 传完整 JSON;当快捷参数和 --dialog-var 同时存在时,快捷参数优先覆盖同名字段。

dialogVar 中的字段值为空字符串时,脚本会自动清理;如果最终 nameowner_nameuser_intent 都为空,则整个 dialogVar 不再上送。

成功后的用户提示

如果本次外呼成功,但用户没有表达 nameuser_intent,回复里可顺手提示一次更完整的用法,帮助用户学会这个能力。

推荐提示风格:

  • 简短
  • 不说教
  • 只在缺少这两个字段时提示

示例:

  • “已经给你发起电话了。下次如果你想让电话里带具体内容,可以直接说:打电话给张三,告诉他 5 点开会。”
  • “电话已经发起成功。你也可以直接补充姓名和想传达的话,比如:打电话给李四,告诉他尽快回电。”

如果本次已经明确提供了 nameuser_intent,就不要重复教育用户。

约束与防护

  • 不要在用户可见回复中暴露 AK/SK 或 accessToken。
  • 若接口业务码非成功,返回简洁错误原因与可执行修复建议。
  • dialogVar 必须是合法 JSON 对象。
  • 优先提取并传递 nameowner_nameuser_intent,避免把整句原话无差别塞给平台。
  • 只有“打给自己”的场景才能使用 config.json 中的默认手机号;其他目标一律要求用户明确提供号码。
  • 单次实时外呼请求仅传一个被叫号码(mobile)。

资源说明

  • config.json.example:默认配置模板(AK/SK/robotId/mobile/callerNum 等)。
  • references/aiob-auth.md:Token 获取接口与认证约束。
  • references/aiob-realtime-task.md:实时任务字段、请求和响应要点。
  • references/extraction-rules.md:把用户自然语言拆成 mobilenameowner_nameuser_intentschedule 的规则。
  • scripts/create_realtime_call.py:配置优先、支持参数覆盖的外呼脚本。
Usage Guidance
This skill appears to do what it says: it reads a local config.json with accessKey/secretKey/robotId/mobile, obtains an access token from aiob-open.baidu.com, and creates realtime outbound-call tasks. Before installing or using it, consider: (1) protect the AK/SK — store them securely, restrict their permissions, and rotate them if possible; don't commit config.json to repos; (2) test with safe phone numbers to avoid accidental calls or charges; (3) review logging: the script prints request and response JSON (and can include error dumps) which may reveal PII or platform-returned identifiers — adjust or remove such prints if you need to avoid leaking data to agent logs; (4) verify the callback_url/extJson values you pass to avoid exfil of data to attacker-controlled endpoints; (5) confirm the agent enforces the SKILL.md's rule that default config mobile is used only for 'call me' cases and that the agent prompts for a target number for third-party calls. Source/homepage are missing; if you require provenance assurance, request an upstream homepage or vendor contact before deployment.
Capability Analysis
Type: OpenClaw Skill Name: keyue-call Version: 1.0.5 The skill bundle is a legitimate integration for the Baidu AIOB (Artificial Intelligence Outbound) service, allowing an AI agent to initiate phone calls. The Python script `scripts/create_realtime_call.py` securely handles API authentication and task creation using standard libraries without any signs of obfuscation, data exfiltration to unauthorized endpoints, or command injection vulnerabilities. Furthermore, the `SKILL.md` and `references/extraction-rules.md` files include explicit safety instructions for the AI agent to prevent the exposure of sensitive credentials (AK/SK) and to ensure user privacy by requiring explicit phone numbers for third-party calls.
Capability Assessment
Purpose & Capability
The skill claims to create AIOB realtime outbound call tasks and the included Python script implements token retrieval and the realtime-create API against aiob-open.baidu.com. Required values (accessKey/secretKey/robotId/mobile) align with that purpose; no unrelated credentials or binaries are requested.
Instruction Scope
Runtime instructions limit activities to extracting parameters, reading a local config.json, obtaining a token, and calling the AIOB realtime API — all expected. Two notes: (1) the script prints the request body and the remote response to stdout, which can expose PII or platform-returned identifiers in agent-visible logs; (2) on token-get failure the raised error includes the raw JSON response (json.dumps(data)), which could leak sensitive API response fields in error logs. The SKILL.md itself warns not to expose AK/SK, but the code should be reviewed to ensure logs never contain secrets.
Install Mechanism
No install steps are defined; this is an instruction+script skill. No external downloads, package installs, or archive extraction are present in the bundle.
Credentials
The skill stores/reads credentials via config.json (accessKey/secretKey) rather than environment variables. That is proportionate to the stated purpose, but these keys grant the ability to create outbound calls (and possibly incur billing/costs). Ensure keys are scoped/minimized and stored securely (not checked into repos). The skill does not request unrelated secrets.
Persistence & Privilege
always is false and the skill does not request persistent system-wide privileges or alter other skills. It runs when invoked (or via cron scheduling described by SKILL.md) which is appropriate for its purpose.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install keyue-call
  3. After installation, invoke the skill by name or use /keyue-call
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.5
keyue-call 1.0.5 - No file or functionality changes detected in this release. - Documentation remains unchanged from the previous version.
v1.0.4
keyue-call 1.0.4 - 主叫默认不配置 - 被叫默认不配置,可对话中获取
v1.0.3
- 增加对 dialogVar.owner_name 字段的支持,用于指定外呼任务的发起人/身份。 - 全文补充 owner_name 提取、传递与脚本参数(--owner-name)相关说明。 - 优化参数提取说明,更加明确支持从自然语言中抽取 owner_name 及其使用场景。 - 文档例子与约定同步体现了 owner_name 字段的用法和清理逻辑。
v1.0.2
- 增加了 references/extraction-rules.md,明确自然语言提取 mobile、name、user_intent、schedule 的规则。 - SKILL.md 增强:详细说明如何从用户话术中抽取姓名和意图、参数业务约定以及用户提示策略。 - 新增了适用于意图/人名提取、延时外呼、“打给自己”与号码校验等更多复杂场景的操作指导。 - 资源列表和使用流程现包括 extraction-rules.md,并强调 dialogVar 赋值与参数优先级。
v1.0.1
keyue-call v1.0.1 - No file changes detected in this version. - Documentation in SKILL.md was reformatted and clarified, with no impact on functionality. - Usage instructions, scenarios, and constraints remain unchanged.
v1.0.0
keyue-call 1.0.0 - Initial release for creating outbound call tasks via Baidu AIOB. - Supports immediate and scheduled (delayed) call tasks, including one-shot timed reminders using OpenClaw cron. - Provides configurable parameters via config file and command-line overrides. - Includes clear separation of configuration, authentication, and call request workflow. - Prevents exposure of sensitive credentials and enforces input validity (e.g., JSON format for dialogVar/promptVar). - Documentation included for setup, usage scenarios, and reference resources.
Metadata
Slug keyue-call
Version 1.0.5
License MIT-0
All-time Installs 1
Active Installs 1
Total Versions 6
Frequently Asked Questions

What is keyue-call?

通过百度 AIOB 的获取 Token 与实时任务接口创建外呼任务。适用于:立即拨打电话、定时提醒电话(例如 5 分钟后拨打)、以及需要把用户意图整理为 dialogVar.name、dialogVar.owner_name 和 dialogVar.user_intent 后再发起外呼的场景;也适合通过脚本自动化... It is an AI Agent Skill for Claude Code / OpenClaw, with 1072 downloads so far.

How do I install keyue-call?

Run "/install keyue-call" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is keyue-call free?

Yes, keyue-call is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does keyue-call support?

keyue-call is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created keyue-call?

It is built and maintained by zhangchengzc (@zhangchengzc); the current version is v1.0.5.

💬 Comments