Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
let lgFile = Templates.parseFile(path.join(__dirname, "userProfileDialog.lg"));
let userProfileAdaptiveDialog = new AdaptiveDialog(ROOT_DIALOG).configure({
generator: new TemplateEngineLanguageGenerator(lgFile),
triggers: [
new OnBeginDialog([
// Ask for user's age and set it in user.userProfile scope.
new TextInput().configure(
{
// Set the output of the text input to this property in memory.
property: new StringExpression("user.userProfile.Transport"),
prompt: new ActivityTemplate("${ModeOfTransportPrompt.Text()}")
}),
new TextInput().configure(
{
property: new StringExpression("user.userProfile.Name"),
prompt: new ActivityTemplate("${AskForName()}")
}),
// SendActivity supports full language generation resolution.
// See here to learn more about language generation
// https://aka.ms/language-generation
new SendActivity("${AckName()}"),
new ConfirmInput().configure(
{
property: new StringExpression("turn.ageConfirmation"),
prompt: new ActivityTemplate("${AgeConfirmPrompt()}")
}),
new IfCondition().configure(
{
// All conditions are expressed using the common expression language.
// See https://aka.ms/adaptive-expressions to learn more
condition: new BoolExpression("turn.ageConfirmation == true"),
actions: [
// https://aka.ms/language-generation
new SendActivity("${AckName()}"),
new ConfirmInput().configure(
{
property: new StringExpression("turn.ageConfirmation"),
prompt: new ActivityTemplate("${AgeConfirmPrompt()}")
}),
new IfCondition().configure(
{
// All conditions are expressed using the common expression language.
// See https://aka.ms/adaptive-expressions to learn more
condition: new BoolExpression("turn.ageConfirmation == true"),
actions: [
new NumberInput().configure(
{
prompt: new ActivityTemplate("${AskForAge()}"),
property: new StringExpression("user.userProfile.Age"),
// Add validations
validations: [
// Age must be greater than or equal 1
"int(this.value) >= 1",
// Age must be less than 150
"int(this.value) < 150"
],
invalidPrompt: new ActivityTemplate("${AskForAge.invalid()}"),
unrecognizedPrompt: new ActivityTemplate("${AskForAge.unRecognized()}")
}),
new SendActivity("${UserAgeReadBack()}")
],
elseActions: [
new SendActivity("${NoAge()}")
]
constructor() {
super('userProfileDialog');
let lgFile = Templates.parseFile(path.join(__dirname, "userProfileDialog.lg"));
let userProfileAdaptiveDialog = new AdaptiveDialog(ROOT_DIALOG).configure({
generator: new TemplateEngineLanguageGenerator(lgFile),
triggers: [
new OnBeginDialog([
// Ask for user's age and set it in user.userProfile scope.
new TextInput().configure(
{
// Set the output of the text input to this property in memory.
property: new StringExpression("user.userProfile.Transport"),
prompt: new ActivityTemplate("${ModeOfTransportPrompt.Text()}")
}),
new TextInput().configure(
{
property: new StringExpression("user.userProfile.Name"),
prompt: new ActivityTemplate("${AskForName()}")
}),
// SendActivity supports full language generation resolution.
// See here to learn more about language generation
// https://aka.ms/language-generation
new SendActivity("${AckName()}"),
new ConfirmInput().configure(
{
property: new StringExpression("turn.ageConfirmation"),
prompt: new ActivityTemplate("${AgeConfirmPrompt()}")
}),
new IfCondition().configure(
property: new StringExpression("user.userProfile.Transport"),
prompt: new ActivityTemplate("${ModeOfTransportPrompt.Text()}")
}),
new TextInput().configure(
{
property: new StringExpression("user.userProfile.Name"),
prompt: new ActivityTemplate("${AskForName()}")
}),
// SendActivity supports full language generation resolution.
// See here to learn more about language generation
// https://aka.ms/language-generation
new SendActivity("${AckName()}"),
new ConfirmInput().configure(
{
property: new StringExpression("turn.ageConfirmation"),
prompt: new ActivityTemplate("${AgeConfirmPrompt()}")
}),
new IfCondition().configure(
{
// All conditions are expressed using the common expression language.
// See https://aka.ms/adaptive-expressions to learn more
condition: new BoolExpression("turn.ageConfirmation == true"),
actions: [
new NumberInput().configure(
{
prompt: new ActivityTemplate("${AskForAge()}"),
property: new StringExpression("user.userProfile.Age"),
// Add validations
validations: [
// Age must be greater than or equal 1
"int(this.value) >= 1",
// Age must be less than 150
],
elseActions: [
new AttachmentInput().configure(
{
prompt: new ActivityTemplate("${AskForImage()}"),
property: new StringExpression("user.userProfile.picture"),
validations: [
"this.value.contentType == 'image/jpeg' || this.value.contentType == 'image/png'"
],
invalidPrompt: new ActivityTemplate("${AskForImage.Invalid()}")
})
]
}),
new ConfirmInput().configure(
{
prompt: new ActivityTemplate("${ConfirmPrompt()}"),
property: new StringExpression("turn.finalConfirmation")
}),
// Use LG template to come back with the final read out.
// This LG template is a great example of what logic can be wrapped up in LG sub-system.
new SendActivity("${FinalUserProfileReadOut()}"), // examines turn.finalConfirmation
])
]
});
this.addDialog(userProfileAdaptiveDialog);
this.initialDialogId = ROOT_DIALOG;
}
}
// All conditions are expressed using the common expression language.
// See https://aka.ms/adaptive-expressions to learn more
condition: new BoolExpression("turn.ageConfirmation == true"),
actions: [
new NumberInput().configure(
{
prompt: new ActivityTemplate("${AskForAge()}"),
property: new StringExpression("user.userProfile.Age"),
// Add validations
validations: [
// Age must be greater than or equal 1
"int(this.value) >= 1",
// Age must be less than 150
"int(this.value) < 150"
],
invalidPrompt: new ActivityTemplate("${AskForAge.invalid()}"),
unrecognizedPrompt: new ActivityTemplate("${AskForAge.unRecognized()}")
}),
new SendActivity("${UserAgeReadBack()}")
],
elseActions: [
new SendActivity("${NoAge()}")
]
}),
new IfCondition().configure(
{
condition: new BoolExpression("turn.activity.channelId == 'msteams'"),
actions: [
// This attachment prompt example is not designed to work for Teams attachments, so skip it in this case
new SendActivity('Skipping attachment prompt in Teams channel...')
],
elseActions: [
// See https://aka.ms/adaptive-expressions to learn more
condition: new BoolExpression("turn.ageConfirmation == true"),
actions: [
new NumberInput().configure(
{
prompt: new ActivityTemplate("${AskForAge()}"),
property: new StringExpression("user.userProfile.Age"),
// Add validations
validations: [
// Age must be greater than or equal 1
"int(this.value) >= 1",
// Age must be less than 150
"int(this.value) < 150"
],
invalidPrompt: new ActivityTemplate("${AskForAge.invalid()}"),
unrecognizedPrompt: new ActivityTemplate("${AskForAge.unRecognized()}")
}),
new SendActivity("${UserAgeReadBack()}")
],
elseActions: [
new SendActivity("${NoAge()}")
]
}),
new IfCondition().configure(
{
condition: new BoolExpression("turn.activity.channelId == 'msteams'"),
actions: [
// This attachment prompt example is not designed to work for Teams attachments, so skip it in this case
new SendActivity('Skipping attachment prompt in Teams channel...')
],
elseActions: [
new AttachmentInput().configure(
const rootDialog = new AdaptiveDialog(AdaptiveDialog.name);
const choices = [];
const switchCases = [];
(resourceExplorer.getResources('.dialog') || []).forEach(resource => {
if (resource.resourceId !== undefined && resource.resourceId.endsWith('.main.dialog')) {
let dialogName = path.basename(resource.resourceId, '.main.dialog');
const subDialog = resourceExplorer.loadType(resource);
choices.push({value : dialogName});
switchCases.push(new Case(dialogName, [subDialog]));
}
});
rootDialog.generator = new TemplateEngineLanguageGenerator();
rootDialog.triggers.push(new OnBeginDialog([
new ChoiceInput().configure({
property: new StringExpression('turn.userChoice'),
prompt: new ActivityTemplate(`Choose a declarative sample to run..`),
style: new EnumExpression(ListStyle.list),
choices: new ArrayExpression(choices),
alwaysPrompt: new BoolExpression(true)
}),
new SendActivity("# Running ${turn.userChoice}.main.dialog"),
new SwitchCondition('turn.userChoice', switchCases),
new RepeatDialog()
]));
return rootDialog;
}