Rokid webhook 指南 手把手教你做个懒人
若琪用户 Amadeus 在社区里分享过很多视频。当你进门10秒后还未关闭房门,若琪会一直报警提醒;当你走进门后将门反锁的那一刻,若琪会为你播报今天的天气、为你播放设定的轻音乐。
看到这些视频中对传感器、智能情景的熟练运用,你很难想象他们都出自一名跟互联网和 IoT 都不相关的国家公职人员之手。作为一个智能家居爱好者,他不会编写代码,却仔细地去研究每一个变量代表的含义,并事无巨细地在若琪开发者社区和大家分享如何拓展若琪 webhook 功能。
现在把文章分享给大家。
以下摘录于 Amadeus 开发日记:
《如何使用 Rokid 的 webhook 功能》
最近一些智能家居用户,尤其是 AmazingBOX 用户,在很多智能家居场景中使用了若琪提供的webhook 功能,让若琪进行 TTS 语音播报和音乐的播放。如回家打开智能锁,不用语音唤醒,不说语音命令,若琪就能为你播报现在的时刻、室内的温湿度以及播放背景音乐等。大家感觉这种操作非常酷炫,于是纷纷在 Rokid 的 app 中寻求这种设置的帮助。但打开 Rokid 的 app,却发现设置无从下手,因为对于小白来说这些基本看不懂。
那么,AmazingBOX 用户为什么能够轻而易举地进行 TTS 语音播报的设置和音乐的播放设置呢? 这是因为 AmazingBOX 的情景设置页面里有若琪的插件。
如下图:
下面就为 AmazingBOX 新用户讲述如何使用若琪插件。
若琪插件在使用时,需要添加序列号和 webhook token 地址。打开若琪插件,点击右上角的问号,会出现操作引导,跟着引导走。webhook 创建后,就可以看到 Webhook token 地址了。一定要使用下图红框中的部分,有的用户把整个地址添加到若琪插件,结果若琪不出声,浪费了许多时间。建议添加序列号和 Webhook token 地址时采用复制粘贴,不要用键盘一个一个地键入。由于序列号和Webhook token 地址经常使用,建议把序列号和 Webhook token 地址保存在一个文本文件里。粘贴时要在输入框的起始位置粘贴,前面不要有空格。
有了若琪产品序列号和 Webhook token 地址,如何开始播报设置呢?
基本概念
设备分为实体设备和非实体设备。温湿度传感器的属性就是实体设备的属性,日期时间这样的属性就是非实体设备的属性。
举例1:温湿度传感器的温湿度数值就是温湿度传感器的属性;
举例2:智能门锁的门磁状态、锁舌状态等就是智能门锁的属性。
有的属性是用数字表示的,并且不带单位,如温湿度传感器的温湿度数值,有的属性是用文字表示的,如智能门锁的各种状态。无论是数字表示还是文字表示,这些属性的值都是会变化的,都是变化着的量,所以就有了变量的说法。
播报实体设备的属性非常简单,播报非实体设备的属性需要用到变量或插件,变量里需要书写代码,不会书写代码可以复制粘贴大神们散布出来的各种代码。
下面先介绍实体设备的属性播报。
图示举例:
下图表示在 AmazingBOX 的情景流程设计中,点开若琪插件,出现动作属性设定,选择播放语音会让你填入播放内容,点击属性按钮,会出现选择设备的输出属性,如果想播放温湿度的数值,我们就点击小三角然后选择温湿度传感器,AmazingBOX 的温湿度传感器有较多属性,需要什么属性就加入什么属性。该图选择的是温度属性,显示的当前变量值即属性值是20.0,语音播报出来就是读成“二十点零”,没有单位读音,单位需要我们自己添加。
下图表示的是选择智能门锁的门磁属性
具体操作
如何让若琪播报实体设备属性的值呢?方法非常简单,操作特别方便,适合 AmazingBOX 拥有若琪、龙猫和 usb 播报设备的用户。
首先,打开 AmazingBOX 的电脑情景流程设计面板,建一个手动流程,触发流程、周期流程也可以。“手动→若琪插件”,这就是手动流程的基本框架,图示如下:
具体步骤:
将“开始”拖入,然后选择其中的“手动”;
将若琪插件拖入;
用线将“手动”和“若琪插件”连接;
在若琪插件中填写内容;
将流程终点的实心点,点击成圆圈,表示流程结束。
那么怎样填写我们想要播报的设备属性呢?我们点开若琪智能家庭机器人,会出现下面的图:
我们在播放内容的框里需要填上设备的属性和一些固定不变的文字,设备属性的书写有一定规范,涉及格式、端末名称、属性名称等,如果是打字输入就难了,好在不是打字输入。点开播报内容框右面的(x),这个叫属性按钮,选择要播报的设备名称(注意:设备不要有重名,需要设备配对入网后就个性化命名),然后点击属性名称,选择需要的属性,点击确认,播报内容里出现“@xxxx.xx;”双引号里面的部分,属性的规范书写格式自动出现在里面了。注意:;,这个分号是键盘英文输入状态下的分号。
图示举例如下这张图表示我选择了温湿度传感器的两个属性,温度和湿度,如果这时候保存流程并试听流程,我们听到的只是数字,连单位都没有,所以我们需要在属性的一左一右添加文字、单位和标点符号等。
我们添加内容都是在上图的红色框以外添加,红色框内的部分是设备的属性名称,千万不要破坏。
这张图表示在属性外用文字及标点符号串联属性,播放出来的效果是“当前室内温度是x℃,室内湿度是百分之x。”, x是设备属性的数字值,是变化的量,简称变量。我们输入文字和标点符号时尽量规范,因为播报内容在若琪app里有反馈。另外,标点符号有停顿效果,听起来不那么快。
以上就是用语音播报实体设备属性的基本设置, 这种设置适用于实体设备的属性播报。那么非实体设备的属性如何播报呢?这就涉及到了变量,真正意义的变量。
举例:“今天是2018年4月20日,星期5,现在是17点10分。” 这段话如何播报呢?这段话里的数字是会变化的,这样的播报流程就需要在若琪插件前加上变量应用。
手动流程的大框就是如下图。
.
那么变量应用如何应用呢?点开变量应用,会出现下图,点击右上角的“?”,就会出现变量的使用说明
使用说明精读几遍,虽然读不懂,但也能有个了解,知道了变量应用的大框我们就能读懂带变量应用的流程了。那么“今天是2018年4月20日,星期5,现在是17点10分。”这句话怎样在变量应用的流程里设置呢?看下图:
这张图是把变量应用节点展开后的图,并且填上了动作代码和保存变量列表。
我们仔细看动作代码输入框里的动作代码,发现有三行代码,分别是日期代码、时间代码和星期代码。还发现有等于号,等于号左边的部分也添加到了保存变量列表里了。我们这样理解,每一行代码相当于一个数学公式,跟勾股定理(a²+b²=c²)比较一下,上图中等于号左边的部分相当于c²,等于号右边的部分相当于a²+b²,等于号右边一变化,等于号左边就出现一个值,我们就让若琪播放这个值,所以要把等于号左边的部分填入到若琪插件中。如下图
我们在若琪插件中填写的变量名称一定要符合规范,千万不要输错。
如果这时保存流程并运行,仔细一听,设备读出的是“2018年4月20日 5 10点10分”了。也就是说“@日期;”这个变量名称输出为“2018年4月20日”,“@week;”这个变量名称输出为“5”,“@时间;”这个变量名称输出为“10点10分”。
如前所述,我们需要在播报内容里的“@日期; @week; @时间; ”双引号里的属性之间或属性前后加上文字和标点符号,也就是变成类似这样“今天是@日期;,星期@week;,现在是@时间; 。”, 这样若琪播放出来就是“今天是2018年4月20日,星期5,现在是17点10分。”了。
变量里代码的书写是关键,需要学习,达到一定学识才能会写,如果不想学,可以使用大神们书写的代码,大神们书写了各种各样的代码,足够我们使用了。
上例中的变量代码如下:
@日期;=date("Y-m-d",time()+60*60*8);@时间;=date("H:i",time()+60*60*8);@week;=date("w",time()+60*60*8);
这些代码都是大神写的,我不会写,我只是会复制粘贴。
@日期;=date("Y-m-d",time()+60*60*8);
这个变量输出的值是年月日。有时我们感觉若琪把年说出来有些磨叽,只想要若琪读出月日,感觉简洁一些。怎么办?我们看这段代码的结构。能猜出来Ymd分别代表年月日。那么,我们把Y去掉,不就是只输出月和日了吗?我们把Y去掉,就是这样写的:
@日期;=date("m-d",time()+60*60*8);
这样若琪读出来,数据就不带有年了,只有月日。我们去到若琪里验证。发现,确实是没有年的发音了。但是,若其把4月23日读成了4比23了,怎么办?我们还有办法。我们可以单建一个月份的变量,再单建一个日期的变量。单独的月份的变量代码是这么写的:
@月;=date("m",time()+60*60*8);
单独的日期的变量代码是这么写的:
@日;=date("d",time()+60*60*8);
这样我们就把月和日拆分开了。那么,我们在若琪插件里怎么填写呢?首先我们把变量名称添加进去。就是把@月;和@日;添加进去,然后怎么办?应该明白了吧。
通过这个例子,我们能知道,我们虽然不会写代码,但是能够看懂代码,也能够修改代码为我所用。
@week;=date("w",time()+60*60*8);
这个代码,输出的是0,1,2,3,4,5,6。我们运用一周这个代码,会发现,若琪插件里填写的“星期@week;”,输出星期2时读成了星期两,星期日读成了星期0,因为输出的就是星期0,怎么办,有办法?大神们的智慧是无穷的。看下面的代码:
@星期;=$wk[date("w",time()+60*60*8)];
$wk=array("日","一","二","三","四","五","六");
用这个代码,输出"日"、"一"、"二"、"三"、"四"、"五"、"六",我们在变量名称前面加上星期填入若琪插件里,就是把“星期@星期;”填入到若琪插件里,这样若琪输出的就是“星期日一二三四五六”了,而且若琪app里的反馈,数字也是大写的了。
部分代码汇总如下:
@日期;=date("Y-m-d",time()+60*60*8);@月;=date("m",time()+60*60*8);@日;=date("d",time()+60*60*8);@时间;=date("H:i",time()+60*60*8);$wk=array("日","一","二","三","四","五","六");@星期;=$wk[date("w",time()+60*60*8)];
今天的分享就到这里~
点击原文参与讨论
相关文章:

Task04:青少年软件编程(Scratch)等级考试模拟卷(二级)
电子学会 软件编程(图形化)二级训练营 试题来源 青少年软件编程(Scratch)等级考试试卷(二级)【2019.09】青少年软件编程(Scratch)等级考试试卷(二级)【2019…

Python数字类型及操作汇总(入门级)
1. 整数类型 2. 浮点数类型 带有小数点及小数的数字 取值范围和精度都有限制,但常规计算可忽略不计(基本无限制) 注意:浮点数运算存在不确定尾数(不是bug,一般发生在10-16左右,因为计算机内部用二进制表示,…

FCKeditor如何升级CKEditor及使用方法
之前编辑器用的是FCKeditor,因为项目原因需要升级为最新版本4.2.2,发现是已经更名为CKEditor。 百度了一下,据官方的解释,CK是对FCK的代码的完全重写。 项目环境是asp.net的,之前用的FCKeditor版本是2.6。 在aspx文件头…

【新周报(045)】青少年编程竞赛交流群周报
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。 为了完成二月份青少年编程公益训练营的活动,本周整理了以往收集的电…

Xshell5中常用linux服务器命令集合
简易版:http://www.zhimengzhe.com/linux/84546.html 详细版:http://www.cnblogs.com/peida/tag/%E6%AF%8F%E6%97%A5%E4%B8%80linux%E5%91%BD%E4%BB%A4/default.html?page4转载于:https://www.cnblogs.com/keye/p/8982440.html

C++设置每屏显示的行数简易办法
定义计数变量counter if ((counter) % 22 0) { //每屏显示22行 cout << "请按回车键继续";cin.get(); }效果

挖坑挖到cnblogs.com来...
这几年一直在cppblog.com上敲字, 因为开帖时满脑袋都是C, 所以选了它~ 懒懒散散竟然也敲了四年多, 真是难得的有毅力啊~ 回头看看这一年越来越不务正业了,C越来越少, 到是当年看着不爽的Java越来越多~唉, 语言只是工具而已, 当年为何如此偏执~ 本来就想在cppblog.co…

vue项目踩坑
由于上一个小项目写的很次,这一次打算好好地写一个博客系统,最近刚刚结束了管理员的管理端的编写。其中遇到了很多小坑。 其实只能说自己vue用的不是特别熟练吧。很多问题都有些想当然了,实现起来发现了很多的问题。简单的记录几个我自己认为…

【NCEPU】王子朝:神经网络、支持向量机原理
王子朝 是华北电力大学计算机系大四的学生,LSGO软件技术团队(Dreamtech算法组)成员,参加了多期Datawhale的组队学习活动,现保送西安电子科技大学深造。 希望参与我们线下组队学习的同学,可以在微信公众号后…

C++ 枚举类型基本知识
1.定义 enum <类型名> {<枚举常量表>};2.说明 关键字enum——指明其后的标识符是一个枚举类型的名字。 枚举常量表——由枚举常量构成。枚举常量只能以标识符形式表示,而不能是整型、字符型等文字常量。 非法定义: enum letter_set {a,d…

ES6常用语法
主要总结一些 ES6 常用的语法及知识点,其次就是总结一下在 ES6 使用过程需要注意的重点 常用语法 常量 // es5常量 var person {name: shi } Object.defineProperty(person, sex, {writable: false,value: man })// es6常量 const sex man; 复制代码多行字符串和模…

【NCEPU】吴丹飞:(CSAPP)计算机系统漫游
吴丹飞是华北电力大学数理系大三的学生,LSGO软件技术团队(Dreamtech算法组)成员,参加了多期Datawhale的组队学习,荣获多期优秀队长的称号。 希望参与我们线下组队学习的同学,可以在微信公众号后台回复 线下…

Python字符串类型及操作总结
1.字符串表示 两种类型四种表示 单行-一对单引号或一对双引号 “python” ‘python’ 多行-一对三单引号或一对三双引号 ‘’’python’’’ “””python””” (三单引号形成的是字符串,但也可以用作多行注释) 如果字符串中出现双引号,则两边要用单引…

python利用wx.grid网格显示数据
首先需要定义类似数据模板的类。 import wx.grid as gridclass MyDataTable(grid.PyGridTableBase):def __init__(self,data,colLabelsNone):grid.PyGridTableBase.__init__(self)self.colLabels colLabelsself.data datadef GetNumberRows(self):return len(self.data)def G…

Linux Test Project 测试套件说明
LTP(Linux Test Project) Linux Test Project 是由SGI、OSDL和Bull开发和维护的一个项目,由IBM、思科、富士通、SUSE、Red Hat、Oracle和其他公司共同开发和维护。该项目的目标是向开源社区提供测试用例,以验证Linux的可靠性、健壮…

Python time库的使用总结
1. 简介 time库是Python中处理时间的标准库 -计算机时间的表达 -提供获取系统时间并格式化输出功能 -提供系统级精确计时功能,用于程序性能分析 2. 用法 import time time.() 3. 函数 主要有三类: -时间获取:time() ctime() gmtime() -时…

Android静态变量的生命周期
Android是用Java开发,其静态变量的生命周期遵守Java的设计。我们知道静态变量是在类被load的时候分配内存的,并且存在于方法区。当类 被卸载的时候,静态变量被销毁。在PC机的客户端程序中,一个类被加载和卸载,可简单的…

Python3基础笔记---面向对象
只是对一些新的知识的记录 1、创建类 class ClassName:<statement-1>...<statement-N> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性。 __init__() 方法可以有参数 2、方法 (…

【NCEPU】凌亮:Linux实践
凌亮是华北电力大学数理系大二的学生,LSGO软件技术团队(Dreamtech算法组)成员,参加了多期Datawhale的组队学习。 这篇图文是他在每周五晚参加线下组队学习活动时的分享。 希望参与我们线下组队学习的同学,可以在微信…

Python控制结构总结
-程序的控制结构共三种 顺序结构:程序按照线性顺序逐渐执行 分支结构:程序根据条件有选择的向程序运行方向执行 循环结构:程序根据一定条件在运行之后返回执行 一、分支结构 单分支结构 if <条件>:<语句块>类似&am…

MP实战系列(二)之集成swagger
其实与springspringmvcmybatis集成swagger没什么区别,只是之前写的太不好了,所以这次决定详细写。 提到swagger不得不提rest,rest是一种架构风格,里面有对不同的资源有不同的请求标识。例如PUT,POST,GET,DELETE,OPTIONS,HEAD,PATC…

Task04:青少年软件编程(Python)等级考试模拟卷(一级)
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。 电子学会 软件编程(Python)一级训练营 试题来源 青少…

Python 解决一行代码分成多行及多行代码放在一行
一行代码分成多行 使用 目的:当某一行代码较长,可以增强程序的可读性 for k in range(N):pi 1/pow(16,k)*(\4/(8*k1) - 2/(8*k4) - \1/(8*k5) - 1/(8*k6)) print("圆周率值是:{}".format(pi))多行代码放在一行 使用分号 目的:可…

Task05:青少年软件编程(Python)等级考试模拟卷(一级)
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。 电子学会 软件编程(Python)一级训练营 试题来源 青少…

控件的实际大小与呈现大小
实际大小: label_Mark.Width 100; label_Mark.Height100; 呈现大小: label_Mark.RenderSize new Size(50, 50);转载于:https://www.cnblogs.com/changbaishan/p/3406004.html

MXNet动手学深度学习笔记:卷积计算
为什么80%的码农都做不了架构师?>>> #coding:utf-8卷积计算import mxnet as mx from mxnet.gluon import nn from mxnet import ndarray as nd# 卷积层 # 输入输出的数据格式是: batch * channel * height * width # 权重格式:ou…

Python求100以内的素数和并输出
#求100以内的素数并输出 def isPrime(num):for i in range(2,num):if num%i 0:return Falsereturn True sum 2#1不是素数,2是素数#对[3,100)内的整数逐一进行判断 for i in range(3,100):if isPrime(i):sum iprint(sum)优化版: from math import sqr…

Android KTV
KTV声音实时回放 http://www.cnblogs.com/mythou/tag/android/ Android上用speex做回音消除 http://blog.csdn.net/fireworkburn/article/details/12781985 Android 平台语音通话及回音消除、噪音消除研究 http://blog.csdn.net/AudioAEC/article/details/12685921 Android 实时…

毛慧昀:决策树实现对鸢尾花数据集的分类
毛慧昀是华北电力大学计算机系大三的学生,LSGO软件技术团队(Dreamtech算法组)成员,参加了多期Datawhale的组队学习,荣获多期优秀队长的称号。 这篇图文是她在每周五晚参加线下组队学习活动时的分享。 希望参与我们线…

golang strings.Fields 使用
2019独角兽企业重金招聘Python工程师标准>>> s : "Hello 世\n界!\tHe\vl\flo!" ss : strings.Fields(s) 输出 ["Hello" "世" "界!" "He" "l" "lo!"] 分割规则是 var asciiSpace [256]uint8…