Add Name-Free Interaction to Alexa Smart Properties for Hospitality Skills

When you create a skill for Alexa Smart Properties for hospitality, you can add name-free interaction. Name-free interaction lets users ask Alexa for information about a property or its services without mentioning the skill by name. For example, a user can say, "Alexa, what's the visitor wi-fi password?" instead of "Alexa, ask {skill name} for the visitor wi-fi password." Name-free interaction enables your skill to provide the following functionality:

  • Serve users property-specific information – For example, your skill might handle the following questions:
    • "Alexa, can my guest get free parking?"
    • "Alexa, what's the pet policy?"
    • "Alexa, where's the nearest coffee shop?"
  • Support staff by routing and fulfilling property-specific requests – For example, your skill might handle the following requests:
    • "Alexa, my door needs maintenance."
    • "Alexa, I need to register my guest's car for the visitor lot."
    • "Alexa, I lost my mail key."

This page contains requirements, best practices, and a list of steps to add name-free interaction to your Alexa Smart Properties for hospitality skill.

Requirements

To support name-free interaction, your Alexa Smart Properties for hospitality skill must meet the following requirements:

  • Information – Your skill must only include information about your property or nearby services that might interest users, such as restaurants, shops, and attractions.

    Your skill must not provide information – such as weather – that's not relevant to your property or nearby services.

    For example, your skill may answer the following questions:

    • Generic help information ("What can you do here?")
    • Property-specific information ("Is this property smoke-free?")
    • Property-specific requests ("I need maintenance help.")
    • Property-nearby information ("Where's the nearest deli?")

    Your skill may not answer questions that relate to the following areas:

    • Smart Home ("Turn off the lights.")
    • Music ("Play pop music.")
    • Weather ("What's the temperature?")
    • Time ("What time is it?")
    • Timers ("Set a 15-minute timer.")
    • Alarms ("Set an alarm for 6 AM.")
    • Calling ("Call the front desk.")
    • Audiobooks ("Read Harry Potter.")
    • Video ("Play The Lost City.")
    • Information unrelated to your property ("What's the news?")
    • Alexa's opinions ("What's your favorite song?")
    • Common intents ("Stop" "Pause" "Exit")
  • Interaction model – Your interaction model must be clear and concise. For details, see Best practices for designing your interaction model.

  • Locales – Your skill must meet the following locale requirements:

    • In the US, you can develop your skill in American English (en_US) only.
    • In the UK, you can develop your skill in UK English (en_GB) only.
    • In France, you can develop your skill in American English (en_US), French (fr_FR), or both by using dynamic language switching.

Best practices for designing your interaction model

To maximize the accuracy of your interaction model, heed the following best practices when you design your interaction model:

  • Provide a clear skill description.
  • Use descriptive intent names. For example, CarBookingIntent is better than BookingIntent.
  • Provide sample utterances that reflect the intent's meaning.
  • Use real synonyms. For example, the noun "rental car" isn't the same as the action of "returning a car." Create a new slot for new words instead of treating them as synonyms.
  • Provide answers that sound natural for Alexa to read out loud, including when a slot value is filled.
  • Include no more than two slot values in each sample utterance. For example, "Can you tell me about the {amenity}?" and "Can you tell me the {info type} of {amenity}?" are both acceptable. Avoid sample utterances such as, "{question_type} {verb} {quantifier} {info_type} {amenity}?"
  • Provide answers that sound natural for Alexa to read out loud, including when a slot value is filled.
  • (Optional) Include support for words that are spelled differently but are pronounced the same (for example, "gray" and "grey").

Make sure that your skill doesn't have the following characteristics:

  • A slot value as a sample utterance (for example, "{Slot}").
  • Intents that conflate concepts. For example, don't use one intent to describe both a location (for example, restaurant) and activities (for example, eat dinner). Instead, create one intent to describe location ("Where can I find {location}?") and activities ("Where can I {activity}?").
  • Sample utterances as slot values. For example, don't list "{helpSlot}, where is the {helpSlot}?" as a sample utterance and list "I need some help" as a slot value.

The following example demonstrates a crisp interaction model.

Steps to add name-free interaction to your skill

To add name-free interaction to your skill, take the following steps:

  1. Confirm that your skill meets the requirements.
  2. Find and remove utterance conflicts.
  3. Identify name-free interaction intents.
  4. Specify golden and regression utterances.
  5. (Optional) Implement the CanFulfillIntentRequest interface.
  6. Submit your skill for certification and publishing.
  7. Contact your Alexa solution architect to begin testing.
  8. Test your skill locally.
  9. Monitor your skill.

Step 1: Confirm that your skill meets the requirements

Confirm that your skill meets the requirements specified in Requirements. These requirements relate to your interaction model best practices, the types of questions that your skill may answer, which locales you can support, and so on.

Step 2: Find and remove utterance conflicts

By unintentionally mapping sample utterances to more than one intent, you decrease the likelihood that Alexa successfully picks your skill to answer a given question. Find and remove these utterance conflicts in your model before you publish your skill.

For details about how to find utterance conflicts, see Find Utterance Conflicts in Your Model. For interaction model best practices, see About Designing an Interaction Model and Best practices for designing your interaction model.

Step 3: Identify name-free interaction intents

You can use the Name-free Interactions Toolkit in the developer console to specify each intent you want to make available for name-free interaction.

You can access the name-free interaction toolkit in the following ways:

  • Add intent launch phrases – Follow the steps in Use the developer console to update the interaction model to add intent launch phrases for each intent of your skill interaction model that you want to trigger through name-free interaction.
  • Add the name-free interaction container – You can add the name-free interaction container and the corresponding intent launch phrases by modifying the skill interaction model in the developer console or by using the Alexa Skills Kit Command-Line Interface. You just need to add the intent name; you don't need to add sample utterances for the intent.

Alexa uses the name-free interaction container during model training to improve the routing of the specified name-free interaction utterances to your custom skill.

The following JSON shows a simplified interaction model with a name-free interaction container for skill interaction.

Step 4: Specify golden and regression utterances

You must specify golden utterances in a CSV file and provide the CSV file to your Alexa solution architect. You can optionally provide regression utterances in the same file. These utterances are as follows:

  • A golden utterance is an utterance that Alexa maps to the correct intent in the skill through name-free interaction. To improve the accuracy of your interaction model, specify commonly used utterances as golden utterances. Golden utterances have the following rules:
    • Each golden utterance must exactly match an utterance in the interaction model.
    • You can have at most 1,000 golden utterances per language for name-free interaction in each skill .
    • Golden utterances must be in plain text format, and must not have slots. For example, what time is breakfast served is valid, whereas what time is {meal} served isn't valid.
    • You must spell out numbers (ten dollars instead of $10).
    • Golden utterances can't include punctuation marks (such as parentheses) or special characters. For example, use five stars instead of 5 stars. Exceptions to this rule are contractions (romeo's), words that have a hyphen (top-rated), acronyms and other phrases that include spoken letters by periods and spaces (for example, use n. b. a., not nba).
    • You should check for typos and look for ambiguous cases, (for example, compound words such as handover or hand over). If in doubt, specify both cases.
  • A regression utterance is an utterance that Alexa tests on your behalf against the newly trained model for your skill. Alexa can support 5,000 regression utterances per language in each skill through name-free interaction.

The CSV file must have the following three columns:

  • Column 1 – The utterance data type. Valid values: GOLDEN_SET or REGRESSION_SET.
  • Column 2 – An utterance. If column 1 is GOLDEN_SET, this column contains a golden utterance that you want to route to a skill intent. If column 1 is REGRESSION_SET, this column contains a regression test utterance that you want Alexa to test during model training.
  • Column 3 – The name of the intent to invoke in your interaction model.

The following example shows utterances you might include in the CSV file.

(Optional) Step 5: Implement the CanFulfillIntentRequest interface

You can use CanFulFillIntentRequest to respond "no" to requests that you don't want your skill to fulfill. For example, you might use CanFulFillIntentRequest if your skill is receiving requests that might more appropriately be handled by Alexa. By responding "no" to CanFulFillIntentRequest, your skill has the option to reject an intent, thereby offering Alexa with an opportunity to route elsewhere. For a code sample, see Can Fulfill Intent Request on GitHub.

If you implement CanFulFillIntentRequest, ensure that the CanFulFillIntentRequest duration for your skill is less than two seconds. Otherwise, your skill might not be able to answer users' requests. For details about the Duration metric, see AWS Lambda function metrics. If the duration is more than two seconds, optimize it by using the guidance in the AWS documentation at Operating Lambda: Performance optimization – Part 1 and Operating Lambda: Performance optimization – Part 2.

Step 6: Submit your skill for certification and publishing

Your skill must be published before the Alexa team can begin the training for name-free interaction. To start the certification process, contact your Alexa solution architect. Expect this process to take 10-15 days, depending on whether you need to update your skill to pass certification.

Step 7: Contact your Alexa solution architect to begin testing

Send your Alexa solution architect your skill ID, organization ID, and the room's unit ID so that they can enable this feature for your skill.

After the Alexa solution architect enables the feature for your skill, you can start testing your skill on an Alexa-enabled device registered to an Alexa Smart Properties product, such as Alexa Smart Properties for Hospitality. You can't test this feature by using the developer console.

Step 8: Test your skill locally

Ask at least one sample utterance from every intent in your skill. Try to ask Alexa the same question in many different ways to make sure you have enough sample utterances. For example, try adding "please" or "some" to your questions. If Alexa doesn't pick your skill, update your sample utterances. If you have problems, see Troubleshooting.

Test that your skill has the following characteristics:

  • Always listens for an answer after it asks a question.
  • Provides helpful answers even if the provided information is unexpected. For example, if your skill hears an animal when it expects a number, your skill might say, "Hmm, I didn't get that. How many visitors are you expecting?" If your skill still doesn't get a number, your skill might answer, "Hmm, I didn’t get that. Say 'Alexa, call the front desk' to connect with our staff."
  • Doesn't answer questions unrelated to the property or the local area.
  • Always respects basic commands like "Exit."

Step 9: Monitor your skill

Use the Alexa developer console to generate skill metrics reports.

For example, you can review the intent history in the developer console. This report displays aggregated, anonymized frequent utterances (for example, used by 10+ guests) that were routed to your skill. This data shows you how users interact with your skill so you can identify improvements you want to make to your skill.

Troubleshooting

If you run into problems testing your skill for name-free interaction, review these troubleshooting solutions. If you get stuck, contact your Alexa solution architect.

Issue: The skill isn't enabled

Symptoms

Your skill doesn't answer questions. For example, you ask, "Alexa, what's the visitor wi-fi password?" and Alexa responds with, "{Skill name} can help with that. Only the owner can enable skills on this device." This reply means that the skill isn't enabled for the property.

Try this

Enable the skill on the Alexa-enabled device you're using to test your skill.

Issue: The utterance isn't included in the skill interaction model or the intent isn't included in the name-free interaction container as an ingress point

Symptoms

Alexa doesn't invoke your skill to handle a name-free utterance.

Try this

Verify that the utterance exists as a sample utterance for an intent that is defined as an ingress point in the name-free interaction container.

Issue: Your skill isn't enabled for name-free interaction

Symptoms

Your skill only answers questions if you open it by name. For example, your skill doesn't respond to "Alexa, help me check out," but does respond to "Alexa, open {skill name} and help me check out."

Try this

Contact your Alexa solution architect to enable name-free interaction for your skill.

Issue: Your skill doesn't respond "No" to CanFulfillIntentRequest

Symptoms

Your skill answers questions that are unrelated to a property or local services.

Try this

Update your skill's response to CanFulfillIntentRequest to "No." For tips, see Understand Name-Free Interactions.

Issue: CanFulfillIntentResponse exceptions

Symptoms

Your skill gets CanFulfillIntentResponse exceptions.

Try this

Create integration tests for your skill.

Issue: An utterance doesn't have a slot value

Symptoms

Your skill doesn't receive traffic for a sample utterance.

Try this

Revise the sample utterance to include a slot value and slot. Clear slot values increase the probability that Alexa sends a question to your skill.

Issue: Your skill's CanFulfillmentResponse takes more than two seconds to respond

Symptoms

Your skill responded "yes" to CanFulfillmentResponse, but the skill wasn't invoked to handle the subsequent name-free interaction utterance.

Try this

Verify that your skill responds quickly enough to a CanFulfillmentResponse request so that Alexa considers your skill for the response. If you're using a Lambda function, use provisioned concurrency to prevent the Lambda cold-start issue. For details, see the AWS documentation at Operating Lambda: Performance optimization – Part 1 and Operating Lambda: Performance optimization – Part 2.