共计 2334 个字符,预计需要花费 6 分钟才能阅读完成。
核心概念:Workbuddy Skill 是什么?
Workbuddy Skill 是一种可扩展的智能助手功能模块,允许开发者通过定义对话逻辑和接口集成来扩展智能助手的能力。它的基本架构包含三个核心部分:

- 交互模型:定义用户如何与技能对话(语音 / 文本指令)
- 业务逻辑:处理用户请求并返回响应
- 接口集成:连接外部 API 或服务获取数据
工作原理可以简单理解为:用户说出指令 → Workbuddy 平台解析意图 → 调用你的技能逻辑 → 返回语音 / 文本响应。
开发准备:环境搭建
必要工具清单
- Python 3.8+(推荐使用 virtualenv)
- Workbuddy 开发者账号
- 代码编辑器(VS Code/PyCharm)
- Postman(用于 API 测试)
环境配置步骤
-
安装 Python 并验证版本:
python --version -
创建项目目录并初始化虚拟环境:
mkdir my_first_skill && cd my_first_skill python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows -
安装核心依赖包:
pip install workbuddy-sdk requests python-dotenv
实战示例:天气预报技能开发
1. 创建技能
在 Workbuddy 开发者控制台:
- 点击 ”Create New Skill”
- 选择 ”Custom” 类型
- 填写技能名称和调用词(如 ” 天气助手 ”)
2. 定义意图
创建两个核心意图:
- GetWeatherIntent:处理天气查询
-
示例语句:”{city}天气怎么样 ”、” 查询 {date}{city} 天气预报 ”
-
HelpIntent:提供使用帮助
- 示例语句:” 这个技能怎么用 ”、” 你能做什么 ”
3. 设置槽位
在 GetWeatherIntent 中添加:
- city(城市):必填槽位,类型为 AMAZON.City
- date(日期):可选槽位,类型为 AMAZON.DATE
4. 对话逻辑实现
以下是完整的 Python 处理代码(保存为 lambda_function.py):
import os
import requests
from workbuddy_sdk import Skill, request, response
from datetime import datetime
# 初始化技能实例
skill = Skill(__name__)
# 天气 API 配置
WEATHER_API_KEY = os.getenv('WEATHER_API_KEY')
BASE_URL = 'https://api.weatherapi.com/v1/forecast.json'
@skill.intent('GetWeatherIntent')
def get_weather():
"""处理天气查询请求"""
try:
# 获取槽位值
city = request.slot_value('city')
date = request.slot_value('date') or 'today'
# 调用天气 API
params = {
'key': WEATHER_API_KEY,
'q': city,
'dt': date,
'lang': 'zh'
}
api_response = requests.get(BASE_URL, params=params)
api_response.raise_for_status()
# 解析响应数据
weather_data = api_response.json()
condition = weather_data['current']['condition']['text']
temp_c = weather_data['current']['temp_c']
# 构建语音响应
speech = f"{city}{date}的天气是 {condition},气温{temp_c} 摄氏度"
return response.tell(speech)
except requests.exceptions.RequestException as e:
return response.tell(f"获取天气信息失败,请稍后再试")
@skill.intent('HelpIntent')
def help():
"""提供使用帮助"""
help_text = "你可以问我某个城市的天气情况,比如' 北京天气怎么样 '"
return response.tell(help_text)
# 默认处理函数
@skill.default_handler
def default():
return response.tell("抱歉我没听懂,你可以说' 帮助 '了解我能做什么")
handler = skill.get_handler()
5. 测试与调试
- 在开发者控制台使用 ”Test” 面板
- 输入测试语句:” 上海明天天气 ”
- 检查响应是否符合预期
- 使用 ”Debug” 标签查看请求 / 响应原始数据
避坑指南
常见错误及解决方案
- 槽位未填充分:
- 现象:用户没说城市名时直接报错
-
解决:添加槽位确认提示(” 您想查询哪个城市?”)
-
API 调用超时:
- 现象:天气 API 响应慢导致超时
-
解决:添加重试机制或缓存常用城市数据
-
语音响应过长:
- 现象:返回的天气信息太详细导致听不清
- 解决:精简响应内容,只保留核心信息
进阶建议
性能优化
- 使用缓存减少 API 调用(如 redis)
- 异步处理耗时操作
- 压缩响应数据大小
安全性考量
- 敏感信息(如 API 密钥)使用环境变量
- 验证用户输入防止注入攻击
- 实现请求频率限制
动手实践
现在你已经完成基础天气技能,尝试扩展以下功能:
- 增加空气质量查询
- 实现多日天气预报(3 天 / 7 天)
- 添加天气预警通知功能
遇到问题可以参考官方文档,或者在我们的开发者社区提问。你已经迈出了 Workbuddy Skill 开发的第一步,接下来就是发挥创意的时候了!
正文完
发表至: 技术教程
五天前
