Логично ли вызывать другое намерение из пользовательского намерения в приложении Alexa

#alexa #alexa-skills-kit

#alexa #alexa-skills-kit

Вопрос:

Мое взаимодействие должно выполняться в два этапа. на первом шаге. Alexa передаст некоторую информацию пользователю. На основе опубликованной информации Alexa попросит выполнить другое действие из ответа пользователя (который является да / нет).

Итак, возможно ли вызвать одно намерение, и на основе ответа предыдущего намерения через reprompt я смог бы вызвать другое намерение приложения alexa.

если да, то как я могу это сделать через akexa node js SDK v2.

Пример использования:
Мое приложение подключается к стороннему API, которому требуется, чтобы alexa использовала ссылку на учетную запись. Сценарий заключается в том, что моя учетная запись связана, и у меня есть действительный токен доступа. Вот как будет проходить разговор:

Пользователь: Alexa, попросите «a» предоставить мне просроченные счета.
Alexa: У вас есть «x» количество счетов. Вы хотите отправлять напоминания о платежах?
Пользователь: Да.
Alexa: Ваш запрос на отправку напоминаний зарегистрирован. Чем еще я могу помочь?
Пользователь: Нет, спасибо.

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

Комментарии:

1. Мне кажется, что вы должны использовать одно намерение и, возможно, слоты, чтобы определить, как приступить к выполнению этого намерения. Я предлагаю создавать намерения только для совершенно отдельных действий, которые пользователь будет запускать самостоятельно. И для намерений, которые слишком похожи или зависят друг от друга, реструктурируйте их в одно намерение и используйте слоты. Конечно, это зависит от вашего варианта использования, поэтому, если вы настаиваете, возможно, добавьте более конкретный пример того, что вы пытаетесь сделать.

2. Мое приложение подключается к стороннему API, которому требуется, чтобы alexa использовала ссылку на учетную запись. Сценарий заключается в том, что моя учетная запись связана, и у меня есть действительный токен доступа. Вот как будет проходить разговор. Пользователь: Alexa, попросите «a» предоставить мне просроченные счета. Alexa: У вас есть «x» количество счетов. Вы хотите отправлять напоминания о платежах. Пользователь: Да. Alexa: ваш запрос на отправку напоминаний зарегистрирован. Чем еще я могу помочь? Пользователь: Нет, спасибо. Итак, для этого мне нужно связаться с внешним API два раза. один, при получении просроченных счетов. и при отправке напоминаний. Имеет ли это смысл?

Ответ №1:

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

Проверьте: Как передать новое намерение

Каждая из директив диалога включает updatedIntent свойство, которое может принимать объект Intent. Используйте это, чтобы:

  • Вызвать диалоговое окно с совершенно другим намерением. Например, после завершения диалога для намерения BookFlight вы могли бы вернуться, Dialog.Delegate установив updatedIntent значение BookRentalCar , чтобы начать новое диалоговое окно.


Когда вы используете updatedIntent для изменения другого намерения, директива действует против нового намерения вместо исходного:


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

Итак, чтобы использовать ваш пример, это то, что вы бы сделали:

  1. Пользователь: Alexa, попросите SkillName предоставить мне просроченные счета.

    • Вызвать invoices намерение.
    • Сделайте вызов API, получите # invoices.
    • Верните Dialog.Delegate или Dialog.ElicitSlot или Dialog.ConfirmIntent с updatedIntent значением reminders intent. (включать любые слоты, должен быть полный объект intent)
    • Установите для outputSpeech значение «У вас есть X количество счетов. Вы хотите отправлять напоминания о платежах?»
  2. Alexa: У вас есть X количество счетов. Вы хотите отправлять напоминания о платежах?

  3. Пользователь: Да.

    • В зависимости от того, какую диалоговую директиву вы выбрали для использования, она будет возвращать ответ пользователя по-разному. Либо заполняя подготовленный вами слот, либо в confirmationStatus , либо AMAZON.YesIntent .
    • Проверьте правильность одного из них и выполните вызов API напоминаний, если это подтверждено.
    • Вернуть выполненное намерение с выходным сообщением:
  4. Alexa: Ваш запрос на отправку напоминаний зарегистрирован. Чем еще я могу помочь?

Комментарии:

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