Practice Questions - Amazon AWS Certified Alexa Skill Builder - Specialty Flashcards
(59 cards)
An Alexa Skill Builder needs to display an image and some additional text to users of a skill. Which approach will work with any Amazon Alexa enabled device?
A. Use an Alexa display template, such as BodyTemplate1.
B. Send a Simple card to the user.
C. Send a Standard card to the user.
D. Send a LinkAccount card to the user.
C
Display templates (A) only work on devices with screens. Simple cards (B) do not support images. LinkAccount cards (D) are used for account linking, not displaying images and text. Standard cards (C) support both text and images and are therefore compatible with all Alexa-enabled devices, including those without screens (the text will be read aloud).
An Alexa Skill Builder receives feedback from users that a specific utterance causes Amazon Alexa to trigger the skill’s AMAZON.HelpIntent rather than triggering the correct intent and slot. How can the Builder reproduce this behavior to troubleshoot the problem?
A. Use the AWS Lambda test feature to send a request with the given intent and slot combination.
B. Set up a unit test in the code base to simulate what happens when the given intent and slot combination are dispatched within the skill.
C. Use the Manual JSON tab on the Test page of the developer console to see what happens when a request for the given intent and slot combination is sent to the skill.
D. Use the Alexa Simulator tab on the Test page of the developer console to test the utterances the users have reported.
D
The discussion and linked blog post strongly suggest that using the Alexa Simulator (option D) is the best approach. The simulator allows testing of live skills and reproducing user-reported issues using their actual utterances. Options A, B, and C are less effective because they don’t directly simulate the user interaction with Alexa, which is the core problem. Option A tests the Lambda function in isolation, Option B tests the code without the Alexa interaction layer, and Option C uses manual JSON, requiring the builder to already know the correct JSON structure which is what they are trying to debug.
An Alexa Skill Builder wants to add a short audio clip to a skill with SSML. The Builder records a 6-second audio clip using a high-end microphone and recording application and exports the file with a bitrate of 48 kbps. The file is then uploaded to a public Amazon S3 bucket. The Builder then updates the SSML to return: Image When testing the skill, Amazon Alexa responds with “There was a problem with the requested skill’s response” every time. How should the Builder resolve this error?
A. Record a shorter audio clip.
B. Re-export the audio file with a smaller bitrate.
C. Re-export the audio file to .mp3 instead of .wav
D. Update the interaction model to enable the AudioPlayer interface
C
The correct answer is C because the provided SSML code uses <audio>
tag which, according to Amazon Alexa documentation, only supports the MP3 format. Options A and B are incorrect because the length (6 seconds) and bitrate (48 kbps) are within the acceptable parameters for Alexa audio playback. Option D is incorrect because the AudioPlayer interface is likely already enabled if the skill is attempting to play audio; the issue is the unsupported file format (.wav).
An Alexa Skill Builder has published a skill to the Alexa Skills Store, but soon after realizes that Amazon Alexa is saying an incorrect word in one of the responses. What is the recommended method for the Builder to correct this issue?
A. Correct the response in a new endpoint, and after updating the In Development version of the skill, redeploy it.
B. Access the In Development version of the skill, alter the intent that was causing the incorrect word, then resubmit the skill for certification.
C. Edit the response in a new endpoint, and after updating the In Development version of the skill, resubmit it for certification.
D. Correct the response in the existing endpoint of the Live version of the skill, then redeploy it.
B
The discussion indicates that option B is the correct answer. Correcting the issue in the “In Development” version allows for testing and verification before re-submission for certification, ensuring the fix is implemented correctly without impacting the live skill’s functionality. Option A is incorrect because while creating a new endpoint might be a valid approach in other scenarios, it’s not the most efficient or recommended method for a simple word correction. Option C is incorrect because while it updates the “In Development” version, it unnecessarily resubmits the entire skill for certification instead of simply updating the live version after thorough testing. Option D is incorrect because directly editing the live version is risky; it could introduce further errors without proper testing and might violate Amazon’s certification process.
An Alexa Skill Builder wants to name a skill using a company’s branded acronym, “NAT Systems.” Which invocation name is valid?
A. n a t systems
B. n-a-t systems
C. n. a. t. systems
D. NAT Systems
C. n. a. t. systems
The discussion indicates that the correct answer is C because Amazon’s guidelines for invocation names require lowercase letters and the use of periods to separate the letters of an acronym. Option A uses spaces which are not allowed. Option B uses hyphens which are also not permitted. Option D uses uppercase letters which are also not allowed. Only Option C adheres to the specified constraints.
An Alexa Skill Builder is creating a skill that requires the user to authenticate by speaking a PIN before an order status can be retrieved. According to best practices, how should the PIN value be collected?
A. Use AMAZON.SearchQuery
B. Use AMAZON.FOUR_DIGIT_NUMBER
C. Use multiple slots of type AMAZON.NUMBER
D. Use a custom slot with zero to nine as values.
B. Use AMAZON.FOUR_DIGIT_NUMBER
The best answer is B because AMAZON.FOUR_DIGIT_NUMBER is a built-in intent specifically designed for collecting four-digit numbers, which is the standard length for PINs. This ensures a consistent and user-friendly experience.
Option A is incorrect because AMAZON.SearchQuery is intended for search queries, not PIN entry. Option C is incorrect because while it could technically work, it’s less efficient and user-friendly than using a built-in intent designed specifically for four-digit numbers. It also doesn’t explicitly enforce a four-digit length. Option D is incorrect as it would require significantly more effort for the developer to handle potential errors and doesn’t utilize the built-in functionality for this type of data input. It introduces unnecessary complexity where a standard built-in intent already exists.
An Alexa Skill Builder published a skill that streams sounds to help users relax. The skill is becoming very popular and is available in many different locales around the world. More than 20,000 users are using the skill every week, and more than 500 users are added daily. The sound files are stored in Amazon S3. What can the Builder do to ensure low latency and the best possible streaming performance?
A. Use Amazon CloudFront to deliver content and cache the audio files across different geographical regions.
B. Migrate the sound files from Amazon S3 into Amazon Redshift to speed up the read operations.
C. Use Elastic Load Balancing to handle the traffic generated by the increasing number of users.
D. Enable cross-region replication on the Amazon S3 bucket policy to improve the skill’s performance.
A
CloudFront is a content delivery network (CDN) that caches content closer to users geographically. This significantly reduces latency for users accessing audio files, leading to better streaming performance.
Option B is incorrect because Amazon Redshift is a data warehouse service, not suitable for serving audio files. Option C is incorrect because Elastic Load Balancing manages traffic to servers, not the delivery of content from S3. While cross-region replication in S3 (Option D) increases availability, it doesn’t directly address low latency for streaming audio; users will still need to connect to a potentially distant S3 region. CloudFront is the best solution for low latency streaming.
An Alexa Skill Builder is developing a skill using AWS Lambda. The Builder made some backend code changes, then tested the skill on an Amazon Echo device. When invoking the skill, Amazon Alexa replies with “There was a problem with the requested skill’s response”. How can the Builder troubleshoot this problem?
A. Use Amazon CloudWatch to check the most recent execution log and see if an error is present.
B. Use Amazon DynamoDB and export a copy of the log database, then search for error messages.
C. Use the developer console to rebuild the model, then invoke the skill again with the invocation name.
D. Use the developer console to add AMAZON.LaunchRequest to the interaction model, rebuild the model, then invoke the skill again.
A
The correct answer is A because AWS Lambda functions log their execution details to Amazon CloudWatch. The error message “There was a problem with the requested skill’s response” is a generic error indicating a problem within the Lambda function itself. Checking the CloudWatch logs will reveal the specific error that occurred during the function’s execution, allowing the builder to pinpoint and fix the issue.
Option B is incorrect because DynamoDB is a NoSQL database and is not used for storing Lambda function logs. Option C is incorrect because rebuilding the model is unnecessary if the problem lies within the Lambda function’s code. Option D is incorrect because adding AMAZON.LaunchRequest addresses issues with the skill’s invocation, not the backend processing within the Lambda function.
While developing a skill, an Alexa Skill Builder finds that the voice response is too quick and needs to be slowed down. How can the Builder MOST efficiently iterate and test how the response will sound?
A. Make changes in the skill code, deploy it, and test it on the device.
B. Modify the SSML in the skill, save it, and check Amazon CloudWatch for errors.
C. Edit the SSML in the skill and use the Alexa Simulator tab on the Test page of the developer console.
D. Use the Voice & Tone tab on the Test page in the developer console.
D
The most efficient way to test changes to the speed of a voice response is to use the Voice & Tone tab in the Alexa developer console. This allows for immediate testing of SSML modifications without requiring a full deployment and testing cycle on a device (A). Option B is incorrect because CloudWatch is for monitoring errors, not for real-time testing of voice response speed. Option C is less efficient because it only lets you test the modified SSML in the context of the entire skill response, whereas Option D focuses specifically on the voice and tone characteristics.
An Alexa Skill Builder needs to change the invocation name of a new skill. What status should the skill be in to make this change?
A. In Development
B. Build
C. In Certification
D. Edit
A. In Development
The correct answer is A because the provided documentation and discussion indicate that invocation names are changed during the development phase of a skill. Option B (“Build”) is too late in the process; the invocation name would already be set. Option C (“In Certification”) is also too late, as changes are generally not allowed during certification. Option D (“Edit”) is not a recognized skill status in the Alexa Skill development lifecycle. The discussion comments support the “In Development” status as the appropriate stage for making this change.
An Amazon Alexa interactive story skill needs to provide users with the option to resume the skill from where they left off when they last used the skill. Where should the data be stored to ensure that the skill will start at the correct location?
A. In a JSON file along with the skill’s AWS Lambda function
B. In Amazon DynamoDB
C. In the skill’s session object
D. In the skill’s request object
C
The correct answer is C because the skill’s session object is designed to store data specific to a user’s current interaction with the skill. This is a temporary store, however, and will persist only for the duration of that particular session. While DynamoDB (B) is a persistent data store and could be used, it is overkill for this purpose, and adds unnecessary complexity. Storing data within the Lambda function (A) is not appropriate; Lambda functions are stateless. The request object (D) contains information about the current user request and is not intended for persistent storage of session-specific data. The session object is the appropriate location to store the user’s progress for resuming their interactive story.
An Alexa Skill Builder is developing a custom skill and needs to verify that the correct slot values are being passed into the AWS Lambda function. According to best practices, what is the MOST efficient way to capture this information?
A. Add a logging statement to write the event request to Amazon CloudWatch Logs.
B. Add an API call to write the environment variables to an Amazon S3 bucket when the function is invoked.
C. Add an API call to read the event information from AWS Cloud Trail logs and add a PutObject API call to write to an Amazon S3 bucket.
D. Add a statement to parse the JSON request and save to the local disk for the Lambda function
A
CloudWatch Logs provide a straightforward and efficient method for capturing and reviewing the event requests, including slot values, sent to the Lambda function. This avoids unnecessary API calls and data transfers.
Option B is incorrect because environment variables don’t contain the slot values; they hold configuration settings for the Lambda function. Option C is incorrect because CloudTrail logs system-level events, not the detailed request data needed for slot value verification. It’s also inefficient to involve S3. Option D is incorrect because Lambda functions are ephemeral; data written to the local disk is lost when the function execution ends. This is not a persistent solution.
An Alexa Skill Builder submitted a child-directed skill for certification that lists the nearest skateboard parks. The Builder ensured that
* The skill does not link to an external account
* The skill stored the child’s preference by userId
* The skill has a valid privacy policy link in the skill Distribution page
Given this information, why will the skill fail certification?
A. The Builder did not upload a privacy policy document
B. Child-directed skills cannot use location information
C. The child’s userId cannot be used because of Personally Identifiable Information (PII) restrictions.
D. The skill should not be child-directed as it can be used by children over 13 years old.
B
The correct answer is B because child-directed skills are prohibited from collecting or using location information. While options A and C are potential issues in skill development, they are not the reason given the information provided in the question. Option D is incorrect; the issue is not the age range of potential users, but rather the use of location data.
According to Amazon Alexa best practices, how should an Alexa Skill Builder prevent unintentional requests against a skill’s backend when using AWS Lambda?
A. Ensure that the session ID provided by the request to Lambda is not already in use.
B. Rotate the Lambda ARN regularly to prevent others from using the service.
C. Retrieve the Application ID property from the request JSON and validate it against the Lambda environment variables.
D. Provide the Lambda trigger with the Application ID so that it validates on the ask trigger.
C
The correct answer is C because validating the Application ID against the Lambda environment variables is the recommended method to ensure that requests originate from your Alexa skill. Option A is incorrect because session IDs are not designed for this type of security validation. Option B is incorrect because rotating the Lambda ARN doesn’t prevent unauthorized requests; it only changes the access point. Option D is incorrect because while the Application ID is crucial, providing it to the trigger itself doesn’t inherently provide validation; the skill’s backend logic must actively validate it, which is what option C describes.
An Alexa Skill Builder would like to improve a skill’s help experience by leveraging the user’s activity leading up to the help request to contextualize the help response. Where should the skill obtain the necessary context?
A. Load the user’s recent activity from the Intent Request History API, then use this to provide context to the AMAZON.HelpIntent request.
B. Retrieve the recent activity from the context object passed with the AMAZON.HelpIntent request.
C. Use a session attribute to store the intent name for each request, then use this to provide context to the AMAZON.HelpIntent request.
D. Retrieve the recent activity from the slot values passed with the AMAZON.HelpIntent request.
C
The correct answer is C because session attributes provide a mechanism to store and retrieve information across multiple requests within a user’s session. Storing the intent name in a session attribute allows the skill to recall the user’s previous actions and tailor the help response accordingly. This approach is explicitly supported by Amazon’s documentation and community examples, as shown in the provided discussion.
Option A is incorrect because the Intent Request History API is not designed for real-time contextual help within a single session. It provides historical data, not immediate context. Option B is incorrect because the context object associated with AMAZON.HelpIntent doesn’t inherently contain the user’s recent activity history. Option D is incorrect because slot values only reflect the data provided within a single intent request and do not provide a history of previous user interactions.
An Alexa Skill Builder adds a colleague to a skill using the beta test feature. The colleague logs in to the developer console to edit the interaction model and cannot see the skill. Why is this happening?
A. The colleague needs the ROLE_ADMINISTRATOR enablement.
B. The skill was not submitted for publishing.
C. The colleague was not made an administrator in the beta test tool.
D. The colleague has not been added to the skill’s developer account.
C. The colleague was not made an administrator in the beta test tool.
The discussion highlights that simply adding a colleague’s email address isn’t sufficient; the colleague must be specifically granted administrator privileges within the beta testing tool itself. Option A is incorrect because ROLE_ADMINISTRATOR is not relevant to beta testing. Option B is irrelevant; beta testing happens before publishing. Option D is also incorrect because the process described in the linked blog post implies that the colleague’s developer account is added, but they lack the necessary beta testing permissions.
What are the prerequisites for implementing account linking for Amazon Alexa smart home skills?
A. OAuth 2.0 with either implicit grant flow or authorization code grant flow
B. OAuth 2.0 with authorization code grant flow
C. OpenID Connect with JSON.Web Token (JWT)
D. OAuth 1.0/2.0 with implicit grant flow
B
The correct answer is B because Amazon’s documentation specifically states that for smart home skills, the authorization code grant type within OAuth 2.0 is required for account linking. Option A is incorrect because while implicit grant flow is acceptable for some types of Alexa skills, it’s not required and not sufficient for smart home skills. Option C is incorrect because it specifies OpenID Connect and JWT, which are not the required protocols for this use case. Option D is incorrect because it includes OAuth 1.0, which is not supported; only OAuth 2.0 is.
An Amazon Alexa trip planner skill includes a PlanMyTripIntent with slots for fromCity, toCity, departDate, and returnDate. A user initiates a trip plan (“Ask plan my trip to start a new trip leaving from Seattle.”), and Alexa confirms the departure city. The user confirms, and Alexa saves the trip, then asks: “I’ve saved your trip. Do you want to create another trip?” The user replies “Yes”. What intent is invoked by the user’s final “Yes”?
A. PlanMyTripIntent
B. AMAZON.CancelIntent
C. AMAZON.YesIntent
D. LaunchRequest
C. AMAZON.YesIntent
The user’s final “Yes” is a response to a general question outside the context of the PlanMyTripIntent. Since the trip planning is complete, this “Yes” doesn’t relate to the specifics of the trip planning intent. Therefore, it invokes the generic AMAZON.YesIntent. Option A is incorrect because the trip planning is already finished. Option B is incorrect because the user isn’t canceling anything. Option D is incorrect because LaunchRequest is invoked when the skill is initially launched, not in response to a question during a user interaction.
An Alexa Skill Builder implemented in-skill purchasing for premium content using an entitlement product deployed via the ASK CLI. Testing the BuyInskillProductIntent
in the developer console yields the error: “Sorry, this product is not available with your current language setting.” How can this error be resolved?
A. Change the release date and redeploy the product.
B. Change the locale in the Alexa Simulator tab in the developer console.
C. Change the AWS Lambda function to include the correct locale in the Connections.SendRequest
directive.
D. Change the language in the premium content.
C
The error message indicates a mismatch between the skill’s language setting and the product’s available languages. While changing the locale in the simulator (B) might seem like a solution, the problem lies in how the skill requests the purchase. The Connections.SendRequest
directive within the AWS Lambda function handles the communication with the in-skill purchasing system. Therefore, ensuring the correct locale is included in this directive (C) is the correct way to resolve the issue. Option A is incorrect because the release date doesn’t affect language support. Option D is incorrect because changing the content language doesn’t address the in-skill purchasing system’s language requirements. The in-skill purchasing system needs to know which language the user is using to provide the correct product.
An Alexa Skill Builder is building an order reporting skill. Occasionally, users need to enter 30-digit serial codes. How can this be accomplished while providing a good voice user interface experience?
A. Manually extend the timeout so that users can input all the numbers.
B. Use multiple requests for smaller segments of the code and store the data in session attributes.
C. Enter single digits one request at a time.
D. Request that users send the number using the Amazon Alexa app
B. Use multiple requests for smaller segments of the code and store the data in session attributes.
This is the best option because it breaks down a complex task (entering a 30-digit code) into smaller, more manageable chunks. This improves the user experience by avoiding lengthy input sessions and potential errors. Storing the data in session attributes allows the skill to remember the partial code across multiple turns of the conversation.
Option A is poor because manually extending timeouts doesn’t address the core issue of the difficulty of verbally inputting such a long code accurately. Option C is also inefficient and prone to errors. Option D is a poor user experience as it forces users away from the voice interface.
An Alexa Skill Builder is developing a skill containing a multi-turn dialog that can be invoked with or without a specific intent request. On invocation, the skill needs to retrieve persistent attributes that have been saved by a previous invocation, and then copy them into session attributes. How should the Builder implement this functionality?
A. Place logic within the skill’s SessionEndedRequest intent handler to copy the persistent attributes into the session attributes.
B. Implement ResponseInterceptor containing logic that takes the current persistent attributes and copies them into session attributes.
C. Include logic within the LaunchRequest intent handler to retrieve persistent attributes and copy them into session attributes.
D. Implement RequestInterceptor containing logic which for new sessions, retrieves persistent attributes and copies them into session attributes.
D
The correct answer is D because RequestInterceptors are triggered at the beginning of each request, allowing the retrieval and copying of persistent attributes into session attributes specifically for new sessions. Option A is incorrect because SessionEndedRequest handles the end of a session, not the beginning. Option B is incorrect because ResponseInterceptors run after the response is generated, too late to affect the session attributes. Option C is incorrect because while LaunchRequest handles skill invocation, it doesn’t distinguish between new and existing sessions, potentially overwriting attributes unnecessarily for returning users. Therefore, only a RequestInterceptor can conditionally handle the attribute copying based on session status, making it the most appropriate choice.
An Alexa Skill Builder has built a new custom skill backed by an AWS Lambda function. The Lambda function executes successfully from the Lambda console, however, the Lambda function cannot be successfully invoked in the developer console or from an Amazon Alexa enabled device. No error messages show in the function’s Amazon CloudWatch Logs. The Builder confirmed the endpoint has the correct ARN. What is likely causing this issue and how can it be corrected?
A. The Lambda application code has a bug that is causing it to crash. Modify the code to fix the bug, then redeploy the Lambda function.
B. The ASK SDK was not deployed with the Lambda function. Add the ASK SDK, then redeploy the Lambda function.
C. The ASK trigger for the Lambda function has been restricted to the wrong skill ID. Re-create the trigger with the correct skill ID.
D. The Lambda role does not have the correct AWS IAM permission. Update the IAM role associated with the Lambda function.
C
The most likely cause is that the ASK trigger for the Lambda function is restricted to the wrong skill ID (option C). Since the Lambda function works from the console but not from Alexa or the developer console, the problem is likely with the invocation process, not the function’s code itself. The ASK trigger verifies the skill ID before invoking the Lambda function; an incorrect skill ID prevents invocation without generating errors in CloudWatch logs. Options A, B, and D are less likely because the function works correctly when invoked directly from the Lambda console. Option A would result in errors in CloudWatch logs. Option B is unlikely given that the function is successfully called from the Lambda console, where SDK presence wouldn’t matter. Option D would likely prevent the Lambda function from working at all.
An Alexa Skill Builder is developing a custom skill to play a live audio stream. What two built-in intents are required to implement the AudioPlayer interface?
A. AMAZON.NextIntent and AMAZON.StopIntent
B. AMAZON.ResumeIntent and AMAZON.PauseIntent
C. AMAZON.CancelIntent and AMAZON.ResumeIntent
D. AMAZON.RepeatIntent and AMAZON.StopIntent
B. AMAZON.ResumeIntent and AMAZON.PauseIntent
The correct answer is B because the Amazon developer documentation and community discussion confirm that AMAZON.ResumeIntent
and AMAZON.PauseIntent
are the two built-in intents required for implementing the AudioPlayer interface. These intents allow the user to pause and resume the audio stream. Options A, C, and D include intents that are not directly required for basic audio playback control via the AudioPlayer interface, although they might be used in a more complex skill.
An Alexa Skill Builder is using session attributes to maintain a user’s state. What can the Builder do to ensure that a user’s session is not lost if they take too long to answer a question and the skill exits?
A. Set shouldEndSession to false in the response object to prevent the skill from exiting.
B. Handle the SessionEndedRequest request type and persist the user’s session to a database.
C. Return false from the SessionEndedRequest handler so the session does not exist.
D. Return a reprompt in the response object from the SessionEndedRequest handler.
B
The correct answer is B because the question describes a scenario where the session has already ended (due to the user taking too long to respond). Option A is incorrect because setting shouldEndSession
to false only prevents the session from ending during a response; it doesn’t recover a session that has already ended. Option C is incorrect because returning false
from SessionEndedRequest
would likely not prevent data loss and may not even be a valid action in this context. Option D, while good practice for prompting users for further input during an active session, doesn’t address the data preservation issue after the session has already ended. Only persisting the session data to a database (option B) ensures that the information isn’t lost when the session times out.