# Rokid - [我是怎么玩 Rokid 开发套件的](#/1) - [我是怎么玩 Rokid 技能开发的](#/2) - [记事本](https://github.com/RokidSkills/notepad-nodejs) - [化学百科](#/3) - [测试](#/4) Note: 记事本是本人开发的第一个 Rokid 技能,里面包含了关于 rfs 的大部分特性,同时增加了单独的 Handler 加载器,但从目前效果来看,和 rfs 的特性的兼容还是存在一些问题的,比如:emit、db 等。之所以要重写一个 Handler 加载器,目的是为了对 Handler 统一管理、统一调试,毕竟第一个技能,对相关的功能还不是太熟悉,同时也是为了统一处理 db、session 等数据的加载和保存。最后总结这个技能的开发体会就是,基本了解了语音技能开发是怎么一回事,以及在通过对 RokidOS 源码的阅读的过程中,也找到了一些如何处理其中兼容性的可能有效的方法。 --- ## 我是怎么玩 Rokid 开发套件的 - 开发配置 - [Terminal](#/1/1) - [ADB](#/1/2) - [IDE](#/1/3) - Rokid 相关 - [Wifi 配置](#/1/4) - RokidOS - [一些 Rokid 服务](#/1/7) - [一些可能常用的命令](#/1/8) [<](#/) -- ### Terminal - macOS: - [iTerm2](https://github.com/gnachman/iTerm2) - [oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh) - Windows: - [Cmder](https://github.com/cmderdev/cmder) - [配置文件](/res/configs/cmder_win10.xml) [<](#/1) Note: 这里主要用于通过命令行对 Rokid 开发板的管理、访问、调试。 -- ### ADB - 端口 - 默认端口:5037 - 自定端口环境变量:ANDROID_ADB_SERVER_PORT - 默认端口:50370 - 命令 - adb shell - adb connect HOST[:PORT] - adb push - adb pull [<](#/1) Note: 防止与本地的 ADB 端口冲突。毕竟使用的不是同一个路径下的 adb。 -- ### IDE - [Visual Studio Code](https://code.visualstudio.com/) - [REST Client](https://marketplace.visualstudio.com/items?itemName=humao.rest-client) [<](#/1) Note: 为什么选 Visual Studio Code,是因为比 Atom 快,没有 sublime text3 偶尔的弹窗。(纯个人观点及体会) -- ### Wifi 配置 - 直接添加 Wifi 连接信息 - 通过 APP 蓝牙配置连接信息 [<](#/1) Note: 在刚开始把玩 Rokid 的时候,急于使用,而没有去研究细节,其实在配网过程中,通过 adb 直接修改连接参数是最直接的方法。前期蓝牙配网经常不顺,本人怀疑是电源电压问题导致无法正常启动 WiFi,不过到了后期,蓝牙配网也挺顺的。 -- #### 直接添加 Wifi 连接信息 ```sh /data/system/wpa_supplicant.conf ``` ```ini [] ctrl_interface=/var/run/wpa_supplicant update_config=1 network={ ssid="WiFi_A" scan_ssid=1 psk="******" } network={ ssid="WiFi_B" scan_ssid=1 psk="******" } ``` -- #### 通过 APP 蓝牙配置连接信息 - APP 内页面点击 6 下进入开发板配网模式 - APP 内直接通过 Pebble 方式配网 - 若掉线,喊两声音“若琪”,进入配网模式 -- ### 一些 Rokid 服务 | 名称 | 描述 | | -------------------- | ----------------------------------------------- | | vui.service | 用户语言交互服务 VUI | | www.service | 位于 80 端口的 WWW 服务,可以直接进行上传包升级 | | btflinger.service | 蓝牙控制服务 | | lumenflinger.service | 彩灯控制服务 | | ttsflinger.service | 从文本到语音 | | wifimonitor.service | Wifi 管理 | [<](#/1) Note: VUI 用于接收用户指令并解析执行 -- ### 一些可能常用的命令 ```sh systemctl restart vui # 重启 vui 服务 journalctl -u vui -f # 查看 vui 服务日志 ``` [<](#/1) --- ## 我是怎么玩 Rokid 技能开发的 [<](#/) --- ## 化学百科 > 一个比较『啰嗦』的关于化学元素常用信息的查询技能 - [线上准备](#/3/1) - [资料准备](#/3/2) - [脚手架](#/3/3) - [目录结构](#/3/4) - [语音交互](#/3/5) [<](#/) -- ### 线上准备 - [创建新技能](https://developer.rokid.com/skill/#/edc/info/) - 开放性:公开 - 技能类型:自定义技能 - 技能名称:化学百科 - 入口词:化学百科 - 语言:中文 - 场景化展示:非场景化 [Action.form](https://developer.rokid.com/docs/3-ApiReference/cloud-app-development-protocol_cn.html#32-action%E5%AE%9A%E4%B9%89) [<](#/3) -- ### 资料准备 - [元素周期表](https://baike.baidu.com/item/%E5%85%83%E7%B4%A0%E5%91%A8%E6%9C%9F%E8%A1%A8/282048) [<](#/3) -- ### 脚手架 - 安装 [Yeoman](http://yeoman.io/) ```sh npm install -g yo ``` - 安装 [generator-rokid](https://github.com/Rokid/generator-rokid) ```sh git clone https://github.com/Rokid/generator-rokid cd generator-rokid npm link ``` - 骨架生成 ```sh yo rokid:rfs ``` [<](#/3) Note: [阿里云 npm 镜像](https://npm.taobao.org/) -- ### 目录结构 | 文件 | 说明 | | --------------- | ------------------ | | src/rfs.js | Rokid Force 主文件 | | src/intent.json | 意图定义 | | src/lib | 公共库目录 | [<](#/3) -- ### [x] 语音交互 开场 - < “若琪,打开化学百科” - \> “请说出你要查询的元素序号或化合物名称” [<](#/3) -- ### [x] 语音交互 帮助 - < “若琪,帮助” - \> “告诉我,你要查询的元素序号或化合物名称,我告诉你它们的详细信息。” [<](#/3) -- ### [x] 语音交互 互动 查询 - < “2 号元素” | “介绍下 2 号元素” | “2 号元素是什么” - \> “2 号元素是氦,符号为 He,相对原子质量为:4.003,价电子为:1s2,常见化合价为:0,属于:主族、非金属、稀有气体,最难液化,稀有气体。” - < “2 号元素简介” - \> “2 号元素是氦,符号为 He,相对原子质量为:4.003,价电子为:1s2,常见化合价为:0。” [<](#/3) -- ### [x] 语音交互 互动 统计 - < “我喜欢查什么元素 | 我喜欢查询什么元素” - \> “你最喜欢查询的元素有:氢、氟。” - < “"查询记录 | 查询统计"” - \> “您最近查询了:氢:1 次、氟:1 次。” [<](#/3) Note: 第一种交互方式,啰嗦。 -- ### [x] 语音交互 互动 清空统计 - < “清空记录” - \> “记录已清空。” [<](#/3) -- ### 语音交互 互动 书签 > 貌似并没有什么用 - < “记下刚才的元素” - \> “你刚才查询的元素:氟,记录成功。” - < “记下 1 号元素 | “记录 1 号元素” - \> “1 号元素已记住。” - < “记录列表” - \> “你记录的元素有:碳、硅。” [<](#/3) -- ### [x] 语音交互 结束 - < “若琪,关闭化学百科” - \> “化学百科已关闭,欢迎再次使用。” [<](#/3) --- ## 测试 - 关于 [REST Client](https://github.com/Huachao/vscode-restclient/pull/164) 的待合并的新特性的期待 --- ## 感谢 [](https://github.com/rokid) BOSS、 [Yorkie](https://github.com/yorkie)、 大发、 Rokid 开发社区交流群 …… --- The End.