-
Notifications
You must be signed in to change notification settings - Fork 0
/
bot.js
97 lines (77 loc) · 3.02 KB
/
bot.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
'use strict';
const builder = require('botbuilder');
const connector = new builder.ChatConnector({
appId: process.env.MICROSOFT_APP_ID,
appPassword: process.env.MICROSOFT_APP_PASSWORD
});
var inMemoryStorage = new builder.MemoryBotStorage();
const bot = module.exports = new builder.UniversalBot(connector, [
(session, args, next) => {
session.send(`Hi there! I'm a sample bot showing how multiple dialogs work.`);
session.send(`Let's start the first dialog, which will ask you your name.`);
session.beginDialog('getName');
},
(session, results, next) => {
if (results.response) {
const name = session.privateConversationData.name = results.response;
session.beginDialog('getAge', { name: name });
} else {
session.endConversation(`Sorry, I didn't understand the response. Let's start over.`);
}
},
(session, results, next) => {
if (results.response) {
const age = session.privateConversationData.age = results.response;
const name = session.privateConversationData.name;
session.endConversation(`Hello ${name}. You are ${age}`);
} else {
session.endConversation(`Sorry, I didn't understand the response. Let's start over.`);
}
},
]).set('storage', inMemoryStorage);
bot.dialog('getName', [
(session, args, next) => {
if(args) {
session.dialogData.isReprompt = args.isReprompt;
}
builder.Prompts.text(session, 'What is your name?');
},
(session, results, next) => {
const name = results.response;
if (!name || name.trim().length < 3) {
if (session.dialogData.isReprompt) {
session.endDialogWithResult({ response: '' });
} else {
session.send('Sorry, name must be at least 3 characters.');
session.replaceDialog('getName', { isReprompt: true });
}
} else {
session.endDialogWithResult({ response: name.trim() });
}
}
]);
bot.dialog('getAge', [
(session, args, next) => {
let name = session.dialogData.name = 'User';
if (args) {
session.dialogData.isReprompt = args.isReprompt;
name = session.dialogData.name = args.name;
}
builder.Prompts.number(session, `How old are you, ${name}?`);
},
(session, results, next) => {
const age = results.response;
if (!age || age < 13 || age > 90) {
if (session.dialogData.isReprompt) {
session.endDialogWithResult({ response: '' });
} else {
session.dialogData.didReprompt = true;
session.send(`Sorry, that doesn't look right.`);
session.replaceDialog('getAge',
{ name: session.dialogData.name, isReprompt: true });
}
} else {
session.endDialogWithResult({ response: age });
}
}
]);