# robot package

## Subpackages

- robot.sdk package
  - Submodules
  - robot.sdk.AbstractPlugin module
  - robot.sdk.AliSpeech module
  - robot.sdk.RASRsdk module
  - robot.sdk.TencentSpeech module
  - robot.sdk.XunfeiSpeech module
  - robot.sdk.unit module
  - Module contents

## Submodules

## robot.AI module

class `robot.AI.``AbstractRobot`(**kwargs)

  基类：`object`

  `chat`(texts)
  classmethod `get_instance`()

class `robot.AI.``Emotibot`(appid, location, more)

  基类：`robot.AI.AbstractRobot`

  `SLUG` = 'emotibot'
  `chat`(texts)

    使用Emotibot机器人聊天

    Arguments: texts – user input, typically speech, to be parsed by a module

  classmethod `get_config`()

class `robot.AI.``TulingRobot`(tuling_key)

  基类：`robot.AI.AbstractRobot`

  `SLUG` = 'tuling'
  `chat`(texts)

    使用图灵机器人聊天

    Arguments: texts – user input, typically speech, to be parsed by a module

  classmethod `get_config`()

`robot.AI.``get_robot_by_slug`(slug)
  Returns:
    A robot implementation available on the current platform

`robot.AI.``get_robots`()

## robot.ASR module

class `robot.ASR.``AbstractASR`

  基类：`object`

  Generic parent class for all ASR engines

  classmethod `get_config`()
  classmethod `get_instance`()
  `transcribe`(fp)

class `robot.ASR.``AliASR`(appKey, token, **args)

  基类：`robot.ASR.AbstractASR`

  阿里的语音识别API.

  `SLUG` = 'ali-asr'
  classmethod `get_config`()
  `transcribe`(fp)

class `robot.ASR.``BaiduASR`(appid, api_key, secret_key, dev_pid=1936, **args)

  基类：`robot.ASR.AbstractASR`

  百度的语音识别API. dev_pid:

  > - 1936: 普通话远场
  > - 1536：普通话(支持简单的英文识别)
  > - 1537：普通话(纯中文识别)
  > - 1737：英语
  > - 1637：粤语
  > - 1837：四川话

  要使用本模块, 首先到 yuyin.baidu.com 注册一个开发者账号, 之后创建一个新应用, 然后在应用管理的”查看key”中获得 API Key 和 Secret Key 填入 config.xml 中. …

  > baidu_yuyin:
  >   appid: ‘9670645’ api_key: ‘qg4haN8b2bGvFtCbBGqhrmZy’ secret_key: ‘585d4eccb50d306c401d7df138bb02e7’

  > …

  `SLUG` = 'baidu-asr'
  classmethod `get_config`()
  `transcribe`(fp)

class `robot.ASR.``TencentASR`(appid, secretid, secret_key, region='ap-guangzhou', **args)

  基类：`robot.ASR.AbstractASR`

  腾讯的语音识别API.

  `SLUG` = 'tencent-asr'
  classmethod `get_config`()
  `transcribe`(fp)

class `robot.ASR.``XunfeiASR`(appid, asr_api_key, asr_api_secret, tts_api_key, voice='xiaoyan')

  基类：`robot.ASR.AbstractASR`

  科大讯飞的语音识别API. 外网ip查询：https://ip.51240.com/

  `SLUG` = 'xunfei-asr'
  classmethod `get_config`()
  `transcribe`(fp)

`robot.ASR.``get_engine_by_slug`(slug=None)
  Returns:
    An ASR Engine implementation available on the current platform
  Raises:
    ValueError if no speaker implementation is supported on this platform

`robot.ASR.``get_engines`()

## robot.Brain module

class `robot.Brain.``Brain`(conversation)

  基类：`object`

  `isImmersive`(plugin, text, parsed)
  `pause`()

    暂停某个技能的处理

  `printPlugins`()
  `query`(text)

    query 模块

    Arguments: text – 用户输入

  `restore`()

    恢复某个技能的处理

  `say`(msg, cache=False)
  `understand`(fp)

## robot.ConfigMonitor module

class `robot.ConfigMonitor.``ConfigMonitor`(conversation)

  基类：`watchdog.events.FileSystemEventHandler`

  `on_modified`(event)

    Called when a file or directory is modified.

    参数: | event (`DirModifiedEvent` or `FileModifiedEvent`) – Event representing file/directory modification.

## robot.Conversation module

class `robot.Conversation.``Conversation`(profiling=False)

  基类：`object`

  `activeListen`(silent=False)

    主动问一个问题(适用于多轮对话)

  `appendHistory`(t, text, UUID='')

    将会话历史加进历史记录

  `checkRestore`()
  `converse`(fp, callback=None)

    核心对话逻辑

  `doConverse`(fp, callback=None, onSay=None)
  `doParse`(query, **args)
  `doResponse`(query, UUID='', onSay=None)
  `getHistory`()
  `getImmersiveMode`()
  `interrupt`()
  `pardon`()
  `play`(src, delete=False, onCompleted=None, volume=1)

    播放一个音频

  `reload`()

    重新初始化

  `say`(msg, cache=False, plugin='', onCompleted=None, wait=False)

    说一句话 :param msg: 内容 :param cache: 是否缓存这句话的音频 :param plugin: 来自哪个插件的消息（将带上插件的说明） :param onCompleted: 完成的回调 :param wait: 是否要等待说完（为True将阻塞主线程直至说完这句话）

  `setImmersiveMode`(slug)

## robot.NLU module

class `robot.NLU.``AbstractNLU`

  基类：`object`

  Generic parent class for all NLU engines

  `getIntent`(parsed)

    提取意图

    参数: | parsed – 解析结果
    返回: | 意图数组

  `getSay`(parsed, intent)

    提取回复文本

    参数: | parsed – 解析结果 intent – 意图的名称
    返回: | 回复文本

  `getSlotWords`(parsed, intent, name)

    找出命中某个词槽的内容

    参数: | parsed – 解析结果 intent – 意图的名称 name – 词槽名
    返回: | 命中该词槽的值的列表。

  `getSlots`(parsed, intent)

    提取某个意图的所有词槽

    参数: | parsed – 解析结果 intent – 意图的名称
    返回: | 词槽列表。你可以通过 name 属性筛选词槽，

    再通过 normalized_word 属性取出相应的值

  classmethod `get_config`()
  classmethod `get_instance`()
  `hasIntent`(parsed, intent)

    判断是否包含某个意图

    参数: | parsed – 解析结果 intent – 意图的名称
    返回: | True: 包含; False: 不包含

  `parse`(query, **args)

    进行 NLU 解析

    参数: | query – 用户的指令字符串 **args – 可选的参数

class `robot.NLU.``UnitNLU`

  基类：`robot.NLU.AbstractNLU`

  百度UNIT的NLU API.

  `SLUG` = 'unit'
  `getIntent`(parsed)

    提取意图

    参数: | parsed – 解析结果
    返回: | 意图数组

  `getSay`(parsed, intent)

    提取 UNIT 的回复文本

    参数: | parsed – UNIT 解析结果 intent – 意图的名称
    返回: | UNIT 的回复文本

  `getSlotWords`(parsed, intent, name)

    找出命中某个词槽的内容

    参数: | parsed – UNIT 解析结果 intent – 意图的名称 name – 词槽名
    返回: | 命中该词槽的值的列表。

  `getSlots`(parsed, intent)

    提取某个意图的所有词槽

    参数: | parsed – UNIT 解析结果 intent – 意图的名称
    返回: | 词槽列表。你可以通过 name 属性筛选词槽，

    再通过 normalized_word 属性取出相应的值

  classmethod `get_config`()

    百度UNIT的配置

    无需配置，所以返回 {}

  `hasIntent`(parsed, intent)

    判断是否包含某个意图

    参数: | parsed – UNIT 解析结果 intent – 意图的名称
    返回: | True: 包含; False: 不包含

  `parse`(query, **args)

    使用百度 UNIT 进行 NLU 解析

    参数: | query – 用户的指令字符串 **args – UNIT 的相关参数 - service_id: UNIT 的 service_id - api_key: UNIT apk_key - secret_key: UNIT secret_key
    返回: | UNIT 解析结果。如果解析失败，返回 None

`robot.NLU.``get_engine_by_slug`(slug=None)
  Returns:
    An NLU Engine implementation available on the current platform
  Raises:
    ValueError if no speaker implementation is supported on this platform

`robot.NLU.``get_engines`()

## robot.Player module

class `robot.Player.``AbstractPlayer`(**kwargs)

  基类：`object`

  `is_playing`()
  `play`()
  `play_block`()
  `stop`()

class `robot.Player.``MusicPlayer`(playlist, plugin, **kwargs)

  基类：`robot.Player.SoxPlayer`

  给音乐播放器插件使用的， 在 SOXPlayer 的基础上增加了列表的支持， 并支持暂停和恢复播放

  `SLUG` = 'MusicPlayer'
  `is_pausing`()
  `is_playing`()
  `next`()
  `pause`()
  `play`()
  `prev`()
  `resume`()
  `stop`()
  `turnDown`()
  `turnUp`()
  `update_playlist`(playlist)

class `robot.Player.``SoxPlayer`(**kwargs)

  基类：`robot.Player.AbstractPlayer`

  `SLUG` = 'SoxPlayer'
  `appendOnCompleted`(onCompleted)
  `doPlay`()
  `is_playing`()
  `play`(src, delete=False, onCompleted=None, wait=False)
  `play_block`()
  `stop`()

`robot.Player.``getPlayerByFileName`(fname)

`robot.Player.``no_alsa_error`()

`robot.Player.``play`(fname, onCompleted=None)

`robot.Player.``py_error_handler`(filename, line, function, err, fmt)

## robot.TTS module

class `robot.TTS.``AbstractTTS`

  基类：`object`

  Generic parent class for all TTS engines

  classmethod `get_config`()
  classmethod `get_instance`()
  `get_speech`(phrase)

class `robot.TTS.``AliTTS`(appKey, token, voice='xiaoyun', **args)

  基类：`robot.TTS.AbstractTTS`

  阿里的TTS voice: 发音人，默认是 xiaoyun

  > 全部发音人列表：https://help.aliyun.com/document_detail/84435.html?spm=a2c4g.11186623.2.24.67ce5275q2RGsT

  `SLUG` = 'ali-tts'
  classmethod `get_config`()
  `get_speech`(phrase)

class `robot.TTS.``BaiduTTS`(appid, api_key, secret_key, per=1, lan='zh', **args)

  基类：`robot.TTS.AbstractTTS`

  使用百度语音合成技术 要使用本模块, 首先到 yuyin.baidu.com 注册一个开发者账号, 之后创建一个新应用, 然后在应用管理的”查看key”中获得 API Key 和 Secret Key 填入 config.yml 中. …

  > baidu_yuyin:
  >   appid: ‘9670645’ api_key: ‘qg4haN8b2bGvFtCbBGqhrmZy’ secret_key: ‘585d4eccb50d306c401d7df138bb02e7’ dev_pid: 1936 per: 1 lan: ‘zh’

  > …

  `SLUG` = 'baidu-tts'
  classmethod `get_config`()
  `get_speech`(phrase)

class `robot.TTS.``TencentTTS`(appid, secretid, secret_key, region='ap-guangzhou', voiceType=0, language=1, **args)

  基类：`robot.TTS.AbstractTTS`

  腾讯的语音合成 region: 服务地域，挑个离自己最近的区域有助于提升速度。

  > 有效值：https://cloud.tencent.com/document/api/441/17365#.E5.9C.B0.E5.9F.9F.E5.88.97.E8.A1.A8

  voiceType:
    - 0：女声1，亲和风格(默认)
    - 1：男声1，成熟风格
    - 2：男声2，成熟风格
  language:
    - 1: 中文，最大100个汉字（标点符号算一个汉子）
    - 2: 英文，最大支持400个字母（标点符号算一个字母）
  `SLUG` = 'tencent-tts'
  classmethod `get_config`()
  `get_speech`(phrase)

class `robot.TTS.``XunfeiTTS`(appid, asr_api_key, asr_api_secret, tts_api_key, voice='xiaoyan')

  基类：`robot.TTS.AbstractTTS`

  科大讯飞的语音识别API. 外网ip查询：https://ip.51240.com/ voice_name: https://www.xfyun.cn/services/online_tts

  `SLUG` = 'xunfei-tts'
  `getBody`(text)
  `getHeader`(aue)
  classmethod `get_config`()
  `get_speech`(phrase)

`robot.TTS.``get_engine_by_slug`(slug=None)
  Returns:
    A TTS Engine implementation available on the current platform
  Raises:
    ValueError if no speaker implementation is supported on this platform

`robot.TTS.``get_engines`()

## robot.Updater module

class `robot.Updater.``Updater`

  基类：`object`

  `fetch`(dev=False)
  `update`()

`robot.Updater.``fetch`(dev)

## robot.config module

`robot.config.``doInit`(config_file='/Users/panweizhou/Documents/projects/wukong-robot/static/default.yml')

`robot.config.``dump`(configStr)

`robot.config.``get`(item='', default=None)

  获取某个配置的值

  参数: | item – 配置项名。如果是多级配置，则以 “/a/b” 的形式提供 default – 默认值（可选）
  返回: | 这个配置的值。如果没有该配置，则提供一个默认值

`robot.config.``getConfig`()

  返回全部配置数据

  返回: | 全部配置数据（字典类型）

`robot.config.``getText`()

`robot.config.``get_path`(items, default=None)

`robot.config.``has`(item)

  判断配置里是否包含某个配置项

  参数: | item – 配置项名
  返回: | True: 包含; False: 不包含

`robot.config.``has_path`(items)

`robot.config.``init`()

`robot.config.``reload`()

  重新加载配置

## robot.constants module

`robot.constants.``getConfigData`(*fname)

  获取配置目录下的指定文件的路径

  参数: | *fname – 指定文件名。如果传多个，则自动拼接
  返回: | 配置目录下的某个文件的存储路径

`robot.constants.``getConfigPath`()

  获取配置文件的路径

  returns: 配置文件的存储路径

`robot.constants.``getData`(*fname)

  获取资源目录下指定文件的路径

  参数: | *fname – 指定文件名。如果传多个，则自动拼接
  返回: | 配置文件的存储路径

`robot.constants.``getDefaultConfigPath`()

`robot.constants.``getHotwordModel`(fname)

`robot.constants.``newConfig`()

## robot.logging module

`robot.logging.``getLogger`(name)

  作用同标准模块 logging.getLogger(name)

  返回: | logger

`robot.logging.``readLog`(lines=200)

  获取最新的指定行数的 log

  参数: | lines – 最大的行数
  返回: | 最新指定行数的 log

`robot.logging.``tail`(filepath, n=10)

  实现 tail -n

## robot.plugin_loader module

`robot.plugin_loader.``get_plugins`(con)

`robot.plugin_loader.``init_plugins`(con)

  动态加载技能插件

  参数： con – 会话模块

## robot.statistic module

class `robot.statistic.``ReportThread`(t)

  基类：`threading.Thread`

  `run`()

    Method representing the thread’s activity.

    You may override this method in a subclass. The standard run() method invokes the callable object passed to the object’s constructor as the target argument, if any, with sequential and keyword arguments taken from the args and kwargs arguments, respectively.

`robot.statistic.``getUUID`()

`robot.statistic.``report`(t)

## robot.utils module

`robot.utils.``check_and_delete`(fp, wait=0)

  检查并删除文件/文件夹

  参数: | fp – 文件路径

`robot.utils.``clean`()

  清理垃圾数据

`robot.utils.``convert_mp3_to_wav`(mp3_path)

  将 mp3 文件转成 wav

  参数: | mp3_path – mp3 文件路径
  返回: | wav 文件路径

`robot.utils.``convert_wav_to_mp3`(wav_path)

  将 wav 文件转成 mp3

  参数: | wav_path – wav 文件路径
  返回: | mp3 文件路径

`robot.utils.``emailUser`(SUBJECT='', BODY='', ATTACH_LIST=[])

  给用户发送邮件

  参数: | SUBJECT – subject line of the email BODY – body text of the email
  返回: | True: 发送成功; False: 发送失败

`robot.utils.``getCache`(msg)

  获取缓存的语音

`robot.utils.``getTimezone`()

  获取时区

`robot.utils.``get_do_not_bother_off_hotword`()

  关闭勿扰模式唤醒词

`robot.utils.``get_do_not_bother_on_hotword`()

  打开勿扰模式唤醒词

`robot.utils.``get_file_content`(filePath)

  读取文件内容并返回

  参数: | filePath – 文件路径
  返回: | 文件内容
  引发: | IOError – 读取失败则抛出 IOError

`robot.utils.``get_pcm_from_wav`(wav_path)

  从 wav 文件中读取 pcm

  参数: | wav_path – wav 文件路径
  返回: | pcm 数据

`robot.utils.``is_proper_time`()

  是否合适时间

`robot.utils.``lruCache`()

  清理最近未使用的缓存

`robot.utils.``saveCache`(voice, msg)

  获取缓存的语音

`robot.utils.``sendEmail`(SUBJECT, BODY, ATTACH_LIST, TO, FROM, SENDER, PASSWORD, SMTP_SERVER, SMTP_PORT)

  发送邮件

  参数: | SUBJECT – 邮件标题 BODY – 邮件正文 ATTACH_LIST – 附件 TO – 收件人 FROM – 发件人 SENDER – 发件人信息 PASSWORD – 密码 SMTP_SERVER – smtp 服务器 SMTP_PORT – smtp 端口号
  返回: | True: 发送成功; False: 发送失败

`robot.utils.``write_temp_file`(data, suffix, mode='w+b')

  写入临时文件

  参数: | data – 数据 suffix – 后缀名 mode – 写入模式，默认为 w+b
  返回: | 文件保存后的路径

## Module contents