When to Use
When the user wants an AI robot to make outbound calls on their behalf:
- "Help me call 1XXXXXXXXXX to book a restaurant, restaurant xx, time xx, number of people xx"
- "Have the robot follow up with this batch of users with overdue payments"
- "Help me do a satisfaction follow-up survey"
- "Check the results of yesterday's batch of outbound call tasks"
Environment Variables
Resolve authentication according to the following priority (consistent with other vms-* skills):
ARK_SKILL_API_KEY+ARK_SKILL_API_BASE→ Volcengine arkclaw Enterprise Edition. Please first configure AK/SK on the Volcengine console page; arkclaw will inject these two environment variables (ARK_SKILL_API_KEYis the API key,ARK_SKILL_API_BASEis the API base URL), and the script usesBearerauthentication to connect directly to this gateway, without the need for local signing;VOLC_ACCESS_KEY+VOLC_SECRET_KEY(compatible withVOLCENGINE_ACCESS_KEY/VOLCENGINE_SECRET_KEY) → ordinary agents such as Personal Edition arkclaw / openclaw / coco / aime / claudecode, where the user directly tells the agent the AK/SK, and the script performs local HMAC-SHA256 (Volc V4) signing;- otherwise, report an error and prompt the user to enter the AK/SK.
Commands
# 1. 查询可用话术 (GET, 无参或可选 --scene)
python3 scripts/aicall.py list_scripts [--scene restaurant_booking]
# 2. 创建外呼任务 (POST, PhoneList 是对象数组, 由脚本根据 --phone-list + --variable-values 构造)
python3 scripts/aicall.py create_task \
--script-id <ScriptId> \
--phone-list "<PhoneA>,<PhoneB>" \
--variable-values '{"餐厅":"必胜客","时间":"2026-05-29 18:00","人数":"3","备注":"靠窗"}'
# 3. 查询任务进度 / 通话结果 (GET)
python3 scripts/aicall.py query_task --task-id <TaskId>
Standard Execution Flow
- Extract the "target number + task intent + key variables" from the user's semantics.
list_scriptsto find a matching script. If there is none, provide the list of existing scripts for the user to choose from, or prompt them to create a script in the console: https://console.volcengine.com/cloud_vms/aicall .- Directly call
create_taskto create a task, returningTaskId. No need to select a number pool: the platform automatically selects numbers according to the default number pool bound to the script. - When the user later asks about progress, use
query_taskto pull the results, returning task progress and call details (including ASR, intent tags, call duration, etc.).
Error Fallback
RESOURCE_NOT_FOUND(script does not exist) → return the list of currently available scripts.- Authentication failure → prompt to check the AK/SK. For ordinary agents (Personal Edition arkclaw / openclaw / coco / aime / claudecode), check
VOLC_ACCESS_KEY/VOLC_SECRET_KEY; for Volcengine arkclaw Enterprise Edition, first configure the AK/SK on the Volcengine console page, then confirm thatARK_SKILL_API_KEY/ARK_SKILL_API_BASEhas been injected.
Reference
- Volcengine Cloud Communication Intelligent Outbound Call official documentation: https://www.volcengine.com/docs/6358
📚 Basic Knowledge / Parameter Passing Reference
Before calling any action (especially the create_task field construction of PhoneList / VariableValues ),
please first read the local basic knowledge document built into this skill:
references/vms-fundamentals.md
This document covers general specifications such as the SubServiceType enum / number status mapping / CallId format / recording CDN / egress IP whitelist, etc. All vms-* skills share the same content. The local file also works in environments with limited external network access and has better performance than remote retrieval. If you need to compare with the original version, you can refer back to the original Feishu text: https://bytedance.sg.larkoffice.com/docx/Mv32dc0yooBn7txDxW8lsDdDgYb