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

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

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

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

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

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

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

1 Ответ

1 голос
/ 16 марта 2019

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

Выезд: Как передать новое намерение

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

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

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

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

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

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

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

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

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

...