Подтвердить что ты не робот

Amazon Alexa: хранить пользовательские слова

Я новичок в написании навыков Alexa и хочу написать умение хранить слова говорящего.
Например, если я говорю: "Alexa, save {what я say}", он должен сохранить слова в некоторой строке.
Теперь из того, что я понимаю, схема намерения должна быть похожа на

{
   intents:[
       "intent" : "SaveIntent"
   ]
}

и высказывания вроде

SaveIntent save
SaveIntent store

В этом случае, как я могу хранить "{то, что я говорю?"?

4b9b3361

Ответ 1

Чтобы записать речевой ввод свободной формы (а не определенный список возможных значений), вам нужно использовать тип слота AMAZON.LITERAL. Документация Amazon для типа слота Literal описывает пример использования, подобный вашему, где создается навык, чтобы принять любую фразу и опубликовать ее в Social Медиа-сайт. Это делается путем создания намерения StatusUpdate:

{
  "intents": [
    {
      "intent": "StatusUpdate",
      "slots": [
        {
          "name": "UpdateText",
          "type": "AMAZON.LITERAL"
        }
      ]
    }
  ]
}

Так как он использует тип слота AMAZON.LITERAL, это намерение сможет зафиксировать любую произвольную фразу. Однако для обеспечения того, чтобы речевой движок выполнял достойную работу по захвату реальных фраз, вам нужно предоставить множество примеров высказываний, которые напоминают то, что вы ожидаете от пользователя.

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

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

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

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

Тем не менее, здесь пример Sample Utterances из документации снова:

StatusUpdate опубликует обновление {прибыл | UpdateText}

StatusUpdate опубликует обновление {время обеда | UpdateText}

StatusUpdate опубликует обновление {out at lunch | UpdateText}

... (больше примеров с фразами с 4-10 словами)

StatusUpdate опубликует обновление {собирается сегодня вечером в продуктовом магазине | UpdateText}

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

Ответ 2

Тип AMAZON.LITERAL устарел, и навыки, которые его используют, не будут проходить сертификацию после 30 ноября 2016 года.

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

Ответ 3

Обновлено. Этот ответ неверен. в комментариях есть тип Amazon.Literal Slot, который должен это допускать.


Alexa в настоящее время не поддерживает доступ к входным данным пользователя. Это возможно в будущем, или вы можете посмотреть какой-то другой голос в текстовый API, например Google.

Единственный способ сделать это в настоящее время с Alexa - это иметь список слов, который пользователь мог бы сказать, что он сохранит.

Для этого вы можете следовать примеру Amazon с использованием пользовательского слота type. Затем поместите все возможные слова, которые пользователь скажет в эту категорию.

Ответ 4

(8/5/17) К сожалению, эта функция была удалена с Amazon с устранением AMAZON.LITERALS.

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

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

Как внести вклад в смешанную строку Amazon Alexa Skills Kit (ASK) с цифрами? fooobar.com/info/313824/...