function createDialog()

in Node/core/src/dialogs/require-fields-dialog.ts [26:74]


function createDialog() {
    return common.createBaseDialog({ recognizeMode: RecognizeMode.onBegin })
        .onBegin((session, args, next) => {
            if (args.place.address) {
                args.place.address.formattedAddress = common.getFormattedAddressFromLocation( args.place, session.gettext(Strings.AddressSeparator));
            }
        
            if (args.requiredFields) {
                session.dialogData.place = args.place;
                session.dialogData.index = -1;
                session.dialogData.requiredFieldsFlag = args.requiredFields;
                next();
            } else {
                session.endDialogWithResult({ response: { place: args.place } });
            }
        })
        .onDefault((session) => {
            var index = session.dialogData.index;

            if (index >= 0) {
                if (!session.message.text) {
                    return;
                }

                session.dialogData.lastInput = session.message.text;
                session.dialogData.place.address[fields[index].name] = session.message.text;
                session.dialogData.place.address.formattedAddress = common.getFormattedAddressFromLocation( session.dialogData.place, session.gettext(Strings.AddressSeparator));
            }

            index++;

            while (index < fields.length) {
                if (completeFieldIfMissing(session, fields[index])) {
                    break;
                }

                index++;
            }

            session.dialogData.index = index;

            if (index >= fields.length) {

                session.endDialogWithResult({ response: { place: session.dialogData.place } });
            } else {
                session.sendBatch();
            }
        });
}