Advertisement
Guest User

Untitled

a guest
Jul 29th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.83 KB | None | 0 0
  1. 'use strict';
  2. // 01. Include required files
  3. require('dotenv-extended').load();
  4. var restify = require('restify');
  5. var builder = require('botbuilder');
  6. // ---------------------------------------------------------------------------------------------------------------------
  7. // 02. Setup Restify Server
  8. var server = restify.createServer();
  9.  
  10. // 03. Configure listen for messages
  11. server.listen(process.env.PORT || 3978, function()
  12. {
  13. console.log('%s listening to %s', server.name, server.url);
  14. });
  15.  
  16. // 04. Create chat bot
  17. var connector = new builder.ChatConnector
  18. ({
  19. appId: process.env.MICROSOFT_APP_ID,
  20. appPassword: process.env.MICROSOFT_APP_PASSWORD
  21. });
  22.  
  23. // 05. Listen for messages
  24. server.post('/api/messages', connector.listen());
  25.  
  26. // 06. Serve static files
  27. server.get(/.*/, restify.serveStatic({
  28. directory: __dirname,
  29. 'default': 'index.html'
  30. }));
  31. // Receive messages from the user and respond by echoing each message back (prefixed with 'You said:')
  32. var bot = new builder.UniversalBot(connector, function (session) {
  33. session.send('type \'beginLoop\' to begin adding key-value pairs');
  34. session.send('or type \'showResults\' to see all added key-value pairs');
  35. session.send('you may also type \'done\' to end the dialog early.')
  36. }).beginDialogAction('beginLoopAction', 'Loop', {
  37. matches: /^beginloop$/i
  38. }).beginDialogAction('beginShowResults', 'Results', {
  39. matches: /^showresults$/i
  40. })
  41.  
  42. bot.dialog('Loop', [
  43. function (session, results) {
  44. session.userData.kVPairs = session.userData.kVPairs ? session.userData.kVPairs : [];
  45. builder.Prompts.text(session, 'Key to put?');
  46. },
  47. function (session, results) {
  48. session.dialogData.key = results.response;
  49. builder.Prompts.text(session, 'Value to put?');
  50. },
  51. function (session, results) {
  52. var value = results.response ? results.response : null,
  53. key = session.dialogData.key;
  54. var pairs = session.userData.kVPairs;
  55. var newPair = {};
  56. newPair[key] = value;
  57. if (key && value) {
  58. session.userData.kVPairs.push(newPair);
  59. console.log(pairs[pairs.length - 1]);
  60. }
  61. session.send('latest key-value pair added, { %s : %s }', key, value);
  62. session.replaceDialog('Loop');
  63. }
  64. ]).cancelAction('endLoop', 'Ending loop per request', {
  65. confirmPrompt: 'End loop?',
  66. matches: /^done$/i
  67. })
  68.  
  69. bot.dialog('Results', [
  70. function (session, result) {
  71. var pairs = session.userData.kVPairs;
  72. session.send('Here are your key-value pairs.');
  73.  
  74. for (var i = 0; i < pairs.length; i++) {
  75. for (var key in pairs[i]) {
  76. session.send('Pair %s: { %s: %s }', i + 1, key, pairs[i][key]);
  77. }
  78. }
  79. session.endDialog();
  80. }
  81. ]).cancelAction('endLoop', 'Ending loop per request', {
  82. confirmPrompt: 'End loop?',
  83. matches: /^done$/i
  84. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement