Hi Thomas,
no problem. I stay at home.
reading intents : hermes/intent/#
sesion startet: hermes/dialogueManager/sessionStarted
finish session: hermes/dialogueManager/endSession
say something: hermes/tts/say
Here’s something for nodeRed (version 1):
I save the siteId and in second example the sessionId, cause in some nodes all payload are destroyed.
[{"id":"341f829c.eef3ee","type":"mqtt in","z":"27a1dcd5.ab7ad4","name":"intentIsRecognized","topic":"hermes/intent/#","qos":"2","datatype":"json","broker":"6f747297.64151c","x":110,"y":520,"wires":[["bce45bd4.746cd8"]]},{"id":"185bb0bc.bae1df","type":"mqtt out","z":"27a1dcd5.ab7ad4","name":"saySomething","topic":"hermes/tts/say","qos":"","retain":"","broker":"6f747297.64151c","x":980,"y":520,"wires":[]},{"id":"bd10ced8.e046","type":"change","z":"27a1dcd5.ab7ad4","name":"doSomething","rules":[{"t":"set","p":"payload","pt":"msg","to":"Etwas wurde erledigt","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":470,"y":460,"wires":[["237a18ca.addcf8"]]},{"id":"bce45bd4.746cd8","type":"change","z":"27a1dcd5.ab7ad4","name":"save siteId","rules":[{"t":"set","p":"mySiteId","pt":"global","to":"payload.siteId","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":310,"y":520,"wires":[["bd10ced8.e046"]]},{"id":"5ffd1b8a.cd8534","type":"change","z":"27a1dcd5.ab7ad4","name":"prepare Answer","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\t \"text\":msg.payload,\t \"lang\":\"de\",\t \"id\":\"\",\t \"siteId\":msg.siteId,\t \"sessionId\":\"\"\t \t}","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":520,"wires":[["185bb0bc.bae1df"]]},{"id":"237a18ca.addcf8","type":"change","z":"27a1dcd5.ab7ad4","name":"read siteId","rules":[{"t":"set","p":"siteId","pt":"msg","to":"mySiteId","tot":"global"}],"action":"","property":"","from":"","to":"","reg":false,"x":630,"y":520,"wires":[["5ffd1b8a.cd8534"]]},{"id":"6f747297.64151c","type":"mqtt-broker","z":"","name":"MQTT","broker":"10.2.254.1","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]
Here’s something for nodeRed (version 2):
now I also save the sessionId to end the session after answering
[{"id":"71ad8e3c.aa46c","type":"mqtt in","z":"27a1dcd5.ab7ad4","name":"sessionStarted","topic":"hermes/dialogueManager/sessionStarted","qos":"2","datatype":"json","broker":"6f747297.64151c","x":100,"y":580,"wires":[["5ef9514c.863a5"]]},{"id":"341f829c.eef3ee","type":"mqtt in","z":"27a1dcd5.ab7ad4","name":"intentIsRecognized","topic":"hermes/intent/#","qos":"2","datatype":"json","broker":"6f747297.64151c","x":110,"y":520,"wires":[["bce45bd4.746cd8"]]},{"id":"185bb0bc.bae1df","type":"mqtt out","z":"27a1dcd5.ab7ad4","name":"saySomething","topic":"hermes/tts/say","qos":"","retain":"","broker":"6f747297.64151c","x":980,"y":520,"wires":[]},{"id":"e350059e.44f328","type":"mqtt out","z":"27a1dcd5.ab7ad4","name":"endSession","topic":"hermes/dialogueManager/endSession","qos":"","retain":"","broker":"6f747297.64151c","x":970,"y":580,"wires":[]},{"id":"5ef9514c.863a5","type":"change","z":"27a1dcd5.ab7ad4","name":"saveSession","rules":[{"t":"set","p":"session","pt":"global","to":"{ \"sessionId\":msg.payload.sessionId, \"siteId\": msg.payload.siteId }","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":310,"y":580,"wires":[[]]},{"id":"bd10ced8.e046","type":"change","z":"27a1dcd5.ab7ad4","name":"doSomething","rules":[{"t":"set","p":"payload","pt":"msg","to":"Etwas wurde erledigt","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":470,"y":460,"wires":[["237a18ca.addcf8"]]},{"id":"3f2d8464.acdbdc","type":"change","z":"27a1dcd5.ab7ad4","name":"readSession","rules":[{"t":"set","p":"payload","pt":"msg","to":"session","tot":"global"}],"action":"","property":"","from":"","to":"","reg":false,"x":790,"y":580,"wires":[["e350059e.44f328"]]},{"id":"5eca4b1.2c03ab4","type":"delay","z":"27a1dcd5.ab7ad4","name":"wait 1''","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":610,"y":580,"wires":[["3f2d8464.acdbdc"]]},{"id":"bce45bd4.746cd8","type":"change","z":"27a1dcd5.ab7ad4","name":"save siteId","rules":[{"t":"set","p":"mySiteId","pt":"global","to":"payload.siteId","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":310,"y":520,"wires":[["bd10ced8.e046"]]},{"id":"5ffd1b8a.cd8534","type":"change","z":"27a1dcd5.ab7ad4","name":"prepare Answer","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\t \"text\":msg.payload,\t \"lang\":\"de\",\t \"id\":\"\",\t \"siteId\":msg.siteId,\t \"sessionId\":\"\"\t \t}","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":520,"wires":[["185bb0bc.bae1df","5eca4b1.2c03ab4"]]},{"id":"237a18ca.addcf8","type":"change","z":"27a1dcd5.ab7ad4","name":"read siteId","rules":[{"t":"set","p":"siteId","pt":"msg","to":"mySiteId","tot":"global"}],"action":"","property":"","from":"","to":"","reg":false,"x":630,"y":520,"wires":[["5ffd1b8a.cd8534"]]},{"id":"1472dd78.aa2e53","type":"mqtt in","z":"27a1dcd5.ab7ad4","name":"sessionEnded__","topic":"hermes/dialogueManager/sessionEnded","qos":"2","datatype":"json","broker":"6f747297.64151c","x":100,"y":640,"wires":[["2fbaa744.027eb8"]]},{"id":"2fbaa744.027eb8","type":"debug","z":"27a1dcd5.ab7ad4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":290,"y":640,"wires":[]},{"id":"6f747297.64151c","type":"mqtt-broker","z":"","name":"MQTT","broker":"10.2.254.1","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]
Here’s something for nodeRed (version 3):
I was always not happy with the numbered array of the slots. So I changed them to own variables. Also, if now room is said ithe the intent, the actual sideId is taken. Both is in the function node in javascript:
Heres the nodeRed nodes:
[{"id":"9d9044a8.bb4108","type":"mqtt in","z":"27a1dcd5.ab7ad4","name":"FromRhasspy","topic":"hermes/intent/#","qos":"2","datatype":"json","broker":"6f747297.64151c","x":410,"y":680,"wires":[["be3c58cb.88e6a8"]]},{"id":"be3c58cb.88e6a8","type":"function","z":"27a1dcd5.ab7ad4","name":"createNewSlots","func":"var slots = {\"room\":msg.payload.siteId}\nfor (var i in msg.payload.slots){\n slots[msg.payload.slots[i].slotName] = msg.payload.slots[i].value.value\n}\nmsg.slots = slots\n \nreturn msg","outputs":1,"noerr":0,"x":600,"y":680,"wires":[["a7e5d908.ebc348"]]},{"id":"a7e5d908.ebc348","type":"debug","z":"27a1dcd5.ab7ad4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":770,"y":680,"wires":[]},{"id":"6f747297.64151c","type":"mqtt-broker","z":"","name":"MQTT","broker":"10.2.254.1","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]