#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
для установки или изменения данных об исходном намерении, убедитесь, что имя намерения и полный набор слотов соответствуют намерению, отправленному вашему навыку.
Итак, чтобы использовать ваш пример, это то, что вы бы сделали:
-
Пользователь: Alexa, попросите SkillName предоставить мне просроченные счета.
- Вызвать
invoices
намерение. - Сделайте вызов API, получите # invoices.
- Верните
Dialog.Delegate
илиDialog.ElicitSlot
илиDialog.ConfirmIntent
сupdatedIntent
значениемreminders
intent. (включать любые слоты, должен быть полный объект intent) - Установите для outputSpeech значение «У вас есть X количество счетов. Вы хотите отправлять напоминания о платежах?»
- Вызвать
-
Alexa: У вас есть X количество счетов. Вы хотите отправлять напоминания о платежах?
-
Пользователь: Да.
- В зависимости от того, какую диалоговую директиву вы выбрали для использования, она будет возвращать ответ пользователя по-разному. Либо заполняя подготовленный вами слот, либо в
confirmationStatus
, либоAMAZON.YesIntent
. - Проверьте правильность одного из них и выполните вызов API напоминаний, если это подтверждено.
- Вернуть выполненное намерение с выходным сообщением:
- В зависимости от того, какую диалоговую директиву вы выбрали для использования, она будет возвращать ответ пользователя по-разному. Либо заполняя подготовленный вами слот, либо в
-
Alexa: Ваш запрос на отправку напоминаний зарегистрирован. Чем еще я могу помочь?
Комментарии:
1. Я пытаюсь переварить это и применить ваши предложения. Да, вы правы. Поскольку у меня другое намерение для напоминаний. » Alexa, попросите приложение отправить просроченные напоминания. «. вот почему я должен сохранять отдельное намерение. Диалог кажется мне довольно близким к тому, что я ищу.