@zohoim/client-sdk 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/es/application/services/cannedMessages/CannedMessageService.js +51 -0
  2. package/es/application/services/cannedMessages/index.js +2 -0
  3. package/es/application/services/index.js +3 -1
  4. package/es/application/services/templateMessages/TemplateMessageService.js +26 -0
  5. package/es/application/services/templateMessages/index.js +2 -0
  6. package/es/core/constants/ModuleNames.js +4 -1
  7. package/es/core/utils/validateSchema.js +60 -26
  8. package/es/domain/dto/cannedMessages/createCannedMessageRequest.js +18 -0
  9. package/es/domain/dto/cannedMessages/deleteCannedMessageRequest.js +13 -0
  10. package/es/domain/dto/cannedMessages/disableCannedMessageRequest.js +13 -0
  11. package/es/domain/dto/cannedMessages/enableCannedMessageRequest.js +13 -0
  12. package/es/domain/dto/cannedMessages/getCannedMessageRequest.js +13 -0
  13. package/es/domain/dto/cannedMessages/getCannedMessagesRequest.js +18 -0
  14. package/es/domain/dto/cannedMessages/index.js +7 -0
  15. package/es/domain/dto/cannedMessages/updateCannedMessageRequest.js +20 -0
  16. package/es/domain/dto/index.js +3 -1
  17. package/es/domain/dto/messages/initiateSessionRequest.js +2 -0
  18. package/es/domain/dto/sessions/getSessionsRequest.js +1 -0
  19. package/es/domain/dto/templateMessages/getTemplateCreditExhaustStatusRequest.js +13 -0
  20. package/es/domain/dto/templateMessages/getTemplateLanguagesRequest.js +7 -0
  21. package/es/domain/dto/templateMessages/index.js +2 -0
  22. package/es/domain/entities/Actor/Actor.js +5 -1
  23. package/es/domain/entities/Agent/Agent.js +5 -1
  24. package/es/domain/entities/Attachment/Attachment.js +5 -1
  25. package/es/domain/entities/Bot/Bot.js +5 -1
  26. package/es/domain/entities/CannedMessage/CannedMessage.js +58 -0
  27. package/es/domain/entities/CannedMessage/index.js +2 -0
  28. package/es/domain/entities/Channel/Channel.js +5 -1
  29. package/es/domain/entities/Contact/Contact.js +5 -1
  30. package/es/domain/entities/CustomReplyExtension/CustomReplyExtension.js +26 -0
  31. package/es/domain/entities/CustomReplyExtension/index.js +2 -0
  32. package/es/domain/entities/IntegrationService/IntegrationService.js +5 -1
  33. package/es/domain/entities/Message/Action.js +5 -1
  34. package/es/domain/entities/Message/ExternalInfo.js +5 -1
  35. package/es/domain/entities/Message/Info.js +5 -1
  36. package/es/domain/entities/Message/InfoTarget.js +5 -1
  37. package/es/domain/entities/Message/Location.js +5 -1
  38. package/es/domain/entities/Message/Message.js +25 -2
  39. package/es/domain/entities/Message/MessageWithSession.js +5 -1
  40. package/es/domain/entities/Session/Session.js +5 -1
  41. package/es/domain/entities/TemplateMessage/TemplateCreditExhaustStatus.js +27 -0
  42. package/es/domain/entities/TemplateMessage/TemplateLanguage.js +22 -0
  43. package/es/domain/entities/TemplateMessage/index.js +3 -0
  44. package/es/domain/entities/index.js +4 -1
  45. package/es/domain/enum/cannedMessage/CannedMessageStatus.js +7 -0
  46. package/es/domain/enum/cannedMessage/CannedMessageType.js +5 -0
  47. package/es/domain/enum/cannedMessage/TemplateItemButtonType.js +6 -0
  48. package/es/domain/enum/cannedMessage/TemplateItemFooterType.js +4 -0
  49. package/es/domain/enum/cannedMessage/TemplateItemHeaderType.js +7 -0
  50. package/es/domain/enum/cannedMessage/index.js +6 -0
  51. package/es/domain/enum/index.js +3 -1
  52. package/es/domain/enum/message/MessageMeta.js +2 -1
  53. package/es/domain/enum/message/MetaMessageSourceType.js +6 -0
  54. package/es/domain/enum/message/index.js +2 -1
  55. package/es/domain/enum/session/SessionReplyStatus.js +4 -1
  56. package/es/domain/enum/templateMessage/TemplateCreditExhaustStatusCode.js +4 -0
  57. package/es/domain/enum/templateMessage/index.js +2 -0
  58. package/es/domain/interfaces/repositories/cannedMessages/ICannedMessageRepository.js +47 -0
  59. package/es/domain/interfaces/repositories/cannedMessages/index.js +2 -0
  60. package/es/domain/interfaces/repositories/index.js +3 -1
  61. package/es/domain/interfaces/repositories/templateMessages/ITemplateMessageRepository.js +21 -0
  62. package/es/domain/interfaces/repositories/templateMessages/index.js +2 -0
  63. package/es/domain/schema/cannedMessage/CannedMessageSchema.js +65 -0
  64. package/es/domain/schema/cannedMessage/TemplateItem/TemplateItemButtonsSchema.js +17 -0
  65. package/es/domain/schema/cannedMessage/TemplateItem/TemplateItemFooterSchema.js +13 -0
  66. package/es/domain/schema/cannedMessage/TemplateItem/TemplateItemHeaderSchema.js +19 -0
  67. package/es/domain/schema/cannedMessage/TemplateItem/index.js +4 -0
  68. package/es/domain/schema/cannedMessage/TemplateItemsSchema.js +21 -0
  69. package/es/domain/schema/cannedMessage/TranslationsSchema.js +43 -0
  70. package/es/domain/schema/cannedMessage/index.js +2 -0
  71. package/es/domain/schema/customReplyExtension/CustomReplyExtensionSchema.js +28 -0
  72. package/es/domain/schema/customReplyExtension/index.js +2 -0
  73. package/es/domain/schema/index.js +4 -1
  74. package/es/domain/schema/templateMessage/TemplateCreditExhaustStatusSchema.js +11 -0
  75. package/es/domain/schema/templateMessage/TemplateLanguageSchema.js +11 -0
  76. package/es/domain/schema/templateMessage/index.js +3 -0
  77. package/es/frameworks/managers/ModuleFactory.js +18 -0
  78. package/es/frameworks/managers/ModuleManager.js +1 -1
  79. package/es/frameworks/sdk/IMSDK.js +10 -0
  80. package/es/frameworks/sdk/cannedMessages/CannedMessageSDK.js +30 -0
  81. package/es/frameworks/sdk/cannedMessages/index.js +2 -0
  82. package/es/frameworks/sdk/templateMessages/TemplateMessageSDK.js +30 -0
  83. package/es/frameworks/sdk/templateMessages/index.js +2 -0
  84. package/es/infrastructure/adapters/cannedMessages/CannedMessageAdapter.js +34 -0
  85. package/es/infrastructure/adapters/cannedMessages/index.js +2 -0
  86. package/es/infrastructure/adapters/customReplyExtension/CustomReplyExtensionAdapter.js +24 -0
  87. package/es/infrastructure/adapters/customReplyExtension/index.js +2 -0
  88. package/es/infrastructure/adapters/index.js +4 -1
  89. package/es/infrastructure/adapters/messages/MessageAdapter.js +5 -1
  90. package/es/infrastructure/adapters/templateMessages/TemplateCreditExhaustStatusAdapter.js +20 -0
  91. package/es/infrastructure/adapters/templateMessages/TemplateLanguageAdapter.js +20 -0
  92. package/es/infrastructure/adapters/templateMessages/index.js +3 -0
  93. package/es/infrastructure/api/cannedMessages/CannedMessageAPI.js +74 -0
  94. package/es/infrastructure/api/cannedMessages/index.js +2 -0
  95. package/es/infrastructure/api/index.js +3 -1
  96. package/es/infrastructure/api/registry/cannedMessages/cannedMessageAPIRegistry.js +42 -0
  97. package/es/infrastructure/api/registry/cannedMessages/constructCannedMessageEndPoint.js +10 -0
  98. package/es/infrastructure/api/registry/cannedMessages/index.js +2 -0
  99. package/es/infrastructure/api/registry/getRegistryConfig.js +5 -1
  100. package/es/infrastructure/api/registry/templateMessages/constructTemplateMessageEndPoint.js +11 -0
  101. package/es/infrastructure/api/registry/templateMessages/index.js +2 -0
  102. package/es/infrastructure/api/registry/templateMessages/templateMessageAPIRegistry.js +18 -0
  103. package/es/infrastructure/api/templateMessages/TemplateMessageAPI.js +24 -0
  104. package/es/infrastructure/api/templateMessages/index.js +2 -0
  105. package/es/infrastructure/repositories/cannedMessages/CannedMessageRepository.js +97 -0
  106. package/es/infrastructure/repositories/cannedMessages/index.js +2 -0
  107. package/es/infrastructure/repositories/index.js +3 -1
  108. package/es/infrastructure/repositories/templateMessages/TemplateMessageRepository.js +77 -0
  109. package/es/infrastructure/repositories/templateMessages/index.js +2 -0
  110. package/package.json +1 -1
@@ -5,6 +5,8 @@ import { SessionSDK } from '../sdk/sessions';
5
5
  import { MessageSDK } from '../sdk/messages';
6
6
  import { AgentSDK } from '../sdk/agents';
7
7
  import { ContactSDK } from '../sdk/contacts';
8
+ import { CannedMessageSDK } from '../sdk/cannedMessages';
9
+ import { TemplateMessageSDK } from '../sdk/templateMessages';
8
10
  const ModuleFactory = {
9
11
  [ModuleNames.CHANNELS]: _ref => {
10
12
  let {
@@ -53,6 +55,22 @@ const ModuleFactory = {
53
55
  return new MessageSDK({
54
56
  config
55
57
  }).toJSON();
58
+ },
59
+ [ModuleNames.CANNED_MESSAGES]: _ref7 => {
60
+ let {
61
+ config
62
+ } = _ref7;
63
+ return new CannedMessageSDK({
64
+ config
65
+ }).toJSON();
66
+ },
67
+ [ModuleNames.TEMPLATE_MESSAGES]: _ref8 => {
68
+ let {
69
+ config
70
+ } = _ref8;
71
+ return new TemplateMessageSDK({
72
+ config
73
+ }).toJSON();
56
74
  }
57
75
  };
58
76
  export default ModuleFactory;
@@ -3,7 +3,7 @@ import ModuleFactory from './ModuleFactory';
3
3
  export default class ModuleManager {
4
4
  constructor() {
5
5
  this._modules = new Map();
6
- this.supportedModules = [ModuleNames.CHANNELS, ModuleNames.SESSIONS, ModuleNames.BOTS, ModuleNames.MESSAGES, ModuleNames.AGENTS, ModuleNames.CONTACTS];
6
+ this.supportedModules = [ModuleNames.CHANNELS, ModuleNames.SESSIONS, ModuleNames.BOTS, ModuleNames.MESSAGES, ModuleNames.AGENTS, ModuleNames.CONTACTS, ModuleNames.CANNED_MESSAGES, ModuleNames.TEMPLATE_MESSAGES];
7
7
  }
8
8
 
9
9
  initialize(_ref) {
@@ -43,6 +43,14 @@ export default class IMSDK {
43
43
  return this._moduleManager.getModule(ModuleNames.CONTACTS);
44
44
  }
45
45
 
46
+ get cannedMessages() {
47
+ return this._moduleManager.getModule(ModuleNames.CANNED_MESSAGES);
48
+ }
49
+
50
+ get templateMessages() {
51
+ return this._moduleManager.getModule(ModuleNames.TEMPLATE_MESSAGES);
52
+ }
53
+
46
54
  hasModule(moduleName) {
47
55
  return this._moduleManager.hasModule(moduleName);
48
56
  }
@@ -55,6 +63,8 @@ export default class IMSDK {
55
63
  messages: this.messages,
56
64
  agents: this.agents,
57
65
  contacts: this.contacts,
66
+ cannedMessages: this.cannedMessages,
67
+ templateMessages: this.templateMessages,
58
68
  hasModule: this.hasModule.bind(this)
59
69
  };
60
70
  }
@@ -0,0 +1,30 @@
1
+ import { CannedMessageService } from '../../../application/services';
2
+ import { CannedMessageRepository } from '../../../infrastructure/repositories';
3
+
4
+ class CannedMessageSDK {
5
+ constructor(_ref) {
6
+ let {
7
+ config
8
+ } = _ref;
9
+ const {
10
+ cannedMessageAPI,
11
+ cannedMessageAdapter
12
+ } = config;
13
+ const cannedMessageRepository = new CannedMessageRepository({
14
+ cannedMessageAPI,
15
+ cannedMessageAdapter
16
+ }).toJSON();
17
+ const cannedMessageService = new CannedMessageService({
18
+ cannedMessageRepository
19
+ }).toJSON();
20
+ this.services = { ...cannedMessageService
21
+ };
22
+ }
23
+
24
+ toJSON() {
25
+ return this.services;
26
+ }
27
+
28
+ }
29
+
30
+ export default CannedMessageSDK;
@@ -0,0 +1,2 @@
1
+ import CannedMessageSDK from './CannedMessageSDK';
2
+ export { CannedMessageSDK };
@@ -0,0 +1,30 @@
1
+ import { TemplateMessageService } from '../../../application/services';
2
+ import { TemplateMessageRepository } from '../../../infrastructure/repositories';
3
+
4
+ class TemplateMessageSDK {
5
+ constructor(_ref) {
6
+ let {
7
+ config
8
+ } = _ref;
9
+ const {
10
+ templateMessageAPI,
11
+ templateLanguageAdapter
12
+ } = config;
13
+ const templateMessageRepository = new TemplateMessageRepository({
14
+ templateMessageAPI,
15
+ templateLanguageAdapter
16
+ }).toJSON();
17
+ const templateMessageService = new TemplateMessageService({
18
+ templateMessageRepository
19
+ }).toJSON();
20
+ this.services = { ...templateMessageService
21
+ };
22
+ }
23
+
24
+ toJSON() {
25
+ return this.services;
26
+ }
27
+
28
+ }
29
+
30
+ export default TemplateMessageSDK;
@@ -0,0 +1,2 @@
1
+ import TemplateMessageSDK from './TemplateMessageSDK';
2
+ export { TemplateMessageSDK };
@@ -0,0 +1,34 @@
1
+ import { AdapterError } from '../../../core/errors';
2
+ import { CannedMessage } from '../../../domain/entities';
3
+ import { IAdapter } from '../../../domain/interfaces';
4
+ export default class CannedMessageAdapter extends IAdapter {
5
+ adapt(cannedMessageData) {
6
+ if (!cannedMessageData) {
7
+ throw new AdapterError('Canned Message data is required');
8
+ }
9
+
10
+ try {
11
+ return new CannedMessage({
12
+ id: cannedMessageData.id,
13
+ title: cannedMessageData.title,
14
+ tags: cannedMessageData.tags,
15
+ displayMessage: cannedMessageData.displayMessage,
16
+ type: cannedMessageData.type,
17
+ message: cannedMessageData.message,
18
+ status: cannedMessageData.status,
19
+ createdBy: cannedMessageData.createdBy,
20
+ isActive: cannedMessageData.isActive,
21
+ isPrivate: cannedMessageData.isPrivate,
22
+ translations: cannedMessageData.translations,
23
+ uuid: cannedMessageData.uuid,
24
+ meta: cannedMessageData.meta,
25
+ rejectedReason: cannedMessageData.rejectedReason,
26
+ modifiedTime: cannedMessageData.modifiedTime,
27
+ parameters: cannedMessageData.parameters || null
28
+ }).toJSON();
29
+ } catch (error) {
30
+ throw new AdapterError(`Failed to adapt canned message: ${error.message}`);
31
+ }
32
+ }
33
+
34
+ }
@@ -0,0 +1,2 @@
1
+ import CannedMessageAdapter from './CannedMessageAdapter';
2
+ export { CannedMessageAdapter };
@@ -0,0 +1,24 @@
1
+ import { AdapterError } from '../../../core/errors';
2
+ import { CustomReplyExtension } from '../../../domain/entities';
3
+ import { IAdapter } from '../../../domain/interfaces';
4
+ export default class CustomReplyExtensionAdapter extends IAdapter {
5
+ adapt(customReplyExtData) {
6
+ if (!customReplyExtData) {
7
+ throw new AdapterError('custom Reply Extension Data is required');
8
+ }
9
+
10
+ try {
11
+ return new CustomReplyExtension({
12
+ id: customReplyExtData.id,
13
+ title: customReplyExtData.title,
14
+ message: customReplyExtData.message,
15
+ displayMessage: customReplyExtData.displayMessage,
16
+ webUrl: customReplyExtData.webUrl,
17
+ categoryName: customReplyExtData.categoryName
18
+ }).toJSON();
19
+ } catch (error) {
20
+ throw new AdapterError(`Failed to adapt custom Reply Extension Data: ${error.message}`);
21
+ }
22
+ }
23
+
24
+ }
@@ -0,0 +1,2 @@
1
+ import CustomReplyExtensionAdapter from './CustomReplyExtensionAdapter';
2
+ export { CustomReplyExtensionAdapter };
@@ -4,4 +4,7 @@ export * from './bots';
4
4
  export * from './attachments';
5
5
  export * from './messages';
6
6
  export * from './agents';
7
- export * from './contacts';
7
+ export * from './contacts';
8
+ export * from './cannedMessages';
9
+ export * from './templateMessages';
10
+ export * from './customReplyExtension';
@@ -8,6 +8,10 @@ export default class MessageAdapter extends IAdapter {
8
8
  }
9
9
 
10
10
  try {
11
+ const {
12
+ template
13
+ } = messageData;
14
+ const normalizedTemplate = template && Object.keys(template).length > 0 ? template : null;
11
15
  return new Message({
12
16
  id: messageData.id,
13
17
  sessionId: messageData.sessionId,
@@ -28,7 +32,7 @@ export default class MessageAdapter extends IAdapter {
28
32
  contentType: messageData.contentType,
29
33
  fullContentURL: messageData.fullContentURL,
30
34
  attachment: messageData.attachment,
31
- template: messageData.template,
35
+ template: normalizedTemplate,
32
36
  type: messageData.type,
33
37
  isRead: messageData.isRead,
34
38
  article: messageData.article
@@ -0,0 +1,20 @@
1
+ import { AdapterError } from '../../../core/errors';
2
+ import { TemplateCreditExhaustStatus } from '../../../domain/entities';
3
+ import { IAdapter } from '../../../domain/interfaces';
4
+ export default class TemplateCreditExhaustStatusAdapter extends IAdapter {
5
+ adapt(templateCreditExhaustStatusData) {
6
+ if (!templateCreditExhaustStatusData) {
7
+ throw new AdapterError('Template Credit Exhaust Status data is required');
8
+ }
9
+
10
+ try {
11
+ return new TemplateCreditExhaustStatus({
12
+ code: templateCreditExhaustStatusData.code,
13
+ message: templateCreditExhaustStatusData.message
14
+ }).toJSON();
15
+ } catch (error) {
16
+ throw new AdapterError(`Failed to adapt Template Credit Exhaust Status: ${error.message}`);
17
+ }
18
+ }
19
+
20
+ }
@@ -0,0 +1,20 @@
1
+ import { AdapterError } from '../../../core/errors';
2
+ import { TemplateLanguage } from '../../../domain/entities';
3
+ import { IAdapter } from '../../../domain/interfaces';
4
+ export default class TemplateLanguageAdapter extends IAdapter {
5
+ adapt(templateLanguageData) {
6
+ if (!templateLanguageData) {
7
+ throw new AdapterError('templateLanguage data is required');
8
+ }
9
+
10
+ try {
11
+ return new TemplateLanguage({
12
+ code: templateLanguageData.code,
13
+ language: templateLanguageData.language
14
+ }).toJSON();
15
+ } catch (error) {
16
+ throw new AdapterError(`Failed to adapt TemplateLanguage: ${error.message}`);
17
+ }
18
+ }
19
+
20
+ }
@@ -0,0 +1,3 @@
1
+ import TemplateLanguageAdapter from './TemplateLanguageAdapter';
2
+ import TemplateCreditExhaustStatusAdapter from './TemplateCreditExhaustStatusAdapter';
3
+ export { TemplateLanguageAdapter, TemplateCreditExhaustStatusAdapter };
@@ -0,0 +1,74 @@
1
+ import { getCannedMessageRequest, getCannedMessagesRequest, createCannedMessageRequest, updateCannedMessageRequest, deleteCannedMessageRequest, enableCannedMessageRequest, disableCannedMessageRequest } from '../../../domain/dto';
2
+ import { ICannedMessageRepository } from '../../../domain/interfaces/repositories';
3
+ export default class CannedMessageAPI extends ICannedMessageRepository {
4
+ async getCannedMessages() {
5
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getCannedMessagesRequest();
6
+ const operation = 'getCannedMessages';
7
+ const httpRequest = await this.request({
8
+ operation,
9
+ request
10
+ });
11
+ return httpRequest;
12
+ }
13
+
14
+ async getCannedMessage() {
15
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getCannedMessageRequest();
16
+ const operation = 'getCannedMessage';
17
+ const httpRequest = await this.request({
18
+ operation,
19
+ request
20
+ });
21
+ return httpRequest;
22
+ }
23
+
24
+ async createCannedMessage() {
25
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : createCannedMessageRequest();
26
+ const operation = 'createCannedMessage';
27
+ const httpRequest = await this.request({
28
+ operation,
29
+ request
30
+ });
31
+ return httpRequest;
32
+ }
33
+
34
+ async updateCannedMessage() {
35
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : updateCannedMessageRequest();
36
+ const operation = 'updateCannedMessage';
37
+ const httpRequest = await this.request({
38
+ operation,
39
+ request
40
+ });
41
+ return httpRequest;
42
+ }
43
+
44
+ async deleteCannedMessage() {
45
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : deleteCannedMessageRequest();
46
+ const operation = 'deleteCannedMessage';
47
+ const httpRequest = await this.request({
48
+ operation,
49
+ request
50
+ });
51
+ return httpRequest;
52
+ }
53
+
54
+ async enableCannedMessage() {
55
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : enableCannedMessageRequest();
56
+ const operation = 'enableCannedMessage';
57
+ const httpRequest = await this.request({
58
+ operation,
59
+ request
60
+ });
61
+ return httpRequest;
62
+ }
63
+
64
+ async disableCannedMessage() {
65
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : disableCannedMessageRequest();
66
+ const operation = 'disableCannedMessage';
67
+ const httpRequest = await this.request({
68
+ operation,
69
+ request
70
+ });
71
+ return httpRequest;
72
+ }
73
+
74
+ }
@@ -0,0 +1,2 @@
1
+ import CannedMessageAPI from './CannedMessageAPI';
2
+ export { CannedMessageAPI };
@@ -3,4 +3,6 @@ export * from './sessions';
3
3
  export * from './bots';
4
4
  export * from './messages';
5
5
  export * from './agents';
6
- export * from './contacts';
6
+ export * from './contacts';
7
+ export * from './cannedMessages';
8
+ export * from './templateMessages';
@@ -0,0 +1,42 @@
1
+ import { HTTP_METHODS } from '../../../../core/constants';
2
+ import { getCannedMessageRequest, getCannedMessagesRequest, createCannedMessageRequest, updateCannedMessageRequest, deleteCannedMessageRequest, enableCannedMessageRequest, disableCannedMessageRequest } from '../../../../domain/dto';
3
+ import constructCannedMessageEndPoint from './constructCannedMessageEndPoint';
4
+ import createAPIRegistry from '../createAPIRegistry';
5
+
6
+ function getCannedMessages() {
7
+ return createAPIRegistry(constructCannedMessageEndPoint(), HTTP_METHODS.GET, getCannedMessagesRequest());
8
+ }
9
+
10
+ function getCannedMessage() {
11
+ return createAPIRegistry(constructCannedMessageEndPoint('/:cannedMessageId'), HTTP_METHODS.GET, getCannedMessageRequest());
12
+ }
13
+
14
+ function createCannedMessage() {
15
+ return createAPIRegistry(constructCannedMessageEndPoint(), HTTP_METHODS.POST, createCannedMessageRequest());
16
+ }
17
+
18
+ function updateCannedMessage() {
19
+ return createAPIRegistry(constructCannedMessageEndPoint('/:cannedMessageId'), HTTP_METHODS.PATCH, updateCannedMessageRequest());
20
+ }
21
+
22
+ function enableCannedMessage() {
23
+ return createAPIRegistry(constructCannedMessageEndPoint('/:cannedMessageId/activation'), HTTP_METHODS.PATCH, enableCannedMessageRequest());
24
+ }
25
+
26
+ function disableCannedMessage() {
27
+ return createAPIRegistry(constructCannedMessageEndPoint('/:cannedMessageId/activation'), HTTP_METHODS.DELETE, disableCannedMessageRequest());
28
+ }
29
+
30
+ function deleteCannedMessage() {
31
+ return createAPIRegistry(constructCannedMessageEndPoint('/:cannedMessageId'), HTTP_METHODS.DELETE, deleteCannedMessageRequest());
32
+ }
33
+
34
+ export default {
35
+ getCannedMessage,
36
+ getCannedMessages,
37
+ createCannedMessage,
38
+ updateCannedMessage,
39
+ deleteCannedMessage,
40
+ enableCannedMessage,
41
+ disableCannedMessage
42
+ };
@@ -0,0 +1,10 @@
1
+ import createBaseUrl from '../createBaseUrl';
2
+ export default function constructCannedMessageEndPoint(extra) {
3
+ const base = '/cannedMessages';
4
+
5
+ if (extra) {
6
+ return createBaseUrl(base + extra);
7
+ }
8
+
9
+ return createBaseUrl(base);
10
+ }
@@ -0,0 +1,2 @@
1
+ import cannedMessageAPIRegistry from './cannedMessageAPIRegistry';
2
+ export { cannedMessageAPIRegistry };
@@ -5,6 +5,8 @@ import { botAPIRegistry } from './bots';
5
5
  import { messageAPIRegistry } from './messages';
6
6
  import { agentAPIRegistry } from './agents';
7
7
  import { contactAPIRegistry } from './contacts';
8
+ import { cannedMessageAPIRegistry } from './cannedMessages';
9
+ import { templateMessageAPIRegistry } from './templateMessages';
8
10
  import { ModuleNames } from '../../../core/constants';
9
11
  const APIRegistry = {
10
12
  [ModuleNames.CHANNELS]: channelAPIRegistry,
@@ -12,7 +14,9 @@ const APIRegistry = {
12
14
  [ModuleNames.BOTS]: botAPIRegistry,
13
15
  [ModuleNames.MESSAGES]: messageAPIRegistry,
14
16
  [ModuleNames.AGENTS]: agentAPIRegistry,
15
- [ModuleNames.CONTACTS]: contactAPIRegistry
17
+ [ModuleNames.CONTACTS]: contactAPIRegistry,
18
+ [ModuleNames.CANNED_MESSAGES]: cannedMessageAPIRegistry,
19
+ [ModuleNames.TEMPLATE_MESSAGES]: templateMessageAPIRegistry
16
20
  };
17
21
  export default function getRegistryConfig(module, operation) {
18
22
  const moduleConfig = selectn(module, APIRegistry);
@@ -0,0 +1,11 @@
1
+ import { IntegrationServices } from '../../../../domain/enum';
2
+ import createBaseUrl from '../createBaseUrl';
3
+ export default function constructTemplateMessageEndPoint(extra) {
4
+ const base = `/integrations/${IntegrationServices.WHATSAPP}`;
5
+
6
+ if (extra) {
7
+ return createBaseUrl(base + extra);
8
+ }
9
+
10
+ return createBaseUrl(base);
11
+ }
@@ -0,0 +1,2 @@
1
+ import templateMessageAPIRegistry from './templateMessageAPIRegistry';
2
+ export { templateMessageAPIRegistry };
@@ -0,0 +1,18 @@
1
+ import { HTTP_METHODS } from '../../../../core/constants';
2
+ import { getTemplateLanguagesRequest, getTemplateCreditExhaustStatusRequest } from '../../../../domain/dto';
3
+ import createAPIRegistry from '../createAPIRegistry';
4
+ import constructTemplateMessageEndPoint from './constructTemplateMessageEndPoint';
5
+
6
+ function getTemplateLanguages() {
7
+ return createAPIRegistry(constructTemplateMessageEndPoint('/templateLanguages'), HTTP_METHODS.POST, getTemplateLanguagesRequest());
8
+ }
9
+
10
+ function getWhatsAppTemplateCreditExhaustStatus() {
11
+ return createAPIRegistry(constructTemplateMessageEndPoint('/templateCreditExhaustStatus'), // NO I18N
12
+ HTTP_METHODS.POST, getTemplateCreditExhaustStatusRequest());
13
+ }
14
+
15
+ export default {
16
+ getTemplateLanguages,
17
+ getWhatsAppTemplateCreditExhaustStatus
18
+ };
@@ -0,0 +1,24 @@
1
+ import { getTemplateLanguagesRequest, getTemplateCreditExhaustStatusRequest } from '../../../domain/dto';
2
+ import { ITemplateMessageRepository } from '../../../domain/interfaces/repositories';
3
+ export default class TemplateMessageAPI extends ITemplateMessageRepository {
4
+ async getTemplateLanguages() {
5
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getTemplateLanguagesRequest();
6
+ const operation = 'getTemplateLanguages';
7
+ const httpRequest = await this.request({
8
+ request,
9
+ operation
10
+ });
11
+ return httpRequest;
12
+ }
13
+
14
+ async getWhatsAppTemplateCreditExhaustStatus() {
15
+ let request = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getTemplateCreditExhaustStatusRequest();
16
+ const operation = 'getWhatsAppTemplateCreditExhaustStatus';
17
+ const httpRequest = await this.request({
18
+ request,
19
+ operation
20
+ });
21
+ return httpRequest;
22
+ }
23
+
24
+ }
@@ -0,0 +1,2 @@
1
+ import TemplateMessageAPI from './TemplateMessageAPI';
2
+ export { TemplateMessageAPI };
@@ -0,0 +1,97 @@
1
+ import { CannedMessageAdapter } from '../../adapters';
2
+ import { CannedMessageAPI } from '../../api';
3
+ import { ICannedMessageRepository } from '../../../domain/interfaces/repositories/cannedMessages';
4
+ import { ResponseTypes } from '../../../core/constants';
5
+ export default class CannedMessageRepository extends ICannedMessageRepository {
6
+ constructor(_ref) {
7
+ let {
8
+ cannedMessageAPI,
9
+ cannedMessageAdapter
10
+ } = _ref;
11
+ super();
12
+ this.defaultAPI = new CannedMessageAPI();
13
+ this.customAPI = cannedMessageAPI;
14
+ this.cannedMessageAPI = this.createAPIProxy(this.customAPI, this.defaultAPI);
15
+ this.cannedMessageAdapter = cannedMessageAdapter || new CannedMessageAdapter();
16
+ }
17
+
18
+ async invokeAPI(_ref2) {
19
+ let {
20
+ operation,
21
+ request,
22
+ adapter = this.cannedMessageAdapter,
23
+ responseType
24
+ } = _ref2;
25
+ return this.executeAPICall({
26
+ operation,
27
+ request,
28
+ apiProxy: this.cannedMessageAPI,
29
+ customAPI: this.customAPI,
30
+ adapter,
31
+ responseType
32
+ });
33
+ }
34
+
35
+ async getCannedMessages(request) {
36
+ return this.invokeAPI({
37
+ operation: 'getCannedMessages',
38
+ request,
39
+ responseType: ResponseTypes.LIST
40
+ });
41
+ }
42
+
43
+ async getCannedMessage(request) {
44
+ return this.invokeAPI({
45
+ operation: 'getCannedMessage',
46
+ request
47
+ });
48
+ }
49
+
50
+ async createCannedMessage(request) {
51
+ return this.invokeAPI({
52
+ operation: 'createCannedMessage',
53
+ request
54
+ });
55
+ }
56
+
57
+ async deleteCannedMessage(request) {
58
+ return this.invokeAPI({
59
+ operation: 'deleteCannedMessage',
60
+ request
61
+ });
62
+ }
63
+
64
+ async updateCannedMessage(request) {
65
+ return this.invokeAPI({
66
+ operation: 'updateCannedMessage',
67
+ request
68
+ });
69
+ }
70
+
71
+ async enableCannedMessage(request) {
72
+ return this.invokeAPI({
73
+ operation: 'enableCannedMessage',
74
+ request
75
+ });
76
+ }
77
+
78
+ async disableCannedMessage(request) {
79
+ return this.invokeAPI({
80
+ operation: 'disableCannedMessage',
81
+ request
82
+ });
83
+ }
84
+
85
+ toJSON() {
86
+ return {
87
+ getCannedMessages: this.getCannedMessages.bind(this),
88
+ getCannedMessage: this.getCannedMessage.bind(this),
89
+ createCannedMessage: this.createCannedMessage.bind(this),
90
+ updateCannedMessage: this.updateCannedMessage.bind(this),
91
+ deleteCannedMessage: this.deleteCannedMessage.bind(this),
92
+ enableCannedMssage: this.enableCannedMessage.bind(this),
93
+ disableCannedMessage: this.disableCannedMessage.bind(this)
94
+ };
95
+ }
96
+
97
+ }
@@ -0,0 +1,2 @@
1
+ import CannedMessageRepository from './CannedMessageRepository';
2
+ export { CannedMessageRepository };
@@ -3,4 +3,6 @@ export * from './sessions';
3
3
  export * from './bots';
4
4
  export * from './messages';
5
5
  export * from './agents';
6
- export * from './contacts';
6
+ export * from './contacts';
7
+ export * from './cannedMessages';
8
+ export * from './templateMessages';