wukong-robot辅助
wukong-robot辅助
辅助模块:
robot.config:配置模块,用于获取 wukong-robot 的配置信息。robot.constants: 用于获取 wukong-robot 相关的目录和文件的位置信息。robot.logging:日志模块,用于打印日志。robot.utils:其他辅助脚本的集合,包含了邮件发送、文件读写、wav/mp3 音频格式互转、缓存管理等方法。robot.sdk.unit:百度 UNIT 模块,可用于将用户指令解析成结构化数据,并支持提取意图、词槽和回复文本。
config 模块
配置模块,用于获取 wukong-robot 的配置信息。
最常用的是 get() 方法,可以用于获取指定配置的值,并允许提供一个默认值。使用示例:
constants 模块
维护了 wukong-robot 相关的目录和文件的位置信息
from robot import constants
# 打印 wukong-robot 的根路径
print(constants.APP_PATH)
# 打印 wukong-robot/static 的路径
print(constants.DATA_PATH)
# 打印 wukong-robot/temp 的路径
print(constants.TEMP_PATH)
# 打印配置文件的路径
print(constants.getConfigPath())
# 打印某个资源文件的路径
print(constants.getData('beep_lo.wav))
logging 模块
在标准库 logging 模块的基础上封装的一个模块,最大的好处是同时支持输出到 stdout 和分片日志文件中,并统一了日志的输出格式。
- 对于
stdout,level 为INFO级别及以上的日志才会被打印,以节省性能开销; - 对于文件输出,level 为
DEBUG级别及以上的日志才被打印,以方便获取更丰富的调试信息。
robot.logging 模块使用上和标准的 logging 模块并无二致,区别仅仅在于引用方式上:
utils 模块
若干辅助脚本的集合,包含了邮件发送、文件读写、wav/mp3 音频格式互转、缓存管理等方法。以下只列举部分插件开发中可能会用到的方法。其他方法可以通过阅读 utils的文档 了解
邮件发送
发给自己
from robot import utils
attach_files = ['/home/pi/test1.png', '/home/pi/test2.png']
utils.emailUser('这是邮件的标题', '这是邮件的正文', attach_files)Copy to clipboardErrorCopied
发给指定用户
from robot import utils, config
recipient = config.get('/email/address', '')
robot_name = config.get('robot_name_cn', 'wukong-robot')
recipient = robot_name + " <%s>" % recipient
user = config.get('/email/address', '')
password = config.get('/email/password', '')
server = config.get('/email/smtp_server', '')
port = config.get('/email/smtp_port', '')
attach_files = ['/home/pi/test1.png', '/home/pi/test2.png']
# 给 zhangsan@test.com 发邮件
sendEmail('这是邮件的标题', '这是邮件的正文', attach_files, 'zhangsan@test.com', user, recipient, password, server, port)Copy to clipboardErrorCopied
文件操作
读取文件
get_file_content() 方法用于读取一个文件的内容并返回。示例:
from robot import utils
# 打印 /home/pi/test.txt 的文件内容
print(utils.get_file_content('/home/pi/test.txt'))Copy to clipboardErrorCopied
删除文件
check_and_delete() 方法用于检查并删除文件。示例:
from robot import utils
# 删除 /home/pi/test.txt
utils.check_and_delete('/home/pi/test.txt')Copy to clipboardErrorCopied
写入临时文件
write_temp_file() 方法用于写入临时文件。示例:
from robot import utils
# 假定 data 是某段 wav 音频的二进制数据
utils.write_temp_file(data, '.wav')Copy to clipboardErrorCopied
unit 模块
用于对用户指令进行 NLU 解析,得到结构化的数据,并支持提取意图、词槽和回复文本。常用的是 getUnit()、hasIntent()、getSlots() 、getSay() 等方法。示例:
from robot.sdk import unit
query = '今天深圳的天气'
# 获取解析结果
parsed = unit.getUnit(query, "S13442", 'w5v7gUV3iPGsGntcM84PtOOM', 'KffXwW6E1alcGplcabcNs63Li6GvvnfL')
# 判断是否包含 `USER_WEATHER` 意图
if unit.hasIntent(parsed, 'USER_WEATHER'):
# 得到词槽
slots = unit.getSlots(parsed, 'USER_WEATHER')
# 获取 user_loc 词槽的内容
for slot in slots:
if slot['name'] == 'user_loc':
print(slot['normalized_word']) # 深圳Copy to clipboardErrorCopied
百度 UNIT 的 QPS 为 1 ,意味着 1 秒钟只允许解析一次请求。因此,为了保证用户体验,强烈注册并使用自己的 UNIT 账号。详见:https://github.com/wzpan/wukong-robot/blob/master/static/default.yml#L141

浙公网安备 33010602011771号