├── CONTRIBUTING.md
├── src
├── Modulo-2
│ ├── olaMundoBot.js
│ ├── conversacaoBot.js
│ ├── olaMundo.js
│ └── conversacao.js
├── Modulo-3
│ ├── saudacao.js
│ ├── saudacaoUserData.js
│ ├── perguntarIdioma.js
│ └── timeCoracao.js
└── Modulo-4
│ ├── promptsConfirm.js
│ ├── promptsChoice.js
│ ├── waterfallDialog.js
│ └── entrevistaPrompts.js
├── package.json
├── LICENSE
├── LICENSE.md
├── .gitignore
└── README.md
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | 1. Fork it!
4 | 2. Create your feature branch: `git checkout -b my-new-feature`
5 | 3. Commit your changes: `git commit -m 'Add some feature'`
6 | 4. Push to the branch: `git push origin my-new-feature`
7 |
8 | *Remember that we have a pre-push hook with steps that analyzes and prevents mistakes.*
9 |
10 | **After your pull request is merged**, you can safely delete your branch.
--------------------------------------------------------------------------------
/src/Modulo-2/olaMundoBot.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Arquivo: olaMundoBot.js
3 | * Data: 18/02/2018
4 | * Descrição: Desenvolvimento de um Bot via Console.
5 | * Author: Glaucia Lemos
6 | *
7 | */
8 |
9 | var builder = require('botbuilder');
10 |
11 | //Aqui estou criando um conector para usar o Bot via Console:
12 | var connector = new builder.ConsoleConnector().listen();
13 | var bot = new builder.UniversalBot(connector);
14 |
15 | //Aqui nós vamos criar o nosso diálogo para o nosso bot:
16 | bot.dialog('/', [
17 | function(session) {
18 | session.send('Olá Glaucia!!!');
19 | }
20 | ]);
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/Modulo-2/conversacaoBot.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Arquivo: conversacaoBot.js
3 | * Data: 17/03/2018
4 | * Descrição: Desenvolvimento de um Bot usando Dialog via Console.
5 | * Author: Glaucia Lemos
6 | *
7 | */
8 |
9 | const builder = require('botbuilder');
10 |
11 | const connector = new builder.ConsoleConnector().listen();
12 | const bot = new builder.UniversalBot(connector);
13 |
14 | bot.dialog('/', [
15 | (session) => {
16 | builder.Prompts.text(session, 'Oi! Tudo bem?');
17 | },
18 |
19 | (session) => {
20 | builder.Prompts.text(session, 'Qual é o seu nome?');
21 | },
22 |
23 | (session, results) => {
24 | let msg = results.response;
25 | session.send(`Oi ${msg}! Em que posso ajudar?`);
26 | }
27 | ]);
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "hands-on-bots-node",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "https://github.com/glaucia86/hands-on-bots-node.git"
12 | },
13 | "keywords": [
14 | "botbuilder",
15 | "bots",
16 | "chatbots",
17 | "botbuilder-samples",
18 | "bot-framework",
19 | "node.js"
20 | ],
21 | "author": "Glaucia Lemos",
22 | "license": "MIT",
23 | "bugs": {
24 | "url": "https://github.com/glaucia86/hands-on-bots-node/issues"
25 | },
26 | "homepage": "https://github.com/glaucia86/hands-on-bots-node#readme",
27 | "dependencies": {
28 | "botbuilder": "^3.14.1",
29 | "restify": "^7.1.1"
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/Modulo-2/olaMundo.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Arquivo: olaMundoBot.js
3 | * Data: 18/02/2018
4 | * Descrição: Desenvolvimento de um Bot via Bot Emulator.
5 | * Author: Glaucia Lemos
6 | *
7 | */
8 |
9 | var restify = require('restify');
10 | var builder = require('botbuilder');
11 |
12 | //Configuração do Server via Restify:
13 | var server = restify.createServer();
14 | server.listen(process.env.port || process.env.PORT || 3978, function() {
15 | console.log('%s Aplicação está executando na porta %s', server.name, server.url);
16 | });
17 |
18 | //Criação do chat connector para comunicar com o serviço do Bot Framework:
19 | var connector = new builder.ChatConnector({
20 | appId:'',
21 | appPassword: ''
22 | });
23 |
24 | //Endpoint para executar as mensagens para os usuários via Bot Emulator:
25 | server.post("/api/messages", connector.listen());
26 |
27 | //Aqui entra os nossos diálogos:
28 | var bot = new builder.UniversalBot(connector, function(session) {
29 | session.send("Você disse: %s", session.message.text);
30 | });
31 |
32 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Glaucia Lemos
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | The MIT License
2 | SPDX short identifier: MIT
3 |
4 | Further resources on the MIT License
5 | Copyright 2018 - Glaucia Lemos
6 |
7 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
8 |
9 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
10 |
11 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (http://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # Typescript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional REPL history
49 | .node_repl_history
50 |
51 | # Output of 'npm pack'
52 | *.tgz
53 |
54 | # Yarn Integrity file
55 | .yarn-integrity
56 |
57 | # dotenv environment variables file
58 | .env
59 |
60 | .DS_Store
61 |
62 | .vscode
--------------------------------------------------------------------------------
/src/Modulo-2/conversacao.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Arquivo: conversacaoBot.js
3 | * Data: 17/03/2018
4 | * Descrição: Desenvolvimento de um Bot usando Dialog via Emulator
5 | * Author: Glaucia Lemos
6 | *
7 | */
8 |
9 | const restify = require("restify");
10 | const builder = require("botbuilder");
11 |
12 | //Configuração do Server via restify:
13 | const server = restify.createServer();
14 | server.listen(process.env.port || process.env.PORT || 3978, () => {
15 | console.log("%s Aplicação executando na porta %s", server.name, server.url);
16 | });
17 |
18 | const connector = new builder.ChatConnector({
19 | appId: "",
20 | appPassword: ""
21 | });
22 |
23 | //Endpoint para executar as mensagens para o usuário:
24 | server.post("api/messages", connector.listen());
25 |
26 | const bot = new builder.UniversalBot(connector);
27 |
28 | //Bloco de Diálogos
29 | bot.dialog("/", [
30 | session => {
31 | builder.Prompts.text(session, "Olá! Tudo bem?");
32 | },
33 |
34 | session => {
35 | builder.Prompts.text(session, "Como você se chama?");
36 | },
37 |
38 | (session, results) => {
39 | let msg = results.response;
40 | session.send(`Oi ${msg}! Em que posso ajudar?`);
41 | }
42 | ]);
43 |
--------------------------------------------------------------------------------
/src/Modulo-3/saudacao.js:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | * Arquivo: saudacao.js
4 | * Data: 26/03/2018
5 | * Descrição: Desenvolvimento de um Bot que solicita nome de usuário com uma
6 | * mensagem de saudação! Usando os conceitos do método: beginDialog'
7 | * Author: Glaucia Lemos
8 | * Link (Documentação - Dialog): https://goo.gl/2KHPph
9 | *
10 | */
11 |
12 | const restify = require('restify');
13 | const builder = require('botbuilder');
14 |
15 | // Configuração do Server via Restify:
16 | const server = restify.createServer();
17 | server.listen(process.env.port || process.env.PORT || 3978, () => {
18 | console.log('%s Aplicação executando na porta %s', server.name, server.url);
19 | });
20 |
21 | // Criação do chat connector para comunicar com o serviço do Bot Framework:
22 | const connector = new builder.ChatConnector({
23 | appId: '',
24 | appPassword: ''
25 | });
26 |
27 | // Endpoint para executar as mensagens para os usuários:
28 | server.post('api/messages', connector.listen());
29 |
30 | const bot = new builder.UniversalBot(connector);
31 |
32 | // Bloco de Dialogs:
33 | bot.dialog('/', [
34 | session => {
35 | session.beginDialog('/saudacao');
36 | }
37 | ]);
38 |
39 | bot.dialog('/saudacao', [
40 | session => {
41 | builder.Prompts.text(session, 'Oi! Qual é o seu nome?');
42 | },
43 | (session, results) => {
44 | let msg = results.response;
45 | session.endDialog(`Oi! ${msg}!`);
46 | }
47 | ]);
--------------------------------------------------------------------------------
/src/Modulo-3/saudacaoUserData.js:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | * Arquivo: saudacaoUserData.js
4 | * Data: 26/03/2018
5 | * Descrição: Desenvolvimento de um Bot que solicita nome de usuário com uma
6 | * mensagem de saudação! (Conceitos de Armazenamento de Dados: 'userData')
7 | * Author: Glaucia Lemos
8 | *
9 | * LINK: https://docs.microsoft.com/pt-br/azure/bot-service/nodejs/bot-builder-nodejs-state
10 | *
11 | *
12 | */
13 |
14 | const restify = require("restify");
15 | const builder = require("botbuilder");
16 |
17 | // Configuração do Server via Restify:
18 | const server = restify.createServer();
19 | server.listen(process.env.port || process.env.PORT || 3978, () => {
20 | console.log("%s Aplicação executando na porta %s", server.name, server.url);
21 | });
22 |
23 | // Criação do chat connector para comunicar com o serviço do Bot Framework:
24 | const connector = new builder.ChatConnector({
25 | appId: "",
26 | appPassword: ""
27 | });
28 |
29 | // Endpoint para executar as mensagens para os usuários:
30 | server.post("api/messages", connector.listen());
31 |
32 | const bot = new builder.UniversalBot(connector);
33 |
34 | // Bloco de Dialogs:
35 | bot.dialog('/', [
36 | (session, results, next) => {
37 | if (!session.userData.nome) {
38 | builder.Prompts.text(session, 'Olá! Tudo bem? Qual é o seu nome?')
39 | } else {
40 | next();
41 | }
42 | },
43 |
44 | (session, results) => {
45 | if (results.response) {
46 | let msg = results.response;
47 | session.userData.nome = msg;
48 | }
49 |
50 | session.send(`Olá! ${session.userData.nome}!`);
51 | }
52 | ]);
53 |
--------------------------------------------------------------------------------
/src/Modulo-4/promptsConfirm.js:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | * Arquivo: promptsConfirm.js
4 | * Data: 26/04/2018
5 | * Descrição: Desenvolvimento de um Bot onde será utilizado o recurso do 'Prompts.confirm'
6 | * Author: Glaucia Lemos
7 | * Link (Documentação - Dialog):
8 | *
9 | */
10 |
11 | const restify = require("restify");
12 | const builder = require("botbuilder");
13 |
14 | // Configuração do Server via Restify:
15 | const server = restify.createServer();
16 | server.listen(process.env.port || process.env.PORT || 3978, () => {
17 | console.log("%s Aplicação executando na porta %s", server.name, server.url);
18 | });
19 |
20 | // Criação do chat connector para comunicar com o serviço do Bot Framework:
21 | const connector = new builder.ChatConnector({
22 | appId: "",
23 | appPassword: ""
24 | });
25 |
26 | // Endpoint para executar as mensagens para os usuários
27 | server.post("/api/messages", connector.listen());
28 |
29 | const bot = new builder.UniversalBot(connector);
30 |
31 | bot.dialog('/', [
32 | session => {
33 | builder.Prompts.text(session, "Olá! Qual é o seu nome?");
34 | },
35 |
36 | (session, results) => {
37 | let nome = results.response;
38 | session.send(`Oi! ${nome}. Seja Bem-Vindo(a) a Lanchonete XYZ`);
39 |
40 | session.beginDialog('/pedido');
41 | }
42 | ]);
43 |
44 | bot.dialog('/pedido', [
45 | session => {
46 | builder.Prompts.text(session, "Qual é o seu pedido?");
47 | },
48 |
49 | (session, results) => {
50 | let pedido = results.response;
51 | session.send(`Okay! Você pediu: ${pedido}!`);
52 |
53 | builder.Prompts.confirm(session, "Gostaria de finalizar o seu pedido?", { listStyle: builder.ListStyle.button })
54 | },
55 |
56 | session => {
57 | session.endDialog("Okay! Estaremos entregando o seu pedido em breve!");
58 | }
59 | ]);
--------------------------------------------------------------------------------
/src/Modulo-3/perguntarIdioma.js:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | * Arquivo: perguntarIdioma.js
4 | * Data: 26/03/2018
5 | * Descrição: Desenvolvimento de um Bot que solicita nome de usuário com uma
6 | * mensagem de saudação! (Conceitos de Armazenamento de Dados: 'dialogData')
7 | * Author: Glaucia Lemos
8 | *
9 | * LINK: https://docs.microsoft.com/pt-br/azure/bot-service/nodejs/bot-builder-nodejs-state
10 | *
11 | *
12 | */
13 |
14 | const restify = require("restify");
15 | const builder = require("botbuilder");
16 |
17 | // Configuração do Server via Restify:
18 | const server = restify.createServer();
19 | server.listen(process.env.port || process.env.PORT || 3978, () => {
20 | console.log("%s Aplicação executando na porta %s", server.name, server.url);
21 | });
22 |
23 | // Criação do chat connector para comunicar com o serviço do Bot Framework:
24 | const connector = new builder.ChatConnector({
25 | appId: "",
26 | appPassword: ""
27 | });
28 |
29 | // Endpoint para executar as mensagens para os usuários:
30 | server.post("api/messages", connector.listen());
31 |
32 | const bot = new builder.UniversalBot(connector);
33 |
34 | // Bloco de Dialogs:
35 | bot.dialog('/', [
36 | session => {
37 | builder.Prompts.text(session, 'Oi! Tudo bem? Qual é o seu nome?');
38 | },
39 |
40 | (session, results) => {
41 | session.userData.nome = results.response;
42 | session.send(`Olá! ${session.userData.nome}`);
43 |
44 | session.beginDialog('/perguntarIdioma');
45 | }
46 | ]);
47 |
48 | bot.dialog('/perguntarIdioma', [
49 | session => {
50 | builder.Prompts.text(session, 'Qual é o idioma que você sabe falar?');
51 | },
52 |
53 | (session, results) => {
54 | session.dialogData.idioma = results.response;
55 |
56 | session.endDialog(`Ótimo **${session.userData.nome}**, você sabe falar o idioma
57 | **${session.dialogData.idioma}**.`);
58 | }
59 | ]);
60 |
61 |
62 |
--------------------------------------------------------------------------------
/src/Modulo-3/timeCoracao.js:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | * Arquivo: olaMundoBot.js
4 | * Data: 23/04/2018
5 | * Descrição: Desenvolvimento de um Bot via Bot Emulator.
6 | * Author: Glaucia Lemos
7 | *
8 | *
9 | */
10 |
11 | var restify = require('restify');
12 | var builder = require('botbuilder');
13 |
14 | // Configuração do Server via Restify:
15 | var server = restify.createServer();
16 | server.listen(process.env.port || process.env.PORT || 3978, function() {
17 | console.log('%s Aplicação está executando na porta %s', server.name, server.url);
18 | });
19 |
20 | // Criação do chat connector para comunicar com o serviço do Bot Framework:
21 | var connector = new builder.ChatConnector({
22 | appId:'',
23 | appPassword: ''
24 | });
25 |
26 | //Endpoint para executar as mensagens para os usuários via Bot Emulator:
27 | server.post("/api/messages", connector.listen());
28 |
29 | const bot = new builder.UniversalBot(connector);
30 |
31 | // Bloco de Dialogs:
32 | bot.dialog("/", [
33 | session => {
34 | builder.Prompts.text(session, "Oi! Qual é o seu nome?");
35 | },
36 |
37 | (session, results) => {
38 | let nome = results.response;
39 | session.send(`Oi! ${nome}`);
40 |
41 | session.beginDialog("/perguntarTimeCoracao");
42 | }
43 | ]);
44 |
45 | bot.dialog("/perguntarTimeCoracao", [
46 | session => {
47 | builder.Prompts.text(session, "Qual é o seu time de Futebol do Coração?");
48 | },
49 |
50 | (session, results) => {
51 | let timeCoracao = results.response;
52 | session.endDialog(`Vamos torcer no Campeonato Brasileiro para o time do **${timeCoracao}** em 2018!`);
53 |
54 | session.beginDialog("/perguntarLugarPreferido");
55 | }
56 | ]);
57 |
58 | bot.dialog("/perguntarLugarPreferido", [
59 | session => {
60 | builder.Prompts.text(session, "Qual é o seu lugar preferido?");
61 | },
62 |
63 | (session, results) => {
64 | let lugar = results.response;
65 | session.endDialog(`Amamos o **${lugar}**! É simplesmente uma cidade muito bonita!`);
66 | }
67 | ]);
68 |
--------------------------------------------------------------------------------
/src/Modulo-4/promptsChoice.js:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | * Arquivo: promptsChoice.js
4 | * Data: 26/04/2018
5 | * Descrição: Desenvolvimento de um Bot onde será utilizado o recurso do 'Prompts.choice'
6 | * Author: Glaucia Lemos
7 | * Link (Documentação - Dialog (Prompts)):
8 | *
9 | */
10 |
11 | const restify = require("restify");
12 | const builder = require("botbuilder");
13 |
14 | // Configuração do Server via Restify:
15 | const server = restify.createServer();
16 | server.listen(process.env.port || process.env.PORT || 3978, () => {
17 | console.log("%s Aplicação executando na porta %s", server.name, server.url);
18 | });
19 |
20 | // Criação do chat connector para comunicar com o serviço do Bot Framework:
21 | const connector = new builder.ChatConnector({
22 | appId: "",
23 | appPassword: ""
24 | });
25 |
26 | // Endpoint para executar as mensagens para os usuários
27 | server.post("/api/messages", connector.listen());
28 |
29 | const bot = new builder.UniversalBot(connector);
30 |
31 | bot.dialog('/', [
32 | session => {
33 | builder.Prompts.text(session, "Olá! Qual é o seu nome?");
34 | },
35 |
36 | (session, results) => {
37 | session.userData.nome = results.response;
38 | builder.Prompts.number(session, `Oi ${session.userData.nome}, quanto tempo que você trabalha com programação?`);
39 | },
40 |
41 | (session, results) => {
42 | session.userData.anosExperienciaProgramacao = results.response;
43 | builder.Prompts.choice(session, "Qual é a sua linguagem de programação predileta?",
44 | "TypeScript | JavaScript | C# | Node.Js | Java | Python | Ruby",
45 | { listStyle: builder.ListStyle.button }
46 | );
47 | },
48 |
49 | (session, results) => {
50 | session.userData.linguagem = results.response.entity;
51 | session.endConversation('Ah... Beleza '
52 | + session.userData.nome + '. Você tem trabalhado com programação por '
53 | + session.userData.anosExperienciaProgramacao + ' anos e curte programar com '
54 | + session.userData.linguagem
55 | );
56 | }
57 | ]);
--------------------------------------------------------------------------------
/src/Modulo-4/waterfallDialog.js:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | * Arquivo: waterfallDialog.js
4 | * Data: 20/05/2018
5 | * Descrição: Desenvolvimento de um Bot que simula uma reserva de um restaurante.
6 | * Author: Glaucia Lemos
7 | *
8 | * Links (Manipulação de Waterfalls):
9 | *
10 | */
11 |
12 | const restify = require("restify");
13 | const builder = require("botbuilder");
14 |
15 | // Configuração do Server via Restify:
16 | const server = restify.createServer();
17 | server.listen(process.env.port || process.env.PORT || 3978, () => {
18 | console.log("%s Aplicação executando na porta %s", server.name, server.url);
19 | });
20 |
21 | // Criação do chat connector para comunicar com o serviço do Bot Framework:
22 | const connector = new builder.ChatConnector({
23 | appId: "",
24 | appPassword: ""
25 | });
26 |
27 | // Endpoint para executar as mensagens para os usuários
28 | server.post("/api/messages", connector.listen());
29 |
30 | const inMemoryStorage = new builder.MemoryBotStorage();
31 |
32 | const bot = new builder.UniversalBot(connector, [
33 | (session) => {
34 | session.send("Seja Bem-Vindo(a) ao Restaurante Praias do Rio");
35 | builder.Prompts.time(session, "Por favor, informa a data e hora da reserva (ex.: 20 de Maio às 20h)");
36 | },
37 |
38 | (session, results) => {
39 | session.dialogData.dataReserva = builder.EntityRecognizer.resolveTime([results.response]);
40 | builder.Prompts.number(session, "Para quantas pessoas necessitará para a reserva?");
41 | },
42 |
43 | (session, results) => {
44 | session.dialogData.quantidadePessoas = results.response;
45 | builder.Prompts.text(session, "Em nome de quem gostaria de fazer a reserva?");
46 | },
47 |
48 | (session, results) => {
49 | session.dialogData.nomeReserva = results.response;
50 |
51 | // Vamos exibir as informações digitadas pelo usuário:
52 | session.send(`Reserva Confirmada. Segue os detalhes da Reserva:
53 |
Dia/Hora: **${ session.dialogData.dataReserva }**
54 |
Quantidade de Pessoas: **${ session.dialogData.quantidadePessoas }**
55 |
Nome da Reserva: **${ session.dialogData.nomeReserva }**`);
56 | session.endDialog();
57 | }
58 | ]).set('storage', inMemoryStorage);
--------------------------------------------------------------------------------
/src/Modulo-4/entrevistaPrompts.js:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | * Arquivo: entrevistaPrompts.js
4 | * Data: 26/04/2018
5 | * Descrição: Desenvolvimento de um Bot onde será utilizado diferentes tipos de Prompts.
6 | * Author: Glaucia Lemos
7 | * Link (Documentação - Dialog (Prompts)):
8 | *
9 | */
10 |
11 | const restify = require("restify");
12 | const builder = require("botbuilder");
13 |
14 | // Configuração do Server via Restify:
15 | const server = restify.createServer();
16 | server.listen(process.env.port || process.env.PORT || 3978, () => {
17 | console.log("%s Aplicação executando na porta %s", server.name, server.url);
18 | });
19 |
20 | // Criação do chat connector para comunicar com o serviço do Bot Framework:
21 | const connector = new builder.ChatConnector({
22 | appId: "",
23 | appPassword: ""
24 | });
25 |
26 | // Endpoint para executar as mensagens para os usuários
27 | server.post("/api/messages", connector.listen());
28 |
29 | const bot = new builder.UniversalBot(connector);
30 |
31 | bot.dialog('/', [
32 | (session, results, next) => {
33 | builder.Prompts.text(session, 'Olá! Qual é o seu nome?');
34 | },
35 |
36 | (session, results) => {
37 | session.dialogData.nome = results.response;
38 | builder.Prompts.text(session, `Oi ${session.dialogData.nome}. Qual é a sua profissão?`);
39 | },
40 |
41 | (session, results) => {
42 | session.dialogData.profissao = results.response;
43 | builder.Prompts.number(session, `${session.dialogData.nome} quantos anos você tem?`);
44 | },
45 |
46 | (session, results) => {
47 | session.dialogData.idade = results.response;
48 | builder.Prompts.time(session, `Você pode informar que horas são agora?`);
49 | },
50 |
51 | (session, results) => {
52 | session.dialogData.horaAtual = builder.EntityRecognizer.resolveTime([results.response]);
53 | builder.Prompts.confirm(session, `Você deseja ver o seu questionário?`, { listStyle: builder.ListStyle.button });
54 | },
55 |
56 | (session, results) => {
57 | if (results.response) {
58 | session.endDialog(`Os detalhes do seu questionário foi:
59 |
Nome: **${session.dialogData.nome}**
60 |
Profissão: **${session.dialogData.profissao}**
61 |
Idade: **${session.dialogData.idade}**
62 |
Hora Atual: **${session.dialogData.horaAtual}**`);
63 | } else {
64 | session.endDialog("Até a próxima! Tchau!")
65 | }
66 | }
67 | ]);
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Hands On: Bots + Node.Js - Microsoft Bot Framework v.3 (Glaucia Lemos)
2 |
3 |
4 |
5 |
194 |
195 |