Actionable Notifications via Alexa Media Player

I wonder if Amazon has changed something? When importing code from AlexaActionsNoBinaryLinux I hear the appropriate question at first but no matter what I say, I then hear “you have triggered the Fallback Intent”. Importing from AlexaActionsWithBinaryLinux changes the response to “you have triggered the HelloWorld Intent”. Same thing in the developer console.

Same here. I just installed the skill. I’m getting the appropriate question. But it doesn’t matter what I answer, Alexa always says: “You just triggered AMAZON.FallbackIntent.”

Can anyone help? That would be great!

@tbearman

Hey there, guess who cracked the code?

So, here’s the scoop: head on over to your Alexa developer console and open your skill. Then, venture over to the right side of the screen, where all the cool stuff hides, and dive into the menu under “Interaction Model” > “Intents” > “JSON Editor”. Now, here’s the kicker: when I peeked, I only saw a measly 6 intents lounging around. Can you believe it?


(Look up in the top left corner of the menu. There’s this little gem labeled “Intents” with a number 6 next to it.)

The intents for the yes and no responses were missing. Sneaky little devils, aren’t they? You need to add these to the JSON party. You can find the intents for your JSON-File at this link.

Pick your language, then slap that messy chunk of text into the JSON editor and click on “save”. Once that’s done, voila! The yes and no intents are ready.


(Look up in the top left corner of the menu. Now we have 11 intents.)

Now it’s time for the magic button: give that “Build Skill” a good ol’ clickety-click, and watch the sparks fly!

Keep on rocking’!

Stay crispy 8)

@Flutz

Hah! You are a brilliant man/woman/entity. :smile: Thanks for that!

Crispy critters “'R” us… :sunglasses:

This is fixed and Wiki has been updated. [Bug]: Chapter: "Alexa Talking to Home Assistant (The Skill)" - Not working at all! · Issue #242 · keatontaylor/alexa-actions · GitHub

I’ve been tearing my hair out for a few days now trying to figure this one out. I suspect it’s probably a bug.
I have installed the skill successfully, and set up HA as shown in the example with the simple Yes or No example.
Yes or No response works perfectly with an event being generated to HA as expected.
However my primary use case for this feature is the No Response case where the user does not say anything when Alexa asks “Yes or No”, and that’s where things go wrong.
Using my Echo Dot as the Alexa device, the no response case works perfectly.
The Dot says “Yes or No”
The Dot waits for a response for about 10s with the ring light on.
HA gets the event with event_response: ResponseNone, event_response_type: ResponseNone

HOWEVER, now using my Fire Tablet, or Echo Show 8 as the Alexa device, the no response case fails (Yes or No cases work perfectly).
The Fire says “Yes or No”
Screen on the Fire or Show changes to black screen with “Alexa Actionable Notifications” in the middle, and “To quit, try “Alexa exit”” at the bottom left.
Flashing blue bar appears at bottom of screen.
After about 25s the blue bar disappears.
After about 55s the black screen saying “Alexa Actionable Notifications” disappears and the screen goes back to the normal Show or Fire screen.
HA never gets any event.

If I now call the skill again after a few minutes, HA will IMMEDIATELY get a No Response event.
It’s almost as if the No Response event was buffered somewhere and now it gets sent.

If I say “Alexa exit” while the Alexa Actionable Notifications screen is up on the Fire or Echo show, HA will get the No Response event.

It seems devices with a screen like the Echo Show or Fire Tablet behave very differently to devices without a screen like the Echo Dot.
I found this article on the Amazon Developer website where it talks about How devices with screens affect the skill session
https://developer.amazon.com/en-US/docs/alexa/custom-skills/manage-skill-session-and-session-attributes.html
I tried playing around with setting shouldEndSession = True or False in LaunchRequestHandler but didn’t seem to help.
e.g. handler = handler_input.response_builder.speak(speak_output).set_should_end_session(False)

On a side note I was able to customize the screen that pops up on the Show by doing this:
from ask_sdk_model.ui import SimpleCard
handler = handler_input.response_builder.speak(speak_output).set_card(SimpleCard(“Hello World”, speech_text))
Maybe a useful feature in the future !

I captured logs for the passing Echo Dot case and the failing Echo Show case.
In the passing case I see “Session Ended Request Handler triggered” happening.
In the failing case this never seems to happen.

Passing case:-

INIT_START Runtime Version: python:3.8.v51	Runtime Version ARN: arn:aws:lambda:us-east-1::runtime:a768321bd39c88f083afe0a045064adc3615105a319dbbcd583856654db68283
START RequestId: 8c2f795b-cefd-438e-86ca-88851365c076 Version: 22
Locale is en
[INFO]	2024-06-27T15:18:07.370Z	8c2f795b-cefd-438e-86ca-88851365c076	Locale is en
[DEBUG]	2024-06-27T15:18:07.682Z	8c2f795b-cefd-438e-86ca-88851365c076	Raw response: b'{"entity_id":"input_text.alexa_actionable_notification","state":"{\\"text\\": \\"Yes or no?\\", \\"event\\": \\"alexa_actionable_notification_test\\", \\"suppress_confirmation\\": \\"\\"}","attributes":{"editable":true,"min":0,"max":255,"pattern":null,"mode":"text","friendly_name":"alexa_actionable_notification"},"last_changed":"2024-06-27T00:02:08.619833+00:00","last_reported":"2024-06-27T00:02:08.619833+00:00","last_updated":"2024-06-27T00:02:08.619833+00:00","context":{"id":"01J1BFZRK7T1DT30P1N6MB55ND","parent_id":null,"user_id":"64697241df824d8fb8d27628a5ed30fe"}}'
Raw response: b'{"entity_id":"input_text.alexa_actionable_notification","state":"{\\"text\\": \\"Yes or no?\\", \\"event\\": \\"alexa_actionable_notification_test\\", \\"suppress_confirmation\\": \\"\\"}","attributes":{"editable":true,"min":0,"max":255,"pattern":null,"mode":"text","friendly_name":"alexa_actionable_notification"},"last_changed":"2024-06-27T00:02:08.619833+00:00","last_reported":"2024-06-27T00:02:08.619833+00:00","last_updated":"2024-06-27T00:02:08.619833+00:00","context":{"id":"01J1BFZRK7T1DT30P1N6MB55ND","parent_id":null,"user_id":"64697241df824d8fb8d27628a5ed30fe"}}'
Decoded response: 
{
    "text": "Yes or no?",
    "event": "alexa_actionable_notification_test",
    "suppress_confirmation": ""
}

[DEBUG]	2024-06-27T15:18:07.682Z	8c2f795b-cefd-438e-86ca-88851365c076	Decoded response: 
{
    "text": "Yes or no?",
    "event": "alexa_actionable_notification_test",
    "suppress_confirmation": ""
}

[DEBUG]	2024-06-27T15:18:07.682Z	8c2f795b-cefd-438e-86ca-88851365c076	event_id='alexa_actionable_notification_test' suppress_confirmation=False text='Yes or no?'
event_id='alexa_actionable_notification_test' suppress_confirmation=False text='Yes or no?'
END RequestId: 8c2f795b-cefd-438e-86ca-88851365c076
REPORT RequestId: 8c2f795b-cefd-438e-86ca-88851365c076	Duration: 402.80 ms	Billed Duration: 403 ms	Memory Size: 512 MB	Max Memory Used: 59 MB	Init Duration: 655.36 ms	
START RequestId: b73d04ba-be2f-43dd-80f9-36c585a48da2 Version: 22
Locale is en
[INFO]	2024-06-27T15:18:20.001Z	b73d04ba-be2f-43dd-80f9-36c585a48da2	Locale is en
Session Ended Request Handler triggered
[INFO]	2024-06-27T15:18:20.001Z	b73d04ba-be2f-43dd-80f9-36c585a48da2	Session Ended Request Handler triggered
Raw response: b'{"entity_id":"input_text.alexa_actionable_notification","state":"{\\"text\\": \\"Yes or no?\\", \\"event\\": \\"alexa_actionable_notification_test\\", \\"suppress_confirmation\\": \\"\\"}","attributes":{"editable":true,"min":0,"max":255,"pattern":null,"mode":"text","friendly_name":"alexa_actionable_notification"},"last_changed":"2024-06-27T00:02:08.619833+00:00","last_reported":"2024-06-27T00:02:08.619833+00:00","last_updated":"2024-06-27T00:02:08.619833+00:00","context":{"id":"01J1BFZRK7T1DT30P1N6MB55ND","parent_id":null,"user_id":"64697241df824d8fb8d27628a5ed30fe"}}'
[DEBUG]	2024-06-27T15:18:20.278Z	b73d04ba-be2f-43dd-80f9-36c585a48da2	Raw response: b'{"entity_id":"input_text.alexa_actionable_notification","state":"{\\"text\\": \\"Yes or no?\\", \\"event\\": \\"alexa_actionable_notification_test\\", \\"suppress_confirmation\\": \\"\\"}","attributes":{"editable":true,"min":0,"max":255,"pattern":null,"mode":"text","friendly_name":"alexa_actionable_notification"},"last_changed":"2024-06-27T00:02:08.619833+00:00","last_reported":"2024-06-27T00:02:08.619833+00:00","last_updated":"2024-06-27T00:02:08.619833+00:00","context":{"id":"01J1BFZRK7T1DT30P1N6MB55ND","parent_id":null,"user_id":"64697241df824d8fb8d27628a5ed30fe"}}'
[DEBUG]	2024-06-27T15:18:20.278Z	b73d04ba-be2f-43dd-80f9-36c585a48da2	Decoded response: 
{
    "text": "Yes or no?",
    "event": "alexa_actionable_notification_test",
    "suppress_confirmation": ""
}

Decoded response: 
{
    "text": "Yes or no?",
    "event": "alexa_actionable_notification_test",
    "suppress_confirmation": ""
}

event_id='alexa_actionable_notification_test' suppress_confirmation=False text='Yes or no?'
[DEBUG]	2024-06-27T15:18:20.278Z	b73d04ba-be2f-43dd-80f9-36c585a48da2	event_id='alexa_actionable_notification_test' suppress_confirmation=False text='Yes or no?'
[DEBUG]	2024-06-27T15:18:20.361Z	b73d04ba-be2f-43dd-80f9-36c585a48da2	Clearing Home Assistant local state
Clearing Home Assistant local state
END RequestId: b73d04ba-be2f-43dd-80f9-36c585a48da2
REPORT RequestId: b73d04ba-be2f-43dd-80f9-36c585a48da2	Duration: 363.71 ms	Billed Duration: 364 ms	Memory Size: 512 MB	Max Memory Used: 60 MB	

Fail case:

INIT_START Runtime Version: python:3.8.v51	Runtime Version ARN: arn:aws:lambda:us-east-1::runtime:a768321bd39c88f083afe0a045064adc3615105a319dbbcd583856654db68283
START RequestId: 3bd7a0b9-ddea-4e1e-ad05-a7ec792cea54 Version: 22
Locale is en
[INFO]	2024-06-27T15:33:29.792Z	3bd7a0b9-ddea-4e1e-ad05-a7ec792cea54	Locale is en
[DEBUG]	2024-06-27T15:33:30.112Z	3bd7a0b9-ddea-4e1e-ad05-a7ec792cea54	Raw response: b'{"entity_id":"input_text.alexa_actionable_notification","state":"{\\"text\\": \\"Yes or no?\\", \\"event\\": \\"alexa_actionable_notification_test\\", \\"suppress_confirmation\\": \\"\\"}","attributes":{"editable":true,"min":0,"max":255,"pattern":null,"mode":"text","friendly_name":"alexa_actionable_notification"},"last_changed":"2024-06-27T00:02:08.619833+00:00","last_reported":"2024-06-27T00:02:08.619833+00:00","last_updated":"2024-06-27T00:02:08.619833+00:00","context":{"id":"01J1BFZRK7T1DT30P1N6MB55ND","parent_id":null,"user_id":"64697241df824d8fb8d27628a5ed30fe"}}'
Raw response: b'{"entity_id":"input_text.alexa_actionable_notification","state":"{\\"text\\": \\"Yes or no?\\", \\"event\\": \\"alexa_actionable_notification_test\\", \\"suppress_confirmation\\": \\"\\"}","attributes":{"editable":true,"min":0,"max":255,"pattern":null,"mode":"text","friendly_name":"alexa_actionable_notification"},"last_changed":"2024-06-27T00:02:08.619833+00:00","last_reported":"2024-06-27T00:02:08.619833+00:00","last_updated":"2024-06-27T00:02:08.619833+00:00","context":{"id":"01J1BFZRK7T1DT30P1N6MB55ND","parent_id":null,"user_id":"64697241df824d8fb8d27628a5ed30fe"}}'
[DEBUG]	2024-06-27T15:33:30.112Z	3bd7a0b9-ddea-4e1e-ad05-a7ec792cea54	Decoded response: 
{
    "text": "Yes or no?",
    "event": "alexa_actionable_notification_test",
    "suppress_confirmation": ""
}

Decoded response: 
{
    "text": "Yes or no?",
    "event": "alexa_actionable_notification_test",
    "suppress_confirmation": ""
}

event_id='alexa_actionable_notification_test' suppress_confirmation=False text='Yes or no?'
[DEBUG]	2024-06-27T15:33:30.113Z	3bd7a0b9-ddea-4e1e-ad05-a7ec792cea54	event_id='alexa_actionable_notification_test' suppress_confirmation=False text='Yes or no?'
END RequestId: 3bd7a0b9-ddea-4e1e-ad05-a7ec792cea54
REPORT RequestId: 3bd7a0b9-ddea-4e1e-ad05-a7ec792cea54	Duration: 452.76 ms	Billed Duration: 453 ms	Memory Size: 512 MB	Max Memory Used: 60 MB	Init Duration: 682.61 ms	

Is anyone else seeing this problem, or have a solution for it ?

Came up with a workaround to use to handle the no response case.
Using the Hello World example, created a very basic script that waits for the event with a timeout instead of the Hello World Response automation from the example.

alias: alexa_actionable_notification_response_with_timeout
fields:
  alexa_device:
    description: Alexa device you want to trigger
    example: media_player.your_media_player
  timeout:
    name: "?? Timeout Duration"
    description: Amount of seconds to wait for a response before firing timeout action.
    selector:
      number:
        min: 1
        max: 100
    required: true
sequence:
  - wait_for_trigger:
      - platform: event
        event_type: alexa_actionable_notification
        event_data:
          event_id: hello_world
          event_response_type: ResponseYes
      - platform: event
        event_type: alexa_actionable_notification
        event_data:
          event_id: hello_world
          event_response_type: ResponseNo
    timeout: "{{ timeout}}"
  - choose:
      - conditions:
          - condition: template
            value_template: "{{ wait.trigger.event.data.event_response_type == \"ResponseNo\" }}"
        sequence:
          - service: notify.alexa_media
            data:
              message: You said no
              target: "{{ alexa_device }}"
      - conditions:
          - condition: template
            value_template: "{{ wait.trigger.event.data.event_response_type == \"ResponseYes\" }}"
        sequence:
          - service: notify.alexa_media
            data:
              message: You said yes
              target: "{{ alexa_device }}"
    default:
      - service: notify.alexa_media
        data:
          message: No Response Received
          target: "{{ alexa_device }}"
description: ""

2 Likes

Hi, I have a problem… I’ll explain what I would like to do.
As soon as a sensor is activated I want Alexa to ask me if I want to activate a Gaming zone or a Relaxation zone; once I answer I would like Alexa to ask me what color I want to set the LEDs in the area I have chosen.
I succeed in the first step and I receive the question about the area to choose but when it has to ask me the second question it freezes and doesn’t ask me anything (the switch node does not receive the Gaming or Relax response)… I think the response should be set to the skill of Alexa but I can’t and I can’t find anything online.
Am I doing something wrong?
Thanks for the reply

hi everyone, need a big help please.
I’m trying to make the actionable notifications work but no sound comes out of any chosen alexa device.
I followed the guide and every test is fine except the last one: in HA, if I run the service I get the green flag but alexa does not speak.
Also I’m not getting the actionable notification listener under events in HA.

I’m running HAOS on a raspberry pi4
any idea?

I finally figured out how to setup alexa actionable notifications using Home assistant UI. Trying to get most of my stuff off of node red and not much info out there on how to do Alexa actionable notifications

Hi, given the recent problems with the custon component alexa-media-player, is there a way in node-red to use actionable notifications with alexa cakebaked/applestrudel?

I have the same problem. Did you figure out what the problem was?

Cheers Mate