How to get all Alexa requests WITHOUT any other skills

Executive Summary
... just prefix all your house #IoT commands with "Simon Says" :slight_smile:
And then listen out for them using node-red-contrib-alexa-remote2

Obviously, being called Simon doesn't make this method sound daft to me :slight_smile:

History
I tried a few Alexa nodes out and settled on using @hardillb excellent node-red-contrib-alexa-home-skill and that has worked very well for me.

Only issue is that you have to pretend your home stuff is lights or a switch etc and limited vocab is recognised.
Also, needs an account on Ben's site and "maybe" he is getting all my Alexa commands??? but I'm not worried about Ben - its Mr Amazon that's my main privacy issue :slight_smile:

But, sometimes you need to recognise your own custom sentences. @E1cid recommended node-red-contrib-alexa-remote2 coupled with using Amazon Q&A blueprint skill. That expands what syntax you can use but also requires keeping your Node-RED stuff in sync with the Q&A skill. And it is still restrictive (You can't set Q&A skill to recognise and pass on "tv" for instance)

How I found it out
Following a discussion with @ghyane I serendipitously used the phrase "Alexa Simon Says gobblydgook" and noticed that it came straight thru to Node-RED without Alexa trying to tell me off and saying "I don't know what to do with that" :slight_smile:

If you fancy trying this out then setup alexa-remote2 node and try out my basic flow here that gets the phrase that you say plus the device that said it and filters out any un-needed other messages.

[{"id":"c09690b2.1a8fd","type":"debug","z":"925ad8ab.4246f8","name":"FILTERED","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":750,"y":20,"wires":[]},{"id":"afa5bf44.be6ab","type":"change","z":"925ad8ab.4246f8","name":"extract summary","rules":[{"t":"set","p":"name","pt":"msg","to":"payload.name","tot":"msg"},{"t":"set","p":"summary","pt":"msg","to":"payload.description.summary","tot":"msg"},{"t":"set","p":"payload","pt":"msg","to":"summary","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":760,"y":72,"wires":[["c681a553.9ef878","fa3edab0.ee1aa8"]]},{"id":"c681a553.9ef878","type":"debug","z":"925ad8ab.4246f8","name":"SUMMARY","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","x":958,"y":72,"wires":[]},{"id":"64cb021c.798e4c","type":"debug","z":"925ad8ab.4246f8","name":"ALL","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":262,"y":98,"wires":[]},{"id":"fa3edab0.ee1aa8","type":"debug","z":"925ad8ab.4246f8","name":"","active":true,"tosidebar":false,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","x":750,"y":124,"wires":[]},{"id":"19b6770f.6e0b49","type":"switch","z":"925ad8ab.4246f8","name":"Only pass SUCCESS messages","property":"payload.activityStatus","propertyType":"msg","rules":[{"t":"eq","v":"SUCCESS","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":342,"y":46,"wires":[["322641a4.2b156e"]]},{"id":"322641a4.2b156e","type":"switch","z":"925ad8ab.4246f8","name":"Filter out noise","property":"payload.description.summary","propertyType":"msg","rules":[{"t":"eq","v":"","vt":"str"},{"t":"eq","v":"alexa","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":3,"x":578,"y":46,"wires":[[],[],["c09690b2.1a8fd","afa5bf44.be6ab"]]},{"id":"323d0c34.2821a4","type":"alexa-remote-event","z":"925ad8ab.4246f8","name":"","account":"","event":"ws-device-activity","x":94,"y":46,"wires":[["19b6770f.6e0b49","64cb021c.798e4c"]]}]

Downsides
You have to use the phrase "Simon Says" - not found any method of changing that - and Alexa repeats your phrase - which could be considered a benefit of course!

[edit]26May 2020
*If you want to Alexa to speak, you can use the Alexa Routine node for this - note that it also uses the "simon says" approach to make Alexa devices speak.

So If you ask Alexa to speak "all done" then it actually sends Alexa the phrase "simon says all done".

So you have to make sure that these phrases are not one of your key phrases as you could easily end up in a howl around situation!*
[/edit]

PS I'd be grateful to keep discussion on this thread to this method - no problem to post - also see xxxxx - but lets not get into a discussion about xxxx please :slight_smile:

But entirely up to anyone :slight_smile:

PPS @ghayne You are now released from your NDA :slight_smile:

4 Likes

Hi @cymplecy.
The simon says method which works well also has restrictions, you can not set the response you require. I think what ever method you use will have restrictions, and it will be up to the end user to pick a method that works in their circumstances.
On a side note and i am not looking to side track your topic, just adding to the methods. This site allows you to build alexa/google skills with little coding, and may make it easier to get the response and voice control you want

Well I disagree - I am setting my response further on in my flows - that is the advantage of remote2 nodes - you can send your custom text back to the Alexa device that your received the command from

I listen out for "The front door is locked" (or unlocked) - I set a global context to locked/unlocked and then if I query state of front door - i send the status back to the Alexa device

So if I say "Alexa Simon Says the front door is locked" and then ask "Alexa Simon Says is the front door locked?" - Alexa repeats "Is the front door locked" pauses for 1 sec and then says "The front door is locked"

PS this is to save me having to go and re-check if I locked the front door before I goto bed :slight_smile:

That's what i am talking about, simon says, will repeat what you say. You can not have any response you wish untill after the repeated phrase. What if you want a brief response?

So as i said, all methods have their issues.

@E1cid mentioned Voiceflow in this thread.

Just registered for a free account and had a play with the product.
Really easy to make a 'voice flow' and get Alexa to say things to you.
I'm sure it can be integrated with Node-RED via API and send to endpoint URL.
I've taken advantage of the two free projects and set-up one for Alexa and one for Google Home.

Who said the Lockdown would be boring ?????

Regards, Dynamic Dave.

Bangs head on table ..........
:slight_smile:

I also found out an other way for controlls of simple commands. With routines you can build every sentence. With the actions you send an answer and switch a "virtual" light to a specific brightness.

The virtual light (for example with node-red-alexa or Alexa local) Will then send it into node red.

This is how I now start my roomba.

JFI
If you want to Alexa to speak, you can use the Alexa Routine node for this.

But note that it also uses the "simon says" approach to make Alexa devices speak.

So If you ask Alexa to speak "all done" then it actually sends Alexa the phrase "simon says all done".

So you have to make sure that these phrases are not one of your key phrases as you could easily end up in a howl around situation!

This topic was automatically closed after 60 days. New replies are no longer allowed.