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

posted @ 2021-05-29 23:06  年少当拼搏  阅读(581)  评论(0)    收藏  举报