自动化外呼机器人技能,用于批量电话外呼。
bash
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 — 未通过前禁止继续
ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET 已配置步骤 1: 获取外呼名单
步骤 2: 验证数据
步骤 3: 向用户确认 ⛔ BLOCKING — 未收到明确确认前禁止执行任何外呼
步骤 4: 创建 taskInput.json(请读取 input-formats.md)
agentProfile.background 的素材agentProfile ⛔ 必填 — 不要依赖自动推断,background 写得越详细通话质量越高步骤 5: 执行外呼
步骤 6: 报告结果并执行交付检查
在做任何事之前,先确认:
ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET 是否已配置?未配置则立即告知用户,停止执行。场景 A: 从前置节点获取(如简历筛查、CRM 查询等)
先执行前置步骤,从返回结果中提取电话号码,根据用户意图生成场景描述,直接传递给此技能,无需再次询问用户。
场景 B: 用户直接提供
收集以下信息:
industry(行业)和 scene(场景类型)标准值,无需手动指定信息不完整时,向用户询问:
逐项检查:
在执行前,必须向用户展示并等待明确确认:
text
准备执行外呼任务,请确认以下信息:
📋 任务信息
- 任务名称: [任务名称]
- 外呼场景: [场景描述]
- 智能体角色: [角色]
- 外呼目标: [目标]
📞 外呼名单(共 N 人)
1. [电话号码]
...
是否确认执行外呼?
请读取 input-formats.md 文件,根据已知信息构建 taskInput.json 文件。
关键原则:充分利用已有信息,不要只提取号码和简单描述。
首先盘点当前已知的所有信息,这些都应该作为 background 的素材:
然后再问自己:
所有已知信息都应填入 agentProfile.background,让机器人在通话中有据可依,而不是凭空发挥。
scenarioDescription 填写原则:
"面试邀约"、 "满意度回访"、 "AI产品体验邀约"industry(行业)和 scene(场景类型)标准值,无需手动指定关键词推断 industry推断 scene面试、招聘、简历HRinterview_invite保险、理财、金融financeproduct_promotion教育、培训、课程educationenrollment医疗、体检、预约healthcareappointment快递、物流、订单ecommercedelivery_notify客服、回访、满意度servicesurvey销售、产品、推广retailproduct_promotion通知、提醒generalnotify其他telecomsurvey
执行:
bash
node scripts/bundle.cjs taskInput.json
用户确认后执行:
bash
# 标准用法(推荐)
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>
技能执行时自动完成:验证输入 → 创建实例 → 检查绑定号码 → 生成话术 → 创建任务组 → 启动外呼
向用户报告:
jobGroupId)遇到错误时,请读取 troubleshooting.md。
外呼任务启动后,用定时任务的功能来安排一个 30 秒后的一次性任务,在隔离会话中查询进度并通知用户:
任务名称: 外呼结果查询-<jobGroupId 前 8 位>
触发时间:30 秒后
任务内容:执行 node scripts/bundle.cjs query <instanceId> <jobGroupId>,根据结果决定下一步:
running / partial → 再安排一个 60 秒后的查询completed → 向用户汇报结果,询问是否需要下载录音进行分析安排好后立即向用户回复,不要等待外呼完成:
text
✅ 外呼任务已启动!
📋 任务信息
- 任务组 ID: <jobGroupId>
- 实例 ID: <instanceId>
- 外呼数量: N 人
⏰ 我将在 30 秒后自动查询进度,完成后主动通知你。
执行完成后,逐项确认再向用户报告:
jobGroupId 不为空)需要参考具体场景时,请读取 scenarios.md。