Как построить мелочи для амазонского эха в течение часа

20 января 2018

Долгое время было задано, что общение с компьютерами происходит через пользовательский интерфейс на физическом устройстве: запись команд на клавиатуре или нажатие или щелчок по значкам. Говорить с вашим компьютером на естественном языке было то, что произошло только в научной фантастике.

Но мир меняется, и пользовательские пользовательские интерфейсы, наконец, входят в наши дома и офисы, размывая линию между вычислениями и реальной жизнью.

Amazon Echo, и Alexa, голосовая служба, которая ее поддерживает, являются одними из первых примеров этой новой технологии.

В этом уроке мы будем использовать Alexa Skills Kit, AWS Lambda и некоторый исходный код шаблона от Amazon, чтобы создать игру для мелочей, которую можно играть с помощью устройства Amazon Echo или любого устройства с поддержкой Alexa, такого как Amazon Fire TV, Echo Dot или Amazon Tap.

После завершения учебного пособия у вас будет хорошее базовое понимание создания новых навыков для Alexa, и мы будем готовы участвовать в изучении новой границы голосовой опыт пользователей.

Краткий обзор архитектуры

Мастерство Alexa - приложение Alexa, управляемое голосом, состоит из двух частей:

Мастерство, определенное на портале разработчиков Amazon. Это то, что связывает все это вместе, связывая фразы, которые пользователь говорит, чтобы взаимодействовать с игрой (например, «начать игры с оленями») в логику приложения. Веб-сервис, который вызывается, когда пользователь дает команду навыку. Служба может работать на любом защищенном веб-сервере, который отвечает на JSON-based API.

В этом уроке мы запустим веб-службу на AWS Lambda, услуге, которая выполняет код в ответ на события, тем самым сохраняя разработчику проблемы с обслуживанием сервера. Lambda также легко соединяется с Alexa Skills Kit, что делает его отличным инструментом для запуска кода для Alexa Skills.

Мы реализуем функциональность сервера как модуль Node.js, поэтому для завершения учебника вам потребуется базовое понимание JavaScript. Опыт Node.js - это плюс, но совершенно не обязательно заполнять учебник.

1. Создайте лямбда-функцию

Давайте начнем строить игру, настроив функцию AWS Lambda для запуска своей бизнес-логики.

Шаг 1: Начало работы с AWS Lambda

Для использования Lambda вам сначала потребуется учетная запись Amazon Web Services (AWS).

Если у вас уже есть учетная запись, нажмите «Войти в консоль» в правом верхнем углу страницы, чтобы начать.

Если вы новый пользователь, вы увидите другую ссылку: создайте учетную запись AWS. Нажмите ссылку и следуйте инструкциям на странице, чтобы зарегистрироваться для бесплатной учетной записи.

Во время регистрации вам необходимо будет ввести действительную информацию о кредитной карте. Но не беспокойтесь, вы не будете платить, если ваше использование не будет превышать уровень бесплатного использования, что для Lambda означает 1 миллион бесплатных запросов и до 3,2 миллиона секунд «времени вычисления» в месяц более, чем достаточно для прохождения учебное пособие и тестирование его функциональности.

После того, как вы завершили регистрацию и вошли в Консоль AWS, вы можете активировать Lambda для своей учетной записи.

Сначала проверьте верхний правый угол страницы, чтобы убедиться, что вы используете регион США в Восточной (Северная Вирджиния).

Затем в списке служб выберите Лямбда:

Если вы впервые используете этот инструмент, вы увидите следующий экран с некоторой информацией о том, что вы можете с ним сделать.

Нажмите «Начать сейчас».

Шаг 2: настройка лямбда-функции

Поскольку вы еще не создали никаких Лямбда-функций, пользовательский интерфейс запускается в мастере создания новых функций. Во-первых, он показывает вам список чертежей, образцы Lambda-конфигураций для различных распространенных случаев использования.

Мы собираемся построить нашу игру пустяков с нуля, поэтому прокрутите вниз и нажмите кнопку «Пропустить» в нижней части страницы.

Следующим шагом в мастере является «Настроить функцию»:

Введите некоторую информацию о вашей новой лямбда function:

Имя: выберите описательное имя для функции. Это имя не та, которую вы покажете пользователям Alexa, поэтому вам не нужно беспокоиться о том, чтобы сделать ее уникальной вне вашей учетной записи Lambda. Просто придумайте что-нибудь описательное, которое поможет вам распознать функцию в вашей консоли AWS Lambda. В этом примере мы поговорим с MyTriviaGame, но вы можете выбрать все, что захотите. Описание: Это поле является необязательным, и оно используется для документирования вашей работы. Если вы хотите, вы можете ввести что-то вроде «Моя первая игровая игра». Runtime: Язык сервера, используемый для запуска вашего кода. AWS Lambda поддерживает Node.js, Java и Python. В этом уроке мы будем использовать Node.js.

Далее на странице вы увидите редактор для ввода кода функции.

Прежде чем перейти к нему, прокрутите вниз и настройте остальные параметры:

Обработчик: укажите функцию JavaScript, которую Lambda должен вызывать при запуске вашего кода в формате.. При использовании встроенного редактора код сохраняется как index.js. И, как мы вскоре увидим, функция обработчика в игре о пустяках называется обработчиком. Итак, чтобы использовать эту функцию, введите index.handler. Роль: роль безопасности IAM, которую следует использовать при работе функции Lambda. Выберите «Основная роль выполнения» в раскрывающемся списке, чтобы создать новую роль. Если вы раньше использовали Lambda, у вас может быть роль lambda_basic_execution. В этом случае вы можете использовать существующий.

Появится новое окно или вкладка для настройки роли. Если ничего не происходит, убедитесь, что настройки вашего браузера настроены на разрешение всплывающих окон, а затем повторите попытку.

Для этих значений по умолчанию не требуются изменения. Нажмите «Разрешить», чтобы создать новое правило IAM и вернуться на предыдущую страницу. Также оставляйте поля в дополнительных настройках по умолчанию.

Затем, с готовностью конфигурации, давайте введем код.

Шаг 3: Добавить код JavaScript

При определении функции лямбда вы можете либо написать свой код в встроенном редакторе прямо в интерфейсе Amazon Lambda, либо загрузить его в виде zip-файла. Встроенный редактор в настоящее время ограничен 20 КБ, поэтому для больших функций или для разделения кода на несколько файлов (например, если вы используете библиотеки), подход к zip-файлу - это путь.

На этот раз мы не будем создавать ничего слишком сложного, поэтому мы отлично используем встроенный редактор.

Скопируйте исходный код из мастерства образцов амазонок «Оленеводы» и вставьте его в редактор кода. Reindeer Games - это полная реализация игры с пустяками, которую вы можете свободно использовать в качестве шаблона для своей собственной игры.

В оставшейся части этого шага мы рассмотрим основные части кода мелочи, чтобы увидеть, как он взаимодействует с конфигурацией Alexa Skills Kit, которую мы создадим позже в учебнике, и дать вам несколько указателей на начните с изучения и настройки кода самостоятельно.

Код JavaScript начинается с структуры данных (строки 18-265 в исходном коде шаблона), который содержит вопросы для игры с пустяками. Каждый пустячный вопрос состоит из вопроса и массива с по меньшей мере четырьмя вариантами: правильный ответ, за которым следуют как минимум три неверных:

/**
 * When editing your questions pay attention to your punctuation. Make sure you use question marks or periods.
 * Make sure the first answer is the correct one. Set at least 4 answers, any extras will be shuffled in.
 */
var questions = [
    {
        "Reindeer have very thick coats, how many hairs per square inch do they have?": [
            "13,000",
            "1,200",
            "5,000",
            "700",
            "1,000",
            "120,000"
        ]
    },
    {
        "The 1964 classic Rudolph The Red Nosed Reindeer was filmed in:": [
            "Japan",
            "United States",
            "Finland",
            "Germany"
        ]
    },
    // ...
];

При настройке мелочи, замените вопросы своими: добавьте не менее 20, но желательно больше. Очень хорошее число будет 100 вопросов. Кроме того, помните, что правильный ответ всегда на первом месте.

Далее, после вопросов, в строках 267-305, вы найдете функцию обработчика, указанную на предыдущем шаге. Всякий раз, когда Alexa Skills Kit отправляет запрос функции Lambda, эта функция, обработчик, вызывается.

Функция принимает два параметра:

событие будет содержать объект с информацией о запросе. контекст будет представлять состояние функции лямбда (например, сколько времени осталось до истечения времени ожидания функции). Параметр контекста также используется для отправки ответа обратно вызывающему.

Дополнительную информацию см. В документации AWS Lambda.

Вот как выглядит функция:

// Route the incoming request based on type (LaunchRequest, IntentRequest,
// etc.) The JSON body of the request is provided in the event parameter.
exports.handler = function (event, context) {
    try {
        console.log("event.session.application.applicationId=" + event.session.application.applicationId);
        /**
         * Uncomment this if statement and populate with your skill's application ID to
         * prevent someone else from configuring a skill that sends requests to this function.
         */
//     if (event.session.application.applicationId !== "amzn1.echo-sdk-ams.app.05aecccb3-1461-48fb-a008-822ddrt6b516") {
//         context.fail("Invalid Application ID");
//      }
        if (event.session.new) {
            onSessionStarted({requestId: event.request.requestId}, event.session);
        }
        if (event.request.type === "LaunchRequest") {
            onLaunch(event.request,
                event.session,
                function callback(sessionAttributes, speechletResponse) {
                    context.succeed(buildResponse(sessionAttributes, speechletResponse));
                });
        } else if (event.request.type === "IntentRequest") {
            onIntent(event.request,
                event.session,
                function callback(sessionAttributes, speechletResponse) {
                    context.succeed(buildResponse(sessionAttributes, speechletResponse));
                });
        } else if (event.request.type === "SessionEndedRequest") {
            onSessionEnded(event.request, event.session);
            context.succeed();
        }
    } catch (e) {
        context.fail("Exception: " + e);
    }
};

В строках 278-280 (12-14 в этом фрагменте) вы найдете прокомментированную структуру if. Эта проверка необходима для предотвращения других навыков, чем тот, который вы скоро сконфигурируете при вызове вашей функции лямбда.

На данный момент оставьте код таким, какой он есть. Позже в учебном пособии, как только вы создали свой Alexa Skill и у вас есть уникальный идентификатор, вернитесь к этой проверке и замените пример ID приложения на строке 278 новым идентификатором. Затем раскомментируйте код, чтобы использовать его.

Каждый запрос от Alexa Skills Kit имеет тип, переданный в event.request.type.

Во всех случаях существует три типа запросов, каждый из которых служба должна отвечать отдельно:

LaunchRequest: отправляется, когда пользователь запускает навык. Код примера вызывает вспомогательную функцию onLaunch для инициализации игры, выбора вопросов и отправки первого вопроса вместе с приветственным сообщением. SessionEndedRequest: отправляется, когда пользователь перестает использовать навык, говоря «exit», не реагируя на какое-то время или если возникает ошибка. Код примера вызывает вспомогательную функцию onSessionEnded, которая в настоящее время является только заполнителем и ничего не делает. IntentRequest: отправляется, когда пользователь говорит команду, которая соответствует намерению. Код примера вызывает вспомогательную функцию onIntent.

Документация Amazon объясняет, что:

"[A]намерение представляет собой действие высокого уровня, которое выполняет устный запрос пользователя. В намерениях необязательно могут быть аргументы, называемые слотами, которые собирают дополнительную информацию, необходимую для выполнения запроса пользователя».

Когда пользователь говорит команду, Alexa преобразует ее в текст и сравнивает ее со списком фраз, которые приложение понимает. Каждая фраза сопоставляется с определением намерения, так что вашему коду не нужно беспокоиться о разборе ввода свободной формы от пользователя, но он может полагаться на намерения организовать свою связь с пользователем.

Скоро вы увидите, как указать намерения для своего навыка, но сначала давайте посмотрим на функцию onIntent, чтобы увидеть, как игра обрабатывает намерения.

Вы можете найти функцию в строках 327-371 в исходном коде:

/**
 * Called when the user specifies an intent for this skill.
 */
function onIntent(intentRequest, session, callback) {
    console.log("onIntent requestId=" + intentRequest.requestId
        + ", sessionId=" + session.sessionId);
    var intent = intentRequest.intent,
        intentName = intentRequest.intent.name;
    // handle yes/no intent after the user has been prompted
    if (session.attributes &&session.attributes.userPromptedToContinue) {
        delete session.attributes.userPromptedToContinue;
        if ("AMAZON.oIntent" === intentName) {
            handleFinishSessionRequest(intent, session, callback);
        } else if ("AMAZON.YesIntent" === intentName) {
            handleRepeatRequest(intent, session, callback);
        }
    }
    // dispatch custom intents to handlers here
    if ("AnswerIntent" === intentName) {
        handleAnswerRequest(intent, session, callback);
    } else if ("AnswerOnlyIntent" === intentName) {
        handleAnswerRequest(intent, session, callback);
    } else if ("DontKnowIntent" === intentName) {
        handleAnswerRequest(intent, session, callback);
    } else if ("AMAZON.YesIntent" === intentName) {
        handleAnswerRequest(intent, session, callback);
    } else if ("AMAZON.oIntent" === intentName) {
        handleAnswerRequest(intent, session, callback);
    } else if ("AMAZON.StartOverIntent" === intentName) {
        getWelcomeResponse(callback);
    } else if ("AMAZON.RepeatIntent" === intentName) {
        handleRepeatRequest(intent, session, callback);
    } else if ("AMAZON.HelpIntent" === intentName) {
        handleGetHelpRequest(intent, session, callback);
    } else if ("AMAZON.StopIntent" === intentName) {
        handleFinishSessionRequest(intent, session, callback);
    } else if ("AMAZON.CancelIntent" === intentName) {
        handleFinishSessionRequest(intent, session, callback);
    } else {
        throw "Invalid intent";
    }
}

Как вы можете видеть, большая часть функции - это структура if..else, которая сравнивает имя намерения от запроса к множеству намерений, которые принимает игра. В зависимости от имени намерения он вызывает соответствующую функцию геймплея.

Например, когда игра получает запрос с именем намерения AnswerIntent, он знает, что запрос является ответом на текущий вопрос и вызывает функцию handleAnswerRequest для его обработки.

Шаг 4: Сохранить лямбда-функцию

Поскольку это учебное пособие по созданию навыка для устройств с поддержкой Alexa, а не для разработки игр, мы не будем углубляться в логику игры. Но теперь у вас должны быть некоторые идеи о том, где начать думать, чтобы изучить код самостоятельно.

Прокрутите вниз до конца страницы и нажмите «Далее», чтобы сохранить конфигурацию.

На последнем шаге мастера вы увидите обзор настройки функции Lambda. Убедитесь, что все выглядит правильно, а затем нажмите «Создать функцию».

Теперь создана функция Lambda.

Если вам нужно изменить какие-либо параметры мастера, вы можете сделать это на вкладке «Конфигурация».

Шаг 5: Определите, как функция лямбда получает триггер

Теперь, когда вы создали функцию и поместили ее код на место, пришло время указать, как она вызвана. Мы сделаем это, добавив источник событий.

Сначала перейдите на вкладку Источники событий.

На этой вкладке после настройки вы найдете список источников событий, которые были настроены для этой функции Lambda. Нажмите ссылку Добавить источник события, чтобы добавить ее.

Открывается всплывающее окно для выбора типа источника события:

Выберите Alexa Skills Kit. Затем нажмите «Отправить».

Это все, что вам нужно сделать, чтобы заставить Лямбду прослушать события из Alexa Skills Kit.

Новый источник событий теперь указан на вкладке Источники событий:

Обратите внимание на идентификатор с меткой ARN в верхнем правом углу. Вы скоро будете использовать его, чтобы настроить Alexa Skill, чтобы вызвать правильную функцию лямбда.

Теперь давайте определим навык.

2. Настроить навык на портале разработчиков Amazo

Теперь вы установили логику игры с пустяками и настроили функцию для выполнения по просьбе Alexa Skills Kit.

Осталось создать навык, чтобы вы и ваши пользователи могли использовать фактическое устройство с поддержкой Alexa, такое как Amazon Echo, чтобы поговорить с кодом.

Для этого мы будем использовать Портал разработчиков Amazon.

Шаг 1: Создайте учетную запись разработчика Amazo

Начните с регистрации в учетной записи портала разработчика.

Нажмите «Войти» или «Создать бесплатную учетную запись» в правом верхнем углу страницы «Амазонка». Во-первых, вы увидите учетную запись Amazon по умолчанию. Используйте его, чтобы создать новую учетную запись или использовать существующую учетную запись Amazon (то же, что вы использовали при регистрации для AWS, например) для входа.

Если вы еще не использовали портал разработчика, вы вас попросят ввести некоторую информацию о вашей компании и принять соглашение о распространении приложений. Эта информация делится между любыми приложениями, которые вы можете создать для Amazon Marketplace, используя эту учетную запись.

Наконец, на последнем этапе поток регистрации запрашивает у вас платежи. В настоящее время Alexa Skills нельзя продавать или покупать, поэтому, если вы планируете развивать Alexa Skills, выберите No для обоих вопросов, чтобы пропустить любые шаги, связанные с монетизацией. Если вы решите монетизировать свои приложения позже, вы всегда можете вернуться к настройке, когда это станет актуальным.

Нажмите «Сохранить и продолжить».

Теперь вы подписаны и готовы добавить свой первый навык.

Шаг 2: добавьте свой первый навык Alexa

После входа в консоль разработчика перейдите на страницу Alexa Skills Kit: сначала нажмите «Apps &Services» в верхнем меню, а затем в подменю выберите «Alexa».

На этой странице вы увидите следующие варианты:

Выберите Alexa Skills Kit, нажав на кнопке Get Started.

На появившемся экране вы найдете все созданные вами навыки Alexa:

Список по-прежнему пуст, поэтому нажмите «Добавить новый навык», чтобы начать определение первого с помощью мастера с пятью шагами что приведет вас к изданию навыка, чтобы другие пользователи Alexa могли его найти и использовать.

Во-первых, на вкладке «Информация об умении» введите некоторую базовую информацию, чтобы определить свой новый навык.

Тип умения: выберите «Custom Interaction Model», поскольку вы создадите пользовательский навык, в котором вы определяете модель взаимодействия. Здесь вы можете узнать больше о различных типах навыков Alexa. Имя: описательное имя навыка. Как только вы опубликуете свое умение, это имя, которое ваши потенциальные пользователи увидят. В примере Amazon использует игры с оленями, но вы должны выбрать что-то свое, так как это имя уже используется. Invocation Name (Имя вызова): имя, которое пользователи будут использовать, когда они захотят сказать Alexa для выполнения этого навыка, например, «Alexa, open Reindeer Games». Обратите внимание, что это не должно быть таким же, как имя умения. При выборе имени вызова проверьте свои идеи с помощью устройства Echo, чтобы убедиться, что имя, которое вы выбираете, легко распознает Alexa. Таким образом, вы можете быть уверены, что ваши пользователи смогут активировать ваше умение без каких-либо дополнительных проблем.

После того, как информация будет на месте, нажмите «Далее».

Обратите внимание, что вы всегда можете вернуться к редактированию этой информации позже, если есть ошибки. После сохранения шага вы также найдете идентификатор приложения навыка, вернувшись к этому шагу (чтобы вы могли использовать его в своем JavaScript-коде для проверки запросов, как я упоминал ранее).

Шаг 3: Определение модели взаимодействия

Модель взаимодействия - это связь между пользователем, разговаривающим с устройством с поддержкой Alexa, например Amazon Echo, и функцией Lambda, которую мы установили ранее. В некотором роде, это определение пользовательского интерфейса для нашей части голосовой программы.

Модель состоит из схемы намерений, которая определяет набор намерений, используемых параметрами умения, намерения, известными как слоты и выражения, фразы, которые пользователь скажет, чтобы выполнить одно из намерений, определенных в схеме намерений.

Схема намерения

Скопируйте и вставьте следующий фрагмент кода в текстовое поле с надписью «Схема намерений»:

{
  "intents": [
    {
      "intent": "AnswerIntent",
      "slots": [
        {
          "name": "Answer",
          "type": "LIST_OF_ANSWERS"
        }
      ]
    },
    {
      "intent": "AnswerOnlyIntent",
      "slots": [
        {
          "name": "Answer",
          "type": "LIST_OF_ANSWERS"
        }
      ]
    },
    {
      "intent": "DontKnowIntent"
    },
    {
      "intent": "AMAZON.StartOverIntent"
    },
    {
      "intent": "AMAZON.RepeatIntent"
    },
    {
      "intent": "AMAZON.HelpIntent"
    },
    {
      "intent": "AMAZON.YesIntent"
    },
    {
      "intent": "AMAZON.oIntent"
    },
    {
      "intent": "AMAZON.StopIntent"
    },
    {
      "intent": "AMAZON.CancelIntent"
    }
  ]
}

Посмотрев на структуру данных, вы заметите, как имена целей, определенные в списке, совпадают с именами в JavaScript-коде, которые мы рассмотрели ранее в учебнике. Например, первым намерением, AnswerIntent, является тот, который сопоставляется с функцией, которая проверяет правильность ответа пользователя или нет.

Дополнительную информацию о разработке голосового интерфейса см. В документации Alexa Skills Kit.

Слоты

Хотя большинство намерений - это только идентификаторы с не более чем именем, пара из них определяет параметры, известные как слоты.

По-прежнему глядя на AnswerIntent, обратите внимание, что намерение определяет один параметр «Ответ» с типом слота LIST_OF_ANSWERS.

LIST_OF_ANSWERS - это тип пользовательского слота, поэтому мы должны указать его в конфигурации.

Нажмите «Добавить тип слота» и введите следующую информацию:

Введите тип: имя типа слота, как указано в схеме намерений. Введите LIST_OF_ANSWERS. Введите значения: принятые значения для слота, по одному значению в строке. Введите числа от 1 до 4, каждый на своей строке, чтобы дать возможность пользователю ответить на вопросы, указав правильный номер ответа.

Затем нажмите «ОК».

Теперь давайте вернемся к JavaScript и рассмотрим функцию с именем isAnswerSlotValid (строки 599-603), чтобы узнать, как функция использует этот слот для получения ответа пользователя:

function isAnswerSlotValid(intent) {
    var answerSlotFilled = intent.slots &&intent.slots.Answer &&intent.slots.Answer.value;
    var answerSlotIsInt = answerSlotFilled &&!isNaN(parseInt(intent.slots.Answer.value));
    return answerSlotIsInt &&parseInt(intent.slots.Answer.value) < (ANSWER_COUNT + 1) &&parseInt(intent.slots.Answer.value) > 0;
}

Здесь вы можете видеть, что объект намерения содержит атрибут, слоты, для передачи любых параметров, определенных в схеме намерений.

В этом случае есть только один ответ. Итак, посмотрев на намерение.slots.Answer.value, функция может увидеть, какой ответ выбрать пользователь, и проверить, является ли он правильным для текущего вопроса.

Примеры показаний

Наконец, чтобы завершить модель взаимодействия, вам нужно будет определить Sample Utterances, предложения, которые пользователь может сказать, чтобы вызвать намерения, указанные в схеме.

В текстовое поле введите одну фразу в строке, используя формат. Чтобы включить слот параметра, используйте {Answer}. Затем, когда пользователь говорит эту фразу, Alexa проанализирует ее и вызовет передачу службы в соответствующем Intention и проанализированное значение для слота ответа.

Начните с вставки следующих примерных высказываний. Затем вы можете продолжить, добавив столько высказываний, сколько захотите. На самом деле, чем больше (релевантных) фраз вы можете придумать, тем лучше.

AnswerIntent the answer is {Answer}
AnswerIntent my answer is {Answer}
AnswerIntent is it {Answer}
AnswerIntent {Answer} is my answer
AnswerOnlyIntent {Answer}
AMAZON.StartOverIntent start game
AMAZON.StartOverIntent new game
AMAZON.StartOverIntent start
AMAZON.StartOverIntent start new game
DontKnowIntent i don't know
DontKnowIntent don't know
DontKnowIntent skip
DontKnowIntent i don't know that
DontKnowIntent who knows
DontKnowIntent i don't know this questio
DontKnowIntent i don't know that one
DontKnowIntent duo

С этими высказываниями на месте, например, когда пользователь говорит: «два - мой ответ», Alexa отправит IntentRequest в функцию Lambda, передав в качестве намерения AnswerIntent и 2 в качестве значения для слота ответа.

Нажмите «Далее», чтобы сохранить модель взаимодействия. Построение модели взаимодействия может занять минуту или две, поэтому дайте ей некоторое время. Затем, как только сборка завершится, вы будете готовы настроить свой навык Alexa.

Шаг 4: Настройте свой навык Alexa

На вкладке «Конфигурация» введите некоторую информацию для настройки вашего навыка и определения веб-службы, которая отвечает за ее логику.

Конечная точка: метод выполнения функциональных возможностей умения. Наш код находится на AWS Lambda, поэтому выберите Lambda ARN. Затем в текстовом поле введите идентификатор, указанный мной в конце первой части учебника. Учетная запись: выберите Нет.

После того, как информация будет на месте, нажмите «Далее». Вы готовы начать тестирование своего нового навыка Alexa!

3. Протестируйте игру для игры

. Лучший способ проверить свой новый навык Alexa - сыграть игру с мелочами на реальном устройстве Echo, вы также можете проверить навык прямо в своем браузере, используя инструменты в следующий шаг «Добавить новый навык».

Шаг 1: Проверка игры в симуляторе

На странице тестирования вы найдете два инструмента тестирования:

    Voice Simulator можно использовать для проверки того, как Alexa говорит какое-либо предложение. Это полезно, например, при разработке вопросов для вашей мелочи: если вопрос не звучит правильно в симуляторе голоса, попробуйте еще раз и замените его версией, которая это делает. Сервис-симулятор проверяет функциональность навыка, как если бы вы использовали фактическое устройство с поддержкой Alexa. Используя этот инструмент, вы можете ввести высказывание и посмотреть, как реагирует на это приложение через Alexa Skills Kit.

Итак, давайте проверим игру, используя Сервисный симулятор.

В текстовом поле «Ввод текста» введите:

open reindeer games

Затем нажмите кнопку Ask Reindeer Games под ним.

Инструмент тестирования использует вашу модель взаимодействия для анализа команды, а затем делает запрос на функцию лямбда мастерства.

Если все пойдет хорошо, вы увидите запрос и ответ JSON, показанные под полем команды:

С левой стороны вы увидите запрос, который Alexa Skills Kit отправил на вашу функцию лямбда, и на правильно, как ваш код ответил на него.

Теперь вы можете проанализировать ответ JSON или более аутентичный опыт Echo, нажмите кнопку «Прослушать», чтобы услышать, как Alexa говорит вам ответ.

Как только вы услышали вопрос, попробуйте ответить на него. Выберите один из форматов высказываний, указанных на предыдущем шаге, и введите его в текстовое поле «Ввод текста».

Например:

the answer is four

Обратите внимание, что вам нужно записать номер в виде слова, а не фактическое число 4.

Правильно ли вы получили ответ? Продолжайте тестирование с различными высказываниями и изменениями потока, пока не почувствуете уверенность в том, что приложение работает должным образом, - и вы хорошо понимаете, как это работает.

Если что-то пойдет не так, и вы получили неверный ответ от сервера, вот некоторые распространенные ошибки, которые вы можете проверить, как указано разработчиками кода кода:

Скопировали ли вы правильное ARN для своей лямбда-функции в свой навык в портале разработчиков? Используете ли вы правильное имя вызова? Возможно, вы изменили его на нечто иное, чем игры с оленями, и теперь все еще тестируете имя примера? Вы говорите, что запускаете, запускаете или открываете? Уверены ли вы, что у вас нет других навыков в вашем аккаунте с тем же именем? Для этого шаблона вам необходимо иметь как минимум семь вопросов и ответов для функционирования бизнес-логики.

Шаг 2: Проверка игры на устройстве

Как мы видели на предыдущем шаге, онлайновый инструмент так же хорош, как и фактическое устройство для проверки логики и схемы взаимодействия приложения.

Однако этот метод тестирования не покажет вам, насколько хорошо Alexa сможет понять и проанализировать высказывания. Итак, если вы создаете умение, которое планируете публиковать, вы также можете провести финальное тестирование с помощью устройства, а не только этих онлайн-инструментов, прежде чем отправлять свои навыки.

Команда сертификации Amazon Alexa также проведет тщательное тестирование, прежде чем принять ваше умение на рынок. Если ваше умение еще не готово к сертификации, они отправят вам дополнительную обратную связь, чтобы сообщить вам о необходимых изменениях и помочь вам подготовить свое умение к публикации.

Чтобы проверить игру на своем устройстве Echo, сначала зарегистрируйте устройство с адресом электронной почты, который вы использовали для регистрации своей учетной записи разработчика на портале разработчиков Amazon. Как только это будет сделано, вы можете использовать умение точно так же, как и реальный конечный пользователь.

См. Документацию Alexa для получения дополнительных инструкций по тестированию.

4. Опубликуйте свое умение Alexa

Когда ваше умение будет готово к прайм-тайм, вы можете пойти и отпустить его в мир, чтобы его увидеть.

Не публикуйте пример приложения, как есть.

Вместо этого сделайте игру своей собственной, используя шаблон и то, что вы узнали в этом учебнике, в качестве основы для вашего удивительного нового навыка. Измените код в редакторе AWS Lambda, чтобы заменить вопросы, добавить новые высказывания в конфигурацию навыков и, возможно, внести некоторые другие изменения, которые будут соответствовать вашей версии игры с пустяками.

Затем на вкладке «Тест», после того как вы уверены в своем приложении, нажмите «Далее», чтобы перейти к последним двум шагам, ведущим к публикации навыка.

На вкладке «Информация о публикации» описывайте умение настолько подробно, насколько это необходимо, чтобы пользователи могли легко находить свои навыки, получать представление о том, как это работает и почему стоит попробовать, и как использовать Это. Это единственная возможность привлечь новых пользователей!

Значок также является важным элементом маркетинга. Это должно быть то, что потенциальные пользователи заметят и интересуются. Кроме того, обязательно загружайте изображения, которые вы имеете право использовать.

В любой момент при редактировании данных вы можете сохранить изменения, нажав «Сохранить» и просмотрите страницу описания навыков в приложении Alexa Companion. Это также означает, что описания будут отображаться, когда умение будет жить.

Внимательно изучите поля, уделяя пристальное внимание инструкциям. На скриншоте, приведенном выше, вы можете увидеть примерные значения из шаблона Reindeer Games от Amazon.

Если вы используете вариации этих значений, не забудьте заменить «Оленеводы» в Примерах фразами на имя вызова вашего умения.

Инструкции по тестированию видны только аттестационной группе Amazon Alexa. Вы можете просто упомянуть: «Я использую шаблон навыков Trivia на основе Образец кода «Оленеводческие игры».

Затем, когда вы будете готовы, нажмите «Далее».

На этом последнем этапе вы ответите на несколько вопросов о настройках конфиденциальности вашей игры.

Для игры с пустяками, основанной на этом учебнике, выберите Нет для обоих Да Нет вопросов: умение не позволяет пользователям тратить деньги или собирать информацию пользователя.

URL-адрес политики конфиденциальности и условия использования URL являются необязательными.

Когда вы думаете, что игра готова, нажмите «Отправить» для проверки. Затем ждите ввода от команды Alexa Skills: вы получите письма о прогрессе и, возможно, некоторые предложения о том, как вы можете улучшить свое мастерство.

И если все пойдет хорошо, через некоторое время будет запущена ваша мелочи для пользователей попробовать Amazon Echo или любое устройство с поддержкой Alexa!

Что дальше?

Теперь вы внедрили свой первый навык Alexa и должны иметь довольно хорошее представление о строительных блоках и процессе, используемых для его создания. Но это только начало.

Поймите глубже, придумайте новые способы использования голосового интерфейса или добавьте речевой интерфейс к существующему веб-приложению. Рынок голосовых приложений только начинается, и по-прежнему остается много неиспользованных идей для вас.

Получайте удовольствие, создавая будущее!

Создайте навык Alexa и получите три месяца бесплатно на Envato Tuts +