Тайм-аут и запасной вариант Amazon Skill Flow Builder для повторений и резюме - PullRequest
0 голосов
/ 01 ноября 2019

Я не могу найти решение в Skill Flow Builder для определения того, как часто возвращаются reprompt или recap, чтобы я мог вызвать запасной маршрут после 2-3 попыток запроса пользователя.

У кого-нибудь есть решение?

Вот типичный пример:

@welcome
    *say 
        Hello. Where do you want to go?
    *reprompt
        Where to go?
    *recap
        Where to go?
    *then
        hear route A {
            -> route_a
        }
        hear route B {
            -> route_b
        }

Проблема в том, что если вы не скажете «маршрут А» или «маршрут Б», вы получите повторениянавсегда.

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

Ответы [ 2 ]

1 голос
/ 02 ноября 2019

Если вы определите hear *, драйвер SFB направит поведение к нему, а не просто повторяет сообщение *recap.

Пример # повторения изменения во времени будет выглядеть примерно так:

@start
*say
    hello.
    Do you go to left or right?
*reprompt
    Do you want to go left, or right?
*recap
    This is a recap message.
*then
     hear left {
        set repromptCount as 0
        -> left room
     }

     hear right {
        set repromptCount as 0
        -> right room
     }

     hear * {
        increase repromptCount by 1
        set limit as 3
        if repromptCount < limit {
        -> start *recap
        }

        set repromptingDestination as 'reprompting destination'
        -> too many reprompts scene        
     }

@left room
*say
    left room

@right room
*say
    right room

@too many reprompts scene
*say
    You didn't know what to do too much.
*then
    -> {repromptingDestination}

@reprompting destination
*say
    Reprompt destination
0 голосов
/ 02 ноября 2019

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

@global prepend
    *then
     hear * {
            -> recapHandler
        }
@recapHandler
    // *say
    // DEBUG     Recap count is {recapCount} [pause] Recap limit is {recapLimit}
    *then
        increase recapCount by 1
        if recapCount <= recapLimit {
            -> {recapScene} *recap
        }
        set recapCount as 0
        -> {fallbackScene}

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

@aScene
    *say
        blah blah
    *recap
        recap message
    *then
        set recapScene as 'aScene'
        set fallbackScene as 'aFallbackScene'
        hear * {
            -> recapHandler
        }
...