Register
Login
Resources
Docs Blog Datasets Glossary Case Studies Tutorials & Webinars
Product
Data Engine LLMs Platform Enterprise
Pricing Explore
Connect to our Discord channel

details.js 4.3 KB

You have to be logged in to leave a comment. Sign In
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
  1. var util = require('util');
  2. var builder = require('botbuilder');
  3. var lib = new builder.Library('details');
  4. // Recipient & Sender details
  5. lib.dialog('/', [
  6. function (session) {
  7. builder.Prompts.text(session, 'ask_recipient_first_name');
  8. },
  9. function (session, args) {
  10. session.dialogData.recipientFirstName = args.response;
  11. builder.Prompts.text(session, 'ask_recipient_last_name');
  12. },
  13. function (session, args) {
  14. session.dialogData.recipientLastName = args.response;
  15. session.beginDialog('validators:phonenumber', {
  16. prompt: session.gettext('ask_recipient_phone_number'),
  17. retryPrompt: session.gettext('invalid_phone_number'),
  18. maxRetries: Number.MAX_VALUE
  19. });
  20. },
  21. function (session, args) {
  22. session.dialogData.recipientPhoneNumber = args.response;
  23. session.beginDialog('validators:notes', {
  24. prompt: session.gettext('ask_note'),
  25. retryPrompt: session.gettext('invalid_note'),
  26. maxRetries: Number.MAX_VALUE
  27. });
  28. },
  29. function (session, args) {
  30. session.dialogData.note = args.response;
  31. session.beginDialog('sender');
  32. },
  33. function (session, args) {
  34. session.dialogData.sender = args.sender;
  35. var details = {
  36. recipient: {
  37. firstName: session.dialogData.recipientFirstName,
  38. lastName: session.dialogData.recipientLastName,
  39. phoneNumber: session.dialogData.recipientPhoneNumber
  40. },
  41. note: session.dialogData.note,
  42. sender: session.dialogData.sender
  43. };
  44. session.endDialogWithResult({ details: details });
  45. }
  46. ]);
  47. // Sender details
  48. var UseSavedInfoChoices = {
  49. Yes: 'yes',
  50. No: 'edit'
  51. };
  52. lib.dialog('sender', [
  53. function (session, args, next) {
  54. var sender = session.userData.sender;
  55. if (sender) {
  56. // sender data previously saved
  57. var promptMessage = session.gettext('use_this_email_and_phone_number', sender.email, sender.phoneNumber);
  58. builder.Prompts.choice(session, promptMessage, [
  59. session.gettext(UseSavedInfoChoices.Yes),
  60. session.gettext(UseSavedInfoChoices.No)
  61. ]);
  62. } else {
  63. // no data
  64. next();
  65. }
  66. },
  67. function (session, args, next) {
  68. if (args.response && args.response.entity === session.gettext(UseSavedInfoChoices.Yes) && session.userData.sender) {
  69. // Use previously saved data, store it in dialogData
  70. // Next steps will skip if present
  71. session.dialogData.useSaved = true;
  72. session.dialogData.email = session.userData.sender.email;
  73. session.dialogData.phoneNumber = session.userData.sender.phoneNumber;
  74. }
  75. next();
  76. },
  77. function (session, args, next) {
  78. if (session.dialogData.useSaved) {
  79. return next();
  80. }
  81. session.beginDialog('validators:email', {
  82. prompt: session.gettext('ask_email'),
  83. retryPrompt: session.gettext('invalid_email'),
  84. maxRetries: Number.MAX_VALUE
  85. });
  86. },
  87. function (session, args, next) {
  88. if (session.dialogData.useSaved) {
  89. return next();
  90. }
  91. session.dialogData.email = args.response;
  92. session.beginDialog('validators:phonenumber', {
  93. prompt: session.gettext('ask_phone_number'),
  94. retryPrompt: session.gettext('invalid_phone_number'),
  95. maxRetries: Number.MAX_VALUE
  96. });
  97. },
  98. function (session, args, next) {
  99. if (session.dialogData.useSaved) {
  100. return next();
  101. }
  102. session.dialogData.phoneNumber = args.response;
  103. builder.Prompts.confirm(session, 'ask_save_info');
  104. },
  105. function (session, args) {
  106. var sender = {
  107. email: session.dialogData.email,
  108. phoneNumber: session.dialogData.phoneNumber
  109. };
  110. // Save data?
  111. var shouldSave = args.response;
  112. if (shouldSave) {
  113. session.userData.sender = sender;
  114. }
  115. // return sender information
  116. session.endDialogWithResult({ sender: sender });
  117. }
  118. ]);
  119. // Export createLibrary() function
  120. module.exports.createLibrary = function () {
  121. return lib.clone();
  122. };
Tip!

Press p or to see the previous file or, n or to see the next file

Comments

Loading...