Mycroft核心API详解:设备管理与语音交互接口指南
2025-07-07 06:00:41作者:尤峻淳Whitney
前言
Mycroft作为一款开源的语音助手平台,其核心API提供了丰富的设备管理和语音交互功能。本文将深入解析Mycroft核心API的设计架构、主要功能模块以及典型使用场景,帮助开发者更好地理解和使用这套接口系统。
API概览
Mycroft核心API采用RESTful风格设计,基于HTTPS协议,当前版本为v1。整个API围绕"设备(device)"这一核心资源展开,提供了完整的设备生命周期管理能力,包括:
- 设备注册与激活
- 设备信息管理
- 设备设置配置
- 技能管理
- 位置服务
- 账户订阅
- 语音服务配置
认证与安全
Mycroft API采用OAuth 2.0认证机制,提供了三种认证方式:
- 用户认证(user_auth):用于管理用户相关资源
- 设备认证(device_auth):用于设备相关操作
- 刷新认证(refresh_auth):用于获取新的访问令牌
每种认证方式都有明确的权限范围(scope),确保接口访问的安全性。
核心功能详解
1. 设备管理
设备注册与激活
设备注册流程分为三个关键步骤:
- 生成配对码:通过
/device/code
接口获取配对码 - 创建设备:使用
/device
的POST方法注册新设备 - 激活设备:通过
/device/activate
完成设备激活
POST /device
Content-Type: application/json
{
"name": "客厅智能音箱",
"description": "客厅主音箱设备",
"coreVersion": "21.02"
}
设备信息管理
提供完整的CRUD操作:
- 查询设备详情:
GET /device/{uuid}
- 更新设备信息:
PUT /device
或PATCH /device/{uuid}
- 删除设备:
DELETE /device/{uuid}
2. 设备设置管理
Mycroft允许对设备进行全方位的配置:
GET /device/{uuid}/setting
响应示例:
{
"systemUnit": "metric",
"timeFormat": "half",
"dateFormat": "DMY",
"sttSettings": [...],
"ttsSettings": [...]
}
主要配置项包括:
- 单位系统(公制/英制)
- 时间显示格式(12/24小时制)
- 日期格式(日/月/年顺序)
- 语音识别(STT)设置
- 语音合成(TTS)设置
- 监听器配置
- 外壳设备配置
3. 技能管理
Mycroft的技能系统是其核心功能之一,API提供了完整的技能管理能力:
PUT /device/{uuid}/skill
Content-Type: application/json
{
"skillId": "weather-skill",
"version": "1.2.0",
"active": true
}
主要操作包括:
- 查询设备技能:
GET /device/{uuid}/skill
- 添加/更新技能:
PUT /device/{uuid}/skill
- 删除技能:
DELETE /device/{uuid}/skill
- 批量更新技能配置:
PUT /device/{uuid}/skillJson
4. 位置服务
设备可以存储和获取位置信息:
GET /device/{uuid}/location
响应示例:
{
"coordinate": {
"latitude": 39.9042,
"longitude": 116.4074
},
"timezone": "Asia/Shanghai",
"city": {
"name": "北京",
"code": "110000"
}
}
5. 语音服务配置
语音识别(STT)配置
支持多种STT引擎:
- Mycroft内置
- IBM Watson
- Wit.ai
- OpenSTT
{
"@type": "google",
"active": true,
"credential": {
"@type": "token",
"key": "your-api-key"
}
}
语音合成(TTS)配置
支持引擎包括:
- Mimic
- eSpeak
- Google TTS
- MaryTTS
- FATTS
{
"@type": "google",
"active": true,
"voice": "zh-CN-Wavenet-A"
}
6. 高级功能
发送邮件
PUT /device/{uuid}/message
Content-Type: application/json
{
"subject": "设备激活通知",
"content": "您的设备已成功激活",
"recipient": "user@example.com"
}
收集指标数据
POST /device/{uuid}/metric
Content-Type: application/json
{
"metricType": "usage",
"value": 120,
"timestamp": 1625097600000
}
数据结构定义
设备(Device)
{
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"name": "卧室音箱",
"description": "主卧室智能音箱",
"coreVersion": "21.02",
"enclosureVersion": "2.1",
"lastAccess": 1625097600000
}
账户(Account)
区分免费账户和付费账户:
# 付费账户
{
"@type": "monthly",
"expiresAt": 1627689600000,
"nextPayment": 1625097600000,
"lastPayment": 1622419200000
}
# 免费账户
{
"@type": "free"
}
最佳实践
-
设备注册流程:
- 先获取配对码
- 在30分钟内完成设备注册和激活
- 妥善保管设备UUID和认证令牌
-
配置管理:
- 使用PATCH进行部分更新而非完整替换
- 利用ETag机制优化配置同步
-
错误处理:
- 检查404(未找到)和422(验证错误)状态码
- 实现令牌刷新机制处理401未授权错误
-
性能优化:
- 对频繁访问的资源使用缓存
- 批量操作减少API调用次数
总结
Mycroft核心API提供了一套完整的语音助手设备管理解决方案,从设备生命周期管理到语音服务配置,再到技能生态系统支持,覆盖了语音助手开发的各个方面。通过合理利用这些API接口,开发者可以构建出功能丰富、用户体验优秀的语音交互应用。
对于希望深度定制Mycroft功能的开发者来说,理解这套API的设计理念和实现细节至关重要。本文介绍的各个接口和数据结构,为开发者提供了坚实的基础,可以根据实际需求进行扩展和优化。