outbound-calling

该技能调用阿里云晓蜜外呼机器人,向指定手机号码列表发起自动语音外呼,支持自定义话术场景,可批量处理数十至数千个号码,并实时追踪外呼任务进度。 当用户问题涉及「批量给客户打电话通知某件事」「自动外呼做满意度调查或回访」「用机器人拨打面试邀约或活动提醒」「从前置节点(如 CRM、简历筛查)获取号码后直接外呼」时使用该技能。

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "outbound-calling" with this command: npx skills add yuya-xyf/intelligent-outbound-call

阿里云晓蜜外呼机器人

自动化外呼机器人技能,用于批量电话外呼。

前置条件

配置阿里云凭证

export ALIBABA_CLOUD_ACCESS_KEY_ID="your-access-key-id"
export ALIBABA_CLOUD_ACCESS_KEY_SECRET="your-access-key-secret"

绑定外呼号码 ⚠️ 重要

必须申请并绑定外呼号码,否则无法进行外呼。详见 phone-number-setup.md

执行清单

复制此清单并在执行时逐项打勾:

  • 步骤 0: 校验前置条件 ⛔ BLOCKING — 未通过前禁止继续
    • 0.1 ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET 已配置
    • 0.2 已绑定外呼号码(未绑定则读取 phone-number-setup.md
  • 步骤 1: 获取外呼名单
    • 1A: 前置节点 → 提取号码 + 推断场景描述
    • 1B: 用户直接提供 → 收集号码、场景描述、任务名称
  • 步骤 2: 验证数据
    • 2.1 电话号码格式正确(1开头11位)
    • 2.2 场景描述清晰明确
  • 步骤 3: 向用户确认 ⛔ BLOCKING — 未收到明确确认前禁止执行任何外呼
  • 步骤 4: 创建 taskInput.json(请读取 input-formats.md
    • 4.1 盘点所有已知信息,作为 agentProfile.background 的素材
    • 4.2 构建完整 agentProfile ⛔ 必填 — 不要依赖自动推断,background 写得越详细通话质量越高
  • 步骤 5: 执行外呼
  • 步骤 6: 报告结果并执行交付检查

步骤 0: 校验前置条件 ⛔ BLOCKING

在做任何事之前,先确认:

  • ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET 是否已配置?未配置则立即告知用户,停止执行。
  • 是否已绑定外呼号码?未绑定则读取 phone-number-setup.md 引导用户完成申请,停止执行。

步骤 1: 获取外呼名单

场景 A: 从前置节点获取(如简历筛查、CRM 查询等)

先执行前置步骤,从返回结果中提取电话号码,根据用户意图生成场景描述,直接传递给此技能,无需再次询问用户。

场景 B: 用户直接提供

收集以下信息:

  • 电话号码列表(必需)— 中国大陆手机号(1开头11位)
  • 外呼场景描述(必需)— 清晰描述外呼目的;脚本会自动从描述中推断 industry(行业)和 scene(场景类型)标准值,无需手动指定
  • 任务名称(可选)

信息不完整时,向用户询问:

  • "需要拨打哪些电话号码?"
  • "这次外呼的目的是什么?"

步骤 2: 验证数据

逐项检查:

  • 这些号码是否都是 1 开头的 11 位数字?有没有明显格式错误?
  • 场景描述是否足够具体,能让智能体理解外呼目的?

步骤 3: 向用户确认 ⛔ BLOCKING

在执行前,必须向用户展示并等待明确确认:

准备执行外呼任务,请确认以下信息:

📋 任务信息
- 任务名称: [任务名称]
- 外呼场景: [场景描述]
- 智能体角色: [角色]
- 外呼目标: [目标]

📞 外呼名单(共 N 人)
1. [电话号码]
...

是否确认执行外呼?
  • ✅ 必须等待用户明确确认后才能执行
  • ✅ 用户不确认时,询问需要修改什么
  • ❌ 不要在用户未确认的情况下自动执行

步骤 4: 创建 taskInput.json

请读取 input-formats.md文件,根据已知信息构建 taskInput.json 文件。

关键原则:充分利用已有信息,不要只提取号码和简单描述。

首先盘点当前已知的所有信息,这些都应该作为 background 的素材:

  • 对话上下文中提到的任何细节(时间、地点、条件、产品名称、活动内容……)
  • 前置节点传来的数据(简历信息、CRM 字段、订单详情……)
  • 被叫方的个人信息(姓名、职位、历史记录……)
  • 用户明确说明的要求或限制

然后再问自己:

  • 这次外呼的核心目的是什么?被叫方需要做什么决定或回答什么问题?
  • 如果对方拒绝或不方便,有备选方案吗?
  • 根据场景,智能体应该扮演什么角色?(招聘专员、销售顾问、客服专员……)
  • 开场白说什么最自然?对方接起电话的第一句话应该是什么?

所有已知信息都应填入 agentProfile.background,让机器人在通话中有据可依,而不是凭空发挥。

scenarioDescription 填写原则:

  • 用简洁的中文描述外呼目的,例如:"面试邀约""满意度回访""AI产品体验邀约"
  • 脚本会自动根据描述关键词推断 industry(行业)和 scene(场景类型)标准值,无需手动指定
  • 支持推断的关键词示例:
关键词推断 industry推断 scene
面试、招聘、简历HRinterview_invite
保险、理财、金融financeproduct_promotion
教育、培训、课程educationenrollment
医疗、体检、预约healthcareappointment
快递、物流、订单ecommercedelivery_notify
客服、回访、满意度servicesurvey
销售、产品、推广retailproduct_promotion
通知、提醒generalnotify
其他telecomsurvey

执行:

node scripts/bundle.cjs taskInput.json

步骤 5: 执行外呼

用户确认后执行:

# 标准用法(推荐)
node scripts/bundle.cjs taskInput.json

参数说明:

参数说明使用场景
taskInput.jsonJSON 文件路径主要输入方式
--instance-id <id>指定已有外呼实例 ID复用实例,避免重复创建
--script-id <id>指定已有话术脚本 ID复用话术,避免重复生成
--no-interactive禁用交互式输入自动化脚本、CI/CD 场景

查询子命令:

子命令说明用法
query查询任务组整体进度node scripts/bundle.cjs query <instanceId> <jobGroupId>
query-jobs查询各 Job 详细结果(分页)node scripts/bundle.cjs query-jobs <instanceId> <jobGroupId> [--page N] [--size N] [--status Succeeded]
get-recording获取单通录音下载链接node scripts/bundle.cjs get-recording <instanceId> <jobId>

技能执行时自动完成:验证输入 → 创建实例 → 检查绑定号码 → 生成话术 → 创建任务组 → 启动外呼


步骤 6: 报告结果

向用户报告:

  • 外呼任务已启动
  • 任务组 ID(jobGroupId
  • 拨打的电话数量

遇到错误时,请读取 troubleshooting.md


步骤 7: 安排结果查询

外呼任务启动后,用定时任务的功能来安排一个 30 秒后的一次性任务,在隔离会话中查询进度并通知用户:

  • 任务名称:外呼结果查询-<jobGroupId 前 8 位>
  • 触发时间:30 秒后
  • 任务内容:执行 node scripts/bundle.cjs query <instanceId> <jobGroupId>,根据结果决定下一步:
    • running / partial → 再安排一个 60 秒后的查询
    • completed → 向用户汇报结果,询问是否需要下载录音进行分析

安排好后立即向用户回复,不要等待外呼完成:

✅ 外呼任务已启动!

📋 任务信息
- 任务组 ID: <jobGroupId>
- 实例 ID: <instanceId>
- 外呼数量: N 人

⏰ 我将在 30 秒后自动查询进度,完成后主动通知你。

交付前检查

执行完成后,逐项确认再向用户报告:

  • 任务组 ID 已获取(jobGroupId 不为空)
  • 实际拨打数量与名单数量一致
  • 已告知用户在 阿里云晓蜜控制台 查看外呼结果
  • 如有号码验证失败,已向用户说明哪些号码被跳过及原因

常见场景示例

需要参考具体场景时,请读取 scenarios.md


注意事项

  1. 合规使用 — 确保外呼行为符合相关法律法规,获得用户同意
  2. 号码隐私 — 妥善保管客户电话号码,避免泄露
  3. 费用控制 — 外呼服务会产生费用,注意控制调用频率
  4. 测试优先 — 建议先在测试环境验证,再用于生产

参考链接

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Google Classroom

Google Classroom API integration with managed OAuth. Manage courses, assignments, students, teachers, and announcements. Use this skill when users want to cr...

Registry SourceRecently Updated
General

GetResponse

GetResponse API integration with managed OAuth. Manage email marketing campaigns, contacts, newsletters, autoresponders, and segments. Use this skill when us...

Registry SourceRecently Updated
General

Antenna

Inter-host OpenClaw session messaging over reachable HTTPS using built-in gateway webhook hooks. Use when: (1) sending a message from this OpenClaw instance...

Registry SourceRecently Updated
3130Profile unavailable
General

Buffer

Buffer API integration with managed authentication. Schedule and manage social media posts across multiple platforms. Use this skill when users want to sched...

Registry SourceRecently Updated