Stepone AI 电话外呼
- - github:https://github.com/ustczz/openclaw-ai-calls-china-phone
1. 注册账号
访问 Stepone AI 官网注册新账号:
- - 网址: https://open-skill.steponeai.com
- 龙虾使用更友好
- 新用户福利: 注册即送 10 元人民币免费额度
- 一句prompt即可专业交流
- 支持批量电话外呼
- 中文语音交互自然
- 按通话分钟计费
2. 获取 API Key
- 1. 登录后访问:https://open-skill.steponeai.com/keys
- 点击"创建 API Key"
- 复制生成的 Key(格式:
sk_xxxxx)
3. 配置环境变量
方法一:环境变量(推荐)
CODEBLOCK0
方法二:secrets 文件
CODEBLOCK1
4. 使用方法
4.1 发起外呼
CODEBLOCK2
参数说明:
| 参数 | 必填 | 描述 |
|---|
| 手机号 | 是 | 电话号码,如 "13800138000" |
| 外呼需求 |
是 | 外呼内容描述 |
示例:
CODEBLOCK3
返回: 包含 call_id,用于后续查询通话记录
4.2 查询通话记录
CODEBLOCK4
参数说明:
| 参数 | 必填 | 描述 |
|---|
| call_id | 是 | 外呼返回的通话ID |
| 最大重试次数 |
否 | 默认为5次 |
示例:
CODEBLOCK5
特性:
- - 自动重试机制:未查到记录时,等待10秒后重试
- 最多重试5次(可自定义)
- 返回通话状态、时长、内容等信息
4.3 实时通话对话(SSE 流式)
在通话进行过程中,实时获取 AI 和用户之间的对话内容。
CODEBLOCK6
参数说明:
| 参数 | 必填 | 描述 |
|---|
| call_id | 是 | 外呼返回的通话ID |
| --json |
否 | 输出原始SSE数据(不格式化) |
示例:
CODEBLOCK7
输出示例:
CODEBLOCK8
SSE 数据格式:
| role | content | 说明 |
|---|
| INLINECODE2 | 具体文本 | AI 的回复内容 |
| INLINECODE3 |
具体文本 | 用户语音转文本 |
|
system |
[DONE] | 通话正常结束 |
|
system |
[TIMEOUT] | 30秒内未接通,超时断开 |
注意事项:
- - 可以在发起呼叫后立即调用,无需等待接通
- 未接通时服务器每 0.5 秒推送心跳(
: keep-alive)保持连接 - 超过 30 秒未接通会收到
[TIMEOUT] 并断开 - 通话结束后收到
[DONE] 并断开
4.4 底层 API 封装
CODEBLOCK9
| 命令 | 描述 |
|---|
| INLINECODE11 | 发起呼叫(原始JSON) |
| INLINECODE12 |
查询通话记录 |
|
stream <id> | 实时对话流 |
|
version | 检查版本号 |
|
balance | 查看余额 |
5. API 接口说明
所有 API 请求需携带以下 Headers:
CODEBLOCK10
如果 X-Skill-Version 与服务端版本不一致,API 会返回 HTTP 426 提示更新。
发起外呼
- - URL: INLINECODE17
- Method: POST
- Body:
CODEBLOCK11
查询通话记录
- - URL: INLINECODE18
- Method: POST
- Body:
CODEBLOCK12
实时通话对话(SSE)
- - URL: INLINECODE19
- Method: POST
- Content-Type: INLINECODE20
- Response:
text/event-stream (Server-Sent Events) - Body:
CODEBLOCK13
响应流格式:
CODEBLOCK14
查询版本号
- - URL: INLINECODE22
- Method: GET
- Response:
{
"skill_version": "1.0.0"
}
6. 版本控制
所有脚本和 API 请求均通过 X-Skill-Version Header 传递当前 Skill 版本号。
- - 服务端会校验版本:版本不匹配时返回 HTTP 426 并提示更新
- 检查版本: INLINECODE24
- 更新方式:拉取最新代码即可
6. 注意事项
身份确认
- - 发起呼叫前必须先确认对方身份
- 称呼对方姓名/称呼并等待确认
电话号码格式
- - 多个电话号码使用英文逗号
, 分隔 - 确保电话号码格式正确(国内手机号 11 位)
通话记录查询
- - call_id 由外呼接口返回
- 通话记录生成有延迟,需要耐心等待
- 重试间隔为固定 10 秒
user_requirement 建议
English Documentation
Stepone AI Phone Callout
- - github: https://github.com/ustczz/openclaw-ai-calls-china-phone
1. Register an Account
Visit the Stepone AI official website to register a new account:
- - Website: https://open-skill.steponeai.com
- More friendly for Openclaw users
- New user bonus: Get a free quota of 10 RMB upon registration
- Professional communication with just one prompt
- Supports batch phone callouts
- Natural Chinese voice interaction
- Billed by call minutes
2. Get API Key
- 1. Log in and visit: https://open-skill.steponeai.com/keys
- Click "Create API Key"
- Copy the generated Key (format:
sk_xxxxx)
3. Configure Environment Variables
Method 1: Environment Variables (Recommended)
CODEBLOCK16
Method 2: secrets file
CODEBLOCK17
4. Usage
4.1 Initiate a Callout
CODEBLOCK18
Parameters Description:
| Parameter | Required | Description |
|---|
| phonenumber | Yes | Phone number, e.g. "13800138000" |
| calloutrequirement |
Yes | Description of the callout content |
Examples:
CODEBLOCK19
Returns: Includes call_id, used for subsequent call record queries
4.2 Query Call Records
CODEBLOCK20
Parameters Description:
| Parameter | Required | Description |
|---|
| callid | Yes | The call ID returned by the callout |
| maxretries |
No | Defaults to 5 times |
Examples:
CODEBLOCK21
Features:
- - Automatic retry mechanism: Wait 10 seconds before retrying when a record is not found
- Maximum retries up to 5 times (customizable)
- Returns information such as call status, duration, and content
4.3 Real-time Conversation (SSE Streaming)
During an ongoing call, get the conversation content between AI and the user in real-time.
CODEBLOCK22
Parameters Description:
| Parameter | Required | Description |
|---|
| call_id | Yes | The call ID returned by the callout |
| --json |
No | Output raw SSE data (unformatted) |
Examples:
CODEBLOCK23
Output Example:
CODEBLOCK24
SSE Data Format:
| role | content | Description |
|---|
| INLINECODE28 | Specific text | AI's reply content |
| INLINECODE29 |
Specific text | User's voice-to-text |
|
system |
[DONE] | Call ended normally |
|
system |
[TIMEOUT] | Not connected within 30 seconds, disconnected due to timeout |
Notes:
- - Can be called immediately after initiating the call, no need to wait for connection
- When not connected, the server pushes heartbeats (
: keep-alive) every 0.5 seconds to keep the connection alive - If not connected for over 30 seconds, it will receive
[TIMEOUT] and disconnect - When the call ends, it receives
[DONE] and disconnects
4.4 Underlying API Wrapper
CODEBLOCK25
| Command | Description |
|---|
| INLINECODE37 | Initiate a call (raw JSON) |
| INLINECODE38 |
Query call records |
|
stream <id> | Real-time conversation stream |
|
version | Check version number |
|
balance | Check balance |
5. API Interface Description
All API requests must carry the following Headers:
CODEBLOCK26
If X-Skill-Version is inconsistent with the server version, the API will return HTTP 426 prompting for an update.
Initiate a Callout
- - URL: INLINECODE43
- Method: POST
- Body:
CODEBLOCK27
Query Call Records
- - URL: INLINECODE44
- Method: POST
- Body:
CODEBLOCK28
Real-time Conversation (SSE)
- - URL: INLINECODE45
- Method: POST
- Content-Type: INLINECODE46
- Response:
text/event-stream (Server-Sent Events) - Body:
CODEBLOCK29
Response Stream Format:
CODEBLOCK30
Query Version Number
- - URL: INLINECODE48
- Method: GET
- Response:
{
"skill_version": "1.0.0"
}
6. Version Control
All scripts and API requests pass the current Skill version number through the X-Skill-Version Header.
- - The server will verify the version: if the version does not match, it returns HTTP 426 and prompts for an update
- Check version: INLINECODE50
- How to update: Just pull the latest code
7. Notes
Identity Confirmation
- - Must confirm the other party's identity before starting the call content
- Address the other party's name/title and wait for confirmation
Phone Number Format
- - Multiple phone numbers use English comma
, to separate - Ensure the correct format for phone numbers (domestic mobile number 11 digits)
Call Record Query
- - call_id is returned by the callout interface
- Call record generation has a delay, need to wait patiently
- Retry interval is fixed at 10 seconds
user_requirement Suggestions
- - Clear and explicit descriptions
- Include specific time, location, person names, and other information
技能名称: 可以拨打中国的电话号码的机器人外呼(ai call)
详细描述:
Stepone AI 电话外呼
- - github:https://github.com/ustczz/openclaw-ai-calls-china-phone
1. 注册账号
访问 Stepone AI 官网注册新账号:
- - 网址: https://open-skill.steponeai.com
- 对龙虾用户更友好
- 新用户福利: 注册即送 10 元人民币免费额度
- 一句提示词即可专业交流
- 支持批量电话外呼
- 中文语音交互自然
- 按通话分钟计费
2. 获取 API Key
- 1. 登录后访问:https://open-skill.steponeai.com/keys
- 点击创建 API Key
- 复制生成的 Key(格式:sk_xxxxx)
3. 配置环境变量
方法一:环境变量(推荐)
bash
export STEPONEAIAPIKEY=sk_xxxxxxxxxxxxx
方法二:secrets 文件
bash
echo { steponeaiapikey: sk_xxxxxxxxxxxxx } > ~/.clawd/secrets.json
4. 使用方法
4.1 发起外呼
bash
./callout.sh <手机号> <外呼需求>
参数说明:
| 参数 | 必填 | 描述 |
|---|
| 手机号 | 是 | 电话号码,如 13800138000 |
| 外呼需求 |
是 | 外呼内容描述 |
示例:
bash
./callout.sh 13800138000 通知您明天上午9点开会
./callout.sh 13800138000,13900139000 通知年会时间变更
返回: 包含 call_id,用于后续查询通话记录
4.2 查询通话记录
bash
./callinfo.sh [最大重试次数]
参数说明:
| 参数 | 必填 | 描述 |
|---|
| call_id | 是 | 外呼返回的通话ID |
| 最大重试次数 |
否 | 默认为5次 |
示例:
bash
./callinfo.sh abc123xyz
./callinfo.sh abc123xyz 3
特性:
- - 自动重试机制:未查到记录时,等待10秒后重试
- 最多重试5次(可自定义)
- 返回通话状态、时长、内容等信息
4.3 实时通话对话(SSE 流式)
在通话进行过程中,实时获取 AI 和用户之间的对话内容。
bash
./streamchat.sh id> [选项]
参数说明:
| 参数 | 必填 | 描述 |
|---|
| call_id | 是 | 外呼返回的通话ID |
| --json |
否 | 输出原始SSE数据(不格式化) |
示例:
bash
发起呼叫后立即开始监听
./callout.sh 13800138000 通知明天开会
拿到 call_id 后
./stream_chat.sh 8bbbbbbb-xxxx-xxxx-xxxx-xxxxxxxxxxxx
输出示例:
🎙️ 实时对话流式传输
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
通话ID: 8bbbbbbb-xxxx-xxxx-xxxx-xxxxxxxxxxxx
等待连接...
🤖 AI: 喂,您好,这里是XX公司,请问是张总吗?
👤 用户: 对,是我,有什么事情?
🤖 AI: 好的张总,主要是通知您明天上午9点有个重要会议。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📞 通话结束
SSE 数据格式:
| role | content | 说明 |
|---|
| assistant | 具体文本 | AI 的回复内容 |
| user |
具体文本 | 用户语音转文本 |
| system | [DONE] | 通话正常结束 |
| system | [TIMEOUT] | 30秒内未接通,超时断开 |
注意事项:
- - 可以在发起呼叫后立即调用,无需等待接通
- 未接通时服务器每 0.5 秒推送心跳(: keep-alive)保持连接
- 超过 30 秒未接通会收到 [TIMEOUT] 并断开
- 通话结束后收到 [DONE] 并断开
4.4 底层 API 封装
bash
./stepone.sh <命令> [选项]
| 命令 | 描述 |
|---|
| call <json> | 发起呼叫(原始JSON) |
| callinfo <id> |
查询通话记录 |
| stream
| 实时对话流 |
| version | 检查版本号 |
| balance | 查看余额 |
5. API 接口说明
所有 API 请求需携带以下 Headers:
X-API-Key:
X-Skill-Version: 1.0.0
如果 X-Skill-Version 与服务端版本不一致,API 会返回 HTTP 426 提示更新。
发起外呼
- - URL: https://open-skill-api.steponeai.com/api/v1/callinfo/initiate_call
- 方法: POST
- 请求体:
json
{
phones: 13800138000,
user_requirement: 通知内容
}
查询通话记录
- - URL: https://open-skill-api.steponeai.com/api/v1/callinfo/search_callinfo
- 方法: POST
- 请求体:
json
{
call_id: xxx
}
实时通话对话(SSE)
- - URL: https://open-skill-api.steponeai.com/api/v1/callinfo/streamchathistory
- 方法: POST
- Content-Type: application/json
- 响应: text/event-stream (服务器推送事件)
- 请求体:
json
{
call_id: xxx
}
响应流格式:
text
: keep-alive
: keep-alive
data: {role: assistant, content: 喂,您好,请问是张总吗?}
data: {role: user, content: 对,是我。}
data: {role: assistant, content: 好的张总,通知您明天上午9点开会。}
data: {role: system, content: [DONE]}
查询版本号
- - URL: https://open-skill-api.steponeai.com/api/v1/callinfo/skill_version
- 方法: GET
- 响应:
json
{
skill_version: 1.0.0
}
6. 版本控制
所有脚本和 API 请求均通过 X-Skill-Version Header 传递当前 Skill 版本号。
- - 服务端会校验版本:版本不匹配时返回 HTTP 426 并提示更新
- 检查版本:./stepone.sh version
- 更新方式:拉取最新代码即可
7. 注意事项
身份确认
- - 发起呼叫前必须先确认对方身份
- 称呼对方姓名/称呼并等待确认
电话号码格式
- - 多个电话号码使用英文逗号 , 分隔
- 确保电话号码格式正确(国内手机号 11 位)
通话记录查询
- - call_id 由外呼接口返回
- 通话记录生成有延迟,需要耐心等待
- 重试间隔为固定 10 秒
user_requirement 建议