airwb 发表于 2023-1-9 11:41:26

nodered中小爱tts节点如何设置队列消息

nodered中,如果有多个消息先后到达小爱tts节点,小爱tts节点默认的是重置,后来的消息会打断前面的消息,怎么设置成队列的模式,前面的消息播放完后再播放后面的消息

bainiu 发表于 2023-1-9 15:11:24

本帖最后由 bainiu 于 2023-1-9 15:16 编辑

想了个思路,供参考。

1、将消息队列限制速率,每5秒放行一个(用delay节点)

2、用函数将每条过来的消息新增(读取原消息再叠加本次消息),用函数flow.set ("message","msg.text") 写入flow ,用数组保存。

3、另开一个节点每5S读取flow的信息flow.get("message"),如果不为空,则触发:用等待节点,即等小爱音箱状态state, 当msg.data.state == "paused"时音箱空闲,取1条消息 msg.payload输出,同时只删除这条消息。

4、这样每5秒会去读一次flow里的消息,当被队例读完,即清空了。完整播放结束。

airwb 发表于 2023-1-9 15:40:48

bainiu 发表于 2023-1-9 15:11
想了个思路,供参考。

1、将消息队列限制速率,每5秒放行一个(用delay节点)


感谢分享,虽然理解起来有点难度,我试着做一做

airwb 发表于 2023-1-9 15:43:42

bainiu 发表于 2023-1-9 15:11
想了个思路,供参考。

1、将消息队列限制速率,每5秒放行一个(用delay节点)


ha的自动化里面有4种模式,nodered能否跟ha的4种模式进行联动

bainiu 发表于 2023-1-9 16:05:34

airwb 发表于 2023-1-9 15:43
ha的自动化里面有4种模式,nodered能否跟ha的4种模式进行联动

可以联动的。如果你不用flow存储消息,也可以用write和read节点写入和读取text文档。过来一条消息就新增进text文档,读取文档转换为数组,播放一条删除一条。

xiesimple 发表于 2024-4-23 17:55:27

已解决,链接https://bbs.hassbian.com/forum.php?mod=viewthread&tid=25073&page=1&extra=#pid598625
页: [1]
查看完整版本: nodered中小爱tts节点如何设置队列消息