How to Update Your Skills for Australia and New Zealand

David Isbitski Nov 29, 2017
Share:
Tips & Tools
Blog_Header_Post_Img

Today, we announced that Amazon Alexa and Alexa-enabled devices are coming to Australia and New Zealand in early 2018. Starting today, you can use the Alexa Skills Kit (ASK) to build skills for customers in these countries using the new English (Australia) language model.

If you are new to skill development, check out this detailed walkthrough to get started.

If you’re an experienced Alexa developer, you can enhance your existing skill by extending it to support the new language model for Australia. This tutorial will show you how you can add support for the English (Australia) model for your existing skills. It will also show you how you can use the Alexa Skills Kit to respond based on locales.

What You Will Learn

  1. How to update a skill for Australia and New Zealand using the new English (Australia) language model,
  2. How to update your AWS Lambda function, so your skill delivers the right content to your customers in each of the supported regions—all from a single code base.

Part 1: Add the New Language Model for Your Skill

  1. Navigate to your existing skill on the Amazon Developer Portal.
  2. Click on Add a New Language button. In this example, the skill already has language models for English (U.S), English (India), and English (Canada).

how to use alexa skills

Follow the steps below to complete the Skill Information tab:

  1. Language: Choose English (Australia) from the dropdown.

how to use alexa skills

         b. Name: Keep the same name for this version: Daily Inspiration. If       appropriate for the language, you could provide a different name.

          c. Invocation Name: Let's set the invocation name to daily inspiration.

          d. Leave other options to their defaults.

          e. Click on Save, and then click on Next to move to the Interaction Model.

4. We now need to provide the interaction model for the Australia version. We can do that by simply copying the interaction model from the US version of our skill. This example illustrates setting up the interaction model with the skill builder (beta). Switch to the US version by clicking on the language dropdown in the skill builder, and choose English (US).

how to use alexa skills

5. Click on Code Editor on the left side bar. This displays the complete interaction model for the skill in JSON format.

how to use alexa skills

6. Select and copy all of the JSON in the code window.

7. Switch back to English (Australia) using the dropdown from Step 4.

8. Click on Code Editor again, and paste the JSON into the code window, replacing the existing JSON.

9. Click on the Apply Changes button.

10. Click on the Build Model button. 

how to use alexa skills

We now have the language model built for English (Australia). Since we just copied and pasted the entire interaction model from English (US), all your intents, sample utterances, and custom slot values are identical for both languages. You can edit these elements separately if you want – for example, you might want to provide locale-specific sample utterances. Add and edit your sample utterances in skill builder normally. Your interaction model changes are specific to the selected locale.

If your interaction model uses any built-in slot types, you may need to make changes to ensure that the types are supported in the locale. For example, the AMAZON.US_FIRST_NAME is supported in English (U.S.), English (U.K.), English (Canada), and German. An equivalent first name slot type, AMAZON.FirstName, is available for English (India), English (Australia) and Japanese. See the Slot Type Reference for a list of slot types for each supported locale.

Once you have finished updating your interaction model for English (Australia), you need to customize the responses your skill returns for the different locales that you support. Do this by updating your Lambda function.

Part 2: Update the Lambda Function

Now that your skill is ready to support multiple regions, you may want to update your Lambda function to ensure that your skill provides responses tailored to each supported region.

For instance, you may want to greet your customers with “G’day” in Australia, “Hello” in Canada and the UK, “Namaste,” in India, and "Hi" in the US. The Alexa Skills Kit makes that really simple. Here is an example of how you would do this with the Alexa Skills Kit SDK for Node.js.

Step 1: Set the language strings for each region

To do this, we define all user-facing language strings in the following format:

Copied to clipboard
var languageStrings = {
  'en-AU': {
    translation:{
        SKILL_NAME: 'Australian Quotes',
        SKILL_GREETING: 'G\'day',
        WELCOME_MESSAGE: '%s! You can ask me for an inspirational quote.',
        PERSONALIZED_INTRO: "%s, here is your quote for today: ",
    }
  },
  'en-CA': {
    translation: {
        SKILL_NAME: 'Canadian Quotes',
        SKILL_GREETING: 'Hello',
        WELCOME_MESSAGE: '%s. You can ask me for an inspirational quote.',
        PERSONALIZED_INTRO: "%s, here is your quote for today: "
    },
  },
  'en-US': {
    translation: {
        SKILL_NAME: 'American Quotes',
        SKILL_GREETING: 'Hi',
        WELCOME_MESSAGE: '%s! You can ask me for an inspirational quote.',
        PERSONALIZED_INTRO: "%s, here is your quote for today: "
    },
},
  'en-IN': {
    translation: {
        SKILL_NAME: 'Indian Quotes',
        SKILL_GREETING: 'Namaste',
        WELCOME_MESSAGE: '%s! You can ask me for an inspirational quote.',
        PERSONALIZED_INTRO: "%s, here is your quote for today: "
    },
  },
  'en-GB': {
    translation: {
        SKILL_NAME: 'British Quotes',
        SKILL_GREETING: 'Hello'
        WELCOME_MESSAGE: '%s. You can ask me for an inspirational quote.',
        PERSONALIZED_INTRO: "%s, here is your quote for today: "
    },
  }
};

As you can see, languageStrings object contains five objects, one for each supported English language (en-CA, en-US, en-GB, en-IN, and now en-AU). The object names are identical to the value of the locale property that is passed to our skill when it is invoked by Alexa. This tells us the language model the end user’s device is configured to use so that we can respond with the appropriate language. If you wanted to support German and Japanese, you would add additional objects for 'de-DE' and 'ja-JP' with appropriate translations.

You can see this in action by looking at the JSON request sent to your skill through the Service Simulator. When testing in the simulator, be sure to select the tab for the language you want to test. In our example, when testing from the English (Australia) tab, the request sent to the skill includes the en-AU locale:

how to use alexa skills

Each language has a translations object within languageStrings. This is where we specify any properties that are different for each language. For our example, we have SKILL_GREETING and SKILL_NAME as part of the language strings. You can add more strings as you find relevant. Since this “daily inspiration” example is a skill that provides quotations, you can create different sets of inspirational quotes for each locale.

Step 2: Enable Internationalization for Your Skill Using the Alexa Skills Kit SDK

To enable string internationalization (i18n) features in Alexa-sdk, we set resources to the languageStrings object we created above:

Copied to clipboard
exports.handler = function (event, context) {
    const alexa = Alexa.handler(event, context);
    alexa.APP_ID = APP_ID;
    // To enable string internationalization (i18n) features, set a resources object.
    alexa.resources = languageStrings;
    alexa.registerHandlers(handlers);
    alexa.execute();
};
Step 3: Access the Language Strings in Your Code

Once you are done defining and enabling language strings, you can access these strings using the this.t() function. Strings will be rendered in the language that matches the locale of the incoming request.

This handler for the LaunchRequest retrieves the localized strings for the welcome message and skill greeting, then assembles a complete welcome message for the skill. For an English (Australia) skill, this would return the speech output: "G’day! You can ask me for an inspirational quote," while for an English (India) skill, this same code would return the speech output “Namaste! You can ask me for an inspirational quote.”

Copied to clipboard
'LaunchRequest': function () {
    this.attributes.speechOutput = this.t('WELCOME_MESSAGE', this.t('SKILL_GREETING'));
    
    this.attributes.repromptSpeech = 
        this.t('HELP_REPROMPT');

    this.response
        .speak(this.attributes.speechOutput)
        .listen(this.attributes.repromptSpeech);

    this.emit(':responseReady');
}

That’s all that it takes to update your skill to be available for customers in Australia and New Zealand.

We are excited to have Alexa available in Australia and New Zealand, and we can't wait to see what you build.

Check out our documentation on Developing Skills in Multiple Languages to learn more about how you can use the Alexa Skills Kit to create multi-language skills.

Learn More

  1. Alexa Skill Templates and Sample Code on GitHub
  2. Alexa Cookbook
  3. Alexa Skill Development Courses on Codecademy
  4. Alexa Skills Kit Training Resources
  5. Alexa Developer Forums
  6. Alexa Developer Blog

Useful Blog Posts

  1. Tips for a Successful Alexa Skill Certification
  2. Why console.log() Is Your Friend
  3. Export Your Amazon Lex Bot Schema to Use in Your Alexa Skill
  4. Getting Started with the Alexa Skill Management API and the Alexa Skills Kit Command-line Interface
  5. Publishing Your Skill Code to Lambda via the Command Line Interface
  6. Alexa Account Linking: 5 Steps to Seamlessly Link Your Alexa Skill with Login with Amazon

SDKs