2016-11-17 7 views
1
var intent = args.intent; 
    var number = builder.EntityRecognizer.findEntity(intent.entities, 'builtin.numer'); 

когда я использую findentity его двигаться вперед, если ответ правильный или нет, как я могу использовать лицо решимость на то, что не встроенных entitesкак остановить бот не двигаться вперед, если объект не разрешает

var location1 = builder.EntityRecognizer.findEntity(intent.entities, 'Location'); 
    var time = builder.EntityRecognizer.resolveTime(intent.entities); 

, когда я использую время разрешения, он запрашивает снова и снова, если только объект не разрешен;

var alarm = session.dialogData.alarm = { 
     number: number ? number.entity : null, 
     timestamp: time ? time.getTime() : null, 
     location1: location1? location1.entity :null 
    }; 
    /* if (!number & !location1 time) 
    {} */ 


    // Prompt for number 
    if (!alarm.number) { 
     builder.Prompts.text(session, 'how many people you are'); 
    } else { 
     next(); 
    } 
}, 
function (session, results, next) { 
    var alarm = session.dialogData.alarm; 

    if (results.response) { 
     alarm.number = results.response; 
    } 
+0

закрытия GH вопрос [# 2594] (https://github.com/Microsoft/BotBuilder/issues/2594). Пожалуйста, публикуйте только связанные с SDK ошибки, проблемы или предложения на GitHub и размещайте общие вопросы о том, как это сделать на StackOverflow. –

ответ

0

Я считаю, что я уже ответил на этот вопрос на StackOverflow: "Botframework Prompt dialogs until user finishes".

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

Вторым шагом будет принимать ответ пользователя на первый шаг и либо установить значение в объект session данных (например, session.userData или session.conversationData) или перезапустить диалог, используя session.replaceDialog() или session.beginDialog().

В главном диалоговом окне вы измените шаг, в котором вы используете EntityRecognizers, чтобы включить if-инструкцию, которая начнет ваш мини-диалог. Чтобы вызвать if-statement, вы можете использовать тот же дизайн, что и в этом GitHub example или в вашем коде. Этот код может выглядеть следующим образом:

var location1 = builder.EntityRecognizer.findEntity(intent.entities, 'Location'); 

session.userData.location1 = location1 ? location1.entity : null; 

if(!session.userData.location1) { 
    session.beginDialog('<get-location-dialog>'); 
} 
+0

, мы не могли сделать это в командной строке и проверить, решено ли сущность или нет, что указано ниже. – subhan

+0

В запросах будет проверяться, соответствует ли значение или тип значения запрашиваемому значению. Например, если используется 'builder.Prompts.number()', chatbot использует шаблон регулярного выражения, чтобы соответствовать тому, что было предоставлено пользователем. Аналогично для '.choices()' он будет проверять ответ пользователя, чтобы убедиться, что он соответствует предоставленным параметрам. Однако для '.text()' он не будет делать эти вещи, а также не проверять любые значения, которые вы ожидаете на следующем этапе водопада. –