{"componentChunkName":"component---src-templates-docs-js","path":"/training/workshops/sample3","result":{"data":{"site":{"siteMetadata":{"title":"Dabble Lab","docsLocation":"https://github.com/dabblelab/dabblelab-documentation-site","docsLocationType":"github","editable":true}},"mdx":{"fields":{"id":"e85ef08c-16ad-50bb-a6e0-c6618f7c03c5","title":"Alexa Proactive Events API","slug":"/training/workshops/sample3"},"body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Alexa Proactive Events API\",\n  \"order\": 2\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"section\", null, mdx(\"h1\", {\n    parentName: \"section\"\n  }, \"Alexa Proactive Events API\"), mdx(\"p\", {\n    parentName: \"section\"\n  }, \"The \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://developer.amazon.com/docs/smapi/proactive-events-api.html\"\n  }), \"Proactive Events API\"), \" allows you to send notifications to users of your skill. When your skill successfully sends a notification to a user\\u2019s Alexa device, the user hears a chime sound that indicates a notification has arrived. The user can then say, \\u201CAlexa, read my notifications\\u201D and hear the details.\"), mdx(\"p\", {\n    parentName: \"section\"\n  }, \"This feature demo shows you how to set up a sample skill called Ping Me, and a script to generate notifications.\")), mdx(\"section\", null, mdx(\"h2\", {\n    parentName: \"section\"\n  }, \"What You Will Need\"), mdx(\"ul\", {\n    parentName: \"section\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", _extends({\n    parentName: \"li\"\n  }, {\n    \"href\": \"http://developer.amazon.com/alexa\"\n  }), \"Amazon Developer Account\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", _extends({\n    parentName: \"li\"\n  }, {\n    \"href\": \"http://aws.amazon.com/\"\n  }), \"Amazon Web Services Account\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", _extends({\n    parentName: \"li\"\n  }, {\n    \"href\": \"https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html\"\n  }), \"AWS Command Line Interface \", \"(\", \"CLI\", \")\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", _extends({\n    parentName: \"li\"\n  }, {\n    \"href\": \"https://developer.amazon.com/docs/smapi/quick-start-alexa-skills-kit-command-line-interface.html\"\n  }), \"Alexa Skills Kit Command Line Interface \", \"(\", \"ASK CLI\", \")\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", _extends({\n    parentName: \"li\"\n  }, {\n    \"href\": \"https://nodejs.org/\"\n  }), \"Node.JS version 8\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"This sample code on \", mdx(\"a\", _extends({\n    parentName: \"li\"\n  }, {\n    \"href\": \"https://github.com/alexa/alexa-cookbook/tree/master/feature-demos/skill-demo-proactive-events/\"\n  }), \"GitHub\"), \".\")), mdx(\"p\", {\n    parentName: \"section\"\n  }, \"Your notification must follow one of the pre-defined formats listed in the \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://developer.amazon.com/docs/smapi/schemas-for-proactive-events.html\"\n  }), \"Proactive Events Schema\"), \"\\nFor example, here is a sample notification that uses the \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"OrderStatus\"), \" schema:\"), mdx(\"pre\", {\n    parentName: \"section\"\n  }, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {}), \"        \\\"event\\\": {\\n            \\\"name\\\": \\\"AMAZON.OrderStatus.Updated\\\",\\n            \\\"payload\\\": {\\n                \\\"state\\\": {\\n                    \\\"status\\\": \\\"ORDER_SHIPPED\\\",\\n                    \\\"deliveryDetails\\\": {\\n                        \\\"expectedArrival\\\":  \\\"2018-12-14T11:30:00.000Z\\\"\\n                    }\\n                },\\n                \\\"order\\\": {\\n                    \\\"seller\\\": {\\n                        \\\"name\\\": \\\"Delivery Owl\\\"\\n                    }\\n                }\\n            }\\n        },\\n\")), mdx(\"ul\", {\n    parentName: \"section\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Alexa:  \", mdx(\"em\", {\n    parentName: \"li\"\n  }, \"\\\"Your order from Delivery Owl has shipped and will arrive on December fourteenth at five thirty PM\\\"\"), \"\\nNote that the expected arrival time is given in the user's time zone, and not in the universal time zone used in the timestamp field. \"))), mdx(\"section\", null, mdx(\"h2\", {\n    parentName: \"section\"\n  }, \"Set Up the Demo\"), mdx(\"p\", {\n    parentName: \"section\"\n  }, \"Be sure you have the AWS CLI and ASK CLI setup.\\nDownload this repository to your laptop. You can do this in one of two ways:\"), mdx(\"ul\", {\n    parentName: \"section\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Run the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"git clone https://github.com/alexa/alexa-cookbook\"), \" command, or\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Click the \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Code\"), \" tab near the top of the page, and then click the green \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Clone or download\"), \" button.\"))), mdx(\"section\", null, mdx(\"h4\", {\n    parentName: \"section\"\n  }, \"AWS setup steps\"), mdx(\"p\", {\n    parentName: \"section\"\n  }, \"First, you will set up the AWS Lambda function, which contains the skill service code, as part of a CloudFormation stack called PingMe.\\nThe stack also includes the AWS Lambda trigger, IAM role, and a DynamoDB table to track userIds. The IAM role (Identity Access Management) provides the necessary permissions for the Lambda function to read and write from the DyanmoDB table. \"), mdx(\"ul\", {\n    parentName: \"section\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Note: The CloudFormation package should be run from the \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"us-east-1\"), \" region, also known as N. Virginia.  Verify your default region in the AWS CLI by typing \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"aws configure\"), \" and pressing enter four times.\")), mdx(\"ol\", {\n    parentName: \"section\"\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Open a (bash) command terminal.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Navigate to the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"/feature-demos/skill-demo-proactive-events/skill/sam\"), \" folder\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Choose the deployable script for your platform, for windows this is \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"deploy.sh\"), \" and for unix-based systems, this is \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"deploy.unix.sh\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Make the deploy script executable. Run the command \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"chmod +x ./deploy.sh\"), \".\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Execute the script to create your stack. Run the command  \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"./deploy.sh\"), \".\")), mdx(\"ul\", {\n    parentName: \"section\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Executing this script launches a CloudFormation setup from the packaged project defined in pingme.yaml.\")), mdx(\"ol\", {\n    parentName: \"section\"\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Open the \", mdx(\"a\", _extends({\n    parentName: \"li\"\n  }, {\n    \"href\": \"https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks\"\n  }), \"CloudFormation console\"), \" and verify the new stack called PingMe is created. It will take a few moments to complete.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Click on this stack, and then click the \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Outputs\"), \" tab.  Copy the \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"AlexaSkillFunctionARN\"), \" value. \"))), mdx(\"section\", null, mdx(\"h4\", {\n    parentName: \"section\"\n  }, \"Skill setup steps\"), mdx(\"p\", {\n    parentName: \"section\"\n  }, \"Next, you will update the skill manifest with the \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"AlexaSkillFunctionARN\"), \" value. Then you will deploy the skill using the ASK CLI.\"), mdx(\"ol\", {\n    parentName: \"section\"\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Open the file \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"skill.json\"), \" found within the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"/skill\"), \" folder\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Locate the two lines with \\\"uri\\\" on about lines 36 and 46.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Replace the values of these with the \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"AlexaSkillFunctionARN\"), \" value, and save the file.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Notice the publications eventNames listed: \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"\\\"eventName\\\": \\\"AMAZON.OrderStatus.Updated\\\"\"), \", etc.  The \", mdx(\"a\", _extends({\n    parentName: \"li\"\n  }, {\n    \"href\": \"https://developer.amazon.com/docs/smapi/schemas-for-proactive-events.html\"\n  }), \"Proactive Events\"), \" you intend to use must be defined here.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Run the command \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"ask deploy\"), \" to create the skill.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"When the command completes, log in to the \", mdx(\"a\", _extends({\n    parentName: \"li\"\n  }, {\n    \"href\": \"https://developer.amazon.com/alexa/console/ask\"\n  }), \"Developer Portal\"), \" and open your Ping Me skill.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Click the \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Test\"), \" tab, and enable skill testing in \\\"Development\\\".\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Test the skill with the utterance \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"open ping me\"), \" and then \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"stop\"), \".\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Locate your \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"userId\"), \" from within the Skill I/O JSON Input panel. Copy this \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"userId\"), \" value to a temporary location (like a text file) - you will be copying additional values before using this value.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Click the \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Build\"), \" tab, and click \\\"Permissions\\\" at the the bottom left.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"At the bottom of the \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Permissions\"), \" page, locate and copy the two Skill Messaging Client credentials, \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Client Id\"), \" and \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Client Secret\"), \".\")), mdx(\"p\", {\n    parentName: \"section\"\n  }, \"Enable the skill to receive notifications, as an end user would.\"), mdx(\"ol\", {\n    parentName: \"section\"\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Navigate to \", mdx(\"a\", _extends({\n    parentName: \"li\"\n  }, {\n    \"href\": \"https://alexa.amazon.com\"\n  }), \"alexa.amazon.com\"), \" and log in.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Click Skills, then \\\"Your Skills\\\" from the top right.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Within the skill list panel, click on \\\"Dev Skills\\\" and then click on your new skill called \\\"Ping Me\\\".\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Click the \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Settings\"), \" button, then click \\\"Manage Permissions\\\".\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Toggle on the \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Alexa Notifications\"), \" option and click \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Save Permissions\"), \".\")), mdx(\"p\", {\n    parentName: \"section\"\n  }, \"You can also perform these steps from the Alexa app on your phone.\")), mdx(\"section\", null, mdx(\"h4\", {\n    parentName: \"section\"\n  }, \"Test script setup steps\"), mdx(\"p\", {\n    parentName: \"section\"\n  }, \"The root of the project contains two sample Node.JS scripts you can run from the command line:\"), mdx(\"ul\", {\n    parentName: \"section\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"order.js\"), \" shows how to send a notification to an individual user\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"media.js\"), \" shows how to send a broadcast message to all users\")), mdx(\"ol\", {\n    parentName: \"section\"\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Open \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"order.js\"), \" and locate the three settings for clientID, clientSecret, and userId1.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Replace these values with the values you copied in the previous steps.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Open \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"media.js\"), \" and locate the two settings for clientID and clientSecret.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Replace these values with the values you copied in the previous steps.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Review the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"schedule.txt\"), \" file that accompanies the media demo.\"))), mdx(\"section\", null, mdx(\"h2\", {\n    parentName: \"section\"\n  }, \"Running the Demo\"), mdx(\"ol\", {\n    parentName: \"section\"\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Type \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"node order.js\"))), mdx(\"ul\", {\n    parentName: \"section\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"You should hear a chime and see a yellow light ring on your Echo device! Say \\\"Alexa, notifications\\\"\")), mdx(\"ol\", {\n    parentName: \"section\"\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Type \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"node media.js\"))), mdx(\"ul\", {\n    parentName: \"section\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"This script will scan through the list of sports events in schedule.txt, locate the next future event, and send out a Multicast notification.\")), mdx(\"pre\", {\n    parentName: \"section\"\n  }, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {}), \"// skill/lambda/custom/schedule.txt\\n2018-12-20T13:00:00.000Z, \\\"Owls at Badgers\\\",   \\\"Speech Radio\\\"\\n2019-01-25T13:00:00.000Z, \\\"Otters at Swans\\\",   \\\"Listen Channel\\\"\\n2019-02-14T13:00:00.000Z, \\\"Pandas at Tigers\\\",  \\\"Voice TV\\\"\\n\"))), mdx(\"section\", null, mdx(\"h2\", {\n    parentName: \"section\"\n  }, \"Next Steps\"), mdx(\"p\", {\n    parentName: \"section\"\n  }, \"Here are a few ways you can extend this demo.\"), mdx(\"ul\", {\n    parentName: \"section\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Change the event data in the schedule.txt file. \")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Modify the skill.json event publications section to define additional schema event types and re-deploy the skill.\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Notice the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"localizedAttributes\"), \" section of the event. You can define unique variable values that will be resolved dynamically from the locale of each user.\"), mdx(\"pre\", {\n    parentName: \"li\"\n  }, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {}), \"  \\\"localizedAttributes\\\": [\\n      {\\n          \\\"locale\\\": \\\"en-US\\\",\\n          \\\"sellerName\\\": \\\"Delivery Owl\\\"\\n      },\\n      {\\n          \\\"locale\\\": \\\"en-GB\\\",\\n          \\\"sellerName\\\": \\\"Delivery Owl UK\\\"\\n      }\\n  ],\\n\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Navigate to the \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://console.aws.amazon.com/dynamodb/home?#tables:\"\n  }), \"DynamoDB Console\"), \" and find the new table \\\"askPingMe\\\".\\nThis table has one row for each user of your skill.  The primary key is the field called \\\"userId\\\", followed by any Persistent Attributes you set in your endpoint code.\\nYou can design integrations such that other systems read and write from this table.  For example, you could correlate a notification to a subsequent skill invocation to see how many people \\\"click through\\\" to launch the skill after receiving the notification.\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Track when users have granted permissions by adding handlers to respond to \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://developer.amazon.com/docs/smapi/skill-events-in-alexa-skills.html\"\n  }), \"Alexa Skill Events\"), \".\\nThe \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"getMemoryAttributes\"), \" function in lambda/custom/constants.js initializes any user persistent attributes you wish to define.\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Set up a regularly scheduled job to run your script, using tools such as\\n\", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://en.wikipedia.org/wiki/Cron\"\n  }), \"Cron\"), \",\\n\", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://en.wikipedia.org/wiki/Windows_Task_Scheduler\"\n  }), \"Windows Task Scheduler\"), \",\\nor \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://docs.aws.amazon.com/lambda/latest/dg/with-scheduled-events.html\"\n  }), \"AWS Lambda\"), \".\\nThe job could check existing systems for any new events, and generate Proactive Events API notifications.\")))), mdx(\"section\", null, mdx(\"h2\", {\n    parentName: \"section\"\n  }, \"Frequently Asked Questions\"), mdx(\"ul\", {\n    parentName: \"section\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Q: Can I send an ad-hoc or literal message as a notification?\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"A: No, your notification must follow the form of one of the \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://developer.amazon.com/docs/smapi/schemas-for-proactive-events.html\"\n  }), \"Proactive Events API schemas\"), \". You can propose new schemas via \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://alexa.uservoice.com\"\n  }), \"alexa.uservoice.com\"), \" .\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Q: How do I get a notification banner to appear on my Echo Show device, or other Alexa-enabled screen device?\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"A: When you complete the Distribution section, you add icons to your skill page.\\nIf the customer is using an Alexa-enabled screen device, these icons that represent your skill will be visible when a customer gets a notification. \")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Q: Can I send a notification to a mobile phone?\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, \"A: The Proactive Events API works with Alexa devices. If you want to trigger a text message to a mobile phone number, you can separately use a third-party service. \")))));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#alexa-proactive-events-api","title":"Alexa Proactive Events API","items":[{"url":"#what-you-will-need","title":"What You Will Need"},{"url":"#set-up-the-demo","title":"Set Up the Demo","items":[{"items":[{"url":"#aws-setup-steps","title":"AWS setup steps"},{"url":"#skill-setup-steps","title":"Skill setup steps"},{"url":"#test-script-setup-steps","title":"Test script setup steps"}]}]},{"url":"#running-the-demo","title":"Running the Demo"},{"url":"#next-steps","title":"Next Steps"},{"url":"#frequently-asked-questions","title":"Frequently Asked Questions"}]}]},"timeToRead":4,"parent":{"__typename":"File","relativePath":"training/workshops/sample3.md","fields":{"gitLogLatestAuthorName":"Steven Tingiris","gitLogLatestAuthorEmail":"steve@dabblelab.com","gitLogLatestDate":"a day ago"}},"frontmatter":{"metaTitle":null,"showMetadata":null,"editable":null,"showPreviousNext":null,"showToc":null}},"gitBranch":{"name":"13c9979"},"gitCommit":{"hash":"13c9979ef74a5bc3bfd9b8fc61bafb99ba140d64","date":"2020-11-05 06:24"}},"pageContext":{"id":"e85ef08c-16ad-50bb-a6e0-c6618f7c03c5"}},"staticQueryHashes":["12478684","12478684","2882937274","2882937274","353167761","353167761","3812332637","3812332637"]}