@memberjunction/entity-communications-server 1.8.0 → 2.0.0

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.
@@ -1,21 +1,37 @@
1
- import { Message } from "@memberjunction/communication-types";
2
- import { RunViewParams } from "@memberjunction/core";
3
- import { EntityCommunicationsEngineBase } from "@memberjunction/entity-communications-base";
1
+ import { Message, MessageRecipient } from "@memberjunction/communication-types";
2
+ import { EntityInfo } from "@memberjunction/core";
3
+ import { TemplateParamEntity } from "@memberjunction/core-entities";
4
+ import { EntityCommunicationMessageTypeExtended, EntityCommunicationParams, EntityCommunicationResult, EntityCommunicationsEngineBase } from "@memberjunction/entity-communications-base";
4
5
  /**
5
6
  * Server-side implementation of the entity communications engine
6
7
  */
7
8
  export declare class EntityCommunicationsEngine extends EntityCommunicationsEngineBase {
8
9
  /**
9
10
  * Executes a given message request against a view of records for a given entity
10
- * @param entityID
11
- * @param runViewParams
12
- * @param providerName
13
- * @param providerMessageTypeName
14
- * @param message
15
11
  */
16
- RunEntityCommunication(entityID: number, runViewParams: RunViewParams, providerName: string, providerMessageTypeName: string, message: Message): Promise<{
17
- Success: boolean;
18
- ErrorMessage: string;
12
+ RunEntityCommunication(params: EntityCommunicationParams): Promise<EntityCommunicationResult>;
13
+ protected PopulateRecipientContextData(entityInfo: EntityInfo, entityMessageType: EntityCommunicationMessageTypeExtended, message: Message, records: any[]): Promise<MessageRecipient[]>;
14
+ protected PopulateSingleRecipientContextData(record: any, relatedData: {
15
+ paramName: string;
16
+ data: any[];
17
+ }[], pkey: any, params: TemplateParamEntity[]): Promise<{
18
+ [key: string]: any;
19
19
  }>;
20
+ /**
21
+ * Returns an array of objects that have the distinct param names across all templates in use, and the complete data for
22
+ * those relationships for all of the recipient records provided to the method.
23
+ * @param message
24
+ * @param records
25
+ */
26
+ protected GetRelatedData(message: Message, recipients: any[], recipientPrimaryKeyFieldName: string, recipientPrimaryKeyNeedsQuotes: boolean): Promise<{
27
+ paramName: string;
28
+ data: any[];
29
+ }[]>;
30
+ /**
31
+ * This method is resposnible for determining if the template(s) used in the message have aligned parameters, meaning they don't have overlapping parameter names that have
32
+ * different meanings. It is okay for scenarios where there are > 1 template in use for a message to have different parameter names, but if they have the SAME parameter names
33
+ * they must not have different settings.
34
+ */
35
+ protected ValidateTemplateContextParamAlignment(message: Message): boolean;
20
36
  }
21
37
  //# sourceMappingURL=entity-communications.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity-communications.d.ts","sourceRoot":"","sources":["../src/entity-communications.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAC9D,OAAO,EAAqB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAG5F;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,8BAA8B;IAC1E;;;;;;;OAOG;IACU,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAC9C,YAAY,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,EACrD,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAC,CAAC;CA6F3G"}
1
+ {"version":3,"file":"entity-communications.d.ts","sourceRoot":"","sources":["../src/entity-communications.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,UAAU,EAAoC,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,sCAAsC,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAI1L;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,8BAA8B;IAC1E;;OAEG;IACU,sBAAsB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,CAAC;cAwE1F,4BAA4B,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,sCAAsC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;cAoD9K,kCAAkC,CAAC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,EAAE,CAAA;KAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;IAiCzL;;;;;OAKG;cACa,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,4BAA4B,EAAE,MAAM,EAAE,8BAA8B,EAAE,OAAO,GAAG,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,EAAE,CAAA;KAAC,EAAE,CAAC;IAgD/L;;;;OAIG;IACH,SAAS,CAAC,qCAAqC,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;CAgC7E"}
@@ -10,42 +10,31 @@ const entity_communications_base_1 = require("@memberjunction/entity-communicati
10
10
  class EntityCommunicationsEngine extends entity_communications_base_1.EntityCommunicationsEngineBase {
11
11
  /**
12
12
  * Executes a given message request against a view of records for a given entity
13
- * @param entityID
14
- * @param runViewParams
15
- * @param providerName
16
- * @param providerMessageTypeName
17
- * @param message
18
13
  */
19
- async RunEntityCommunication(entityID, runViewParams, providerName, providerMessageTypeName, message) {
14
+ async RunEntityCommunication(params) {
20
15
  try {
21
16
  this.TryThrowIfNotLoaded();
22
17
  const md = new core_1.Metadata();
23
- const entityInfo = md.Entities.find(e => e.ID === entityID);
18
+ const entityInfo = md.Entities.find(e => e.ID === params.EntityID);
24
19
  if (!entityInfo)
25
- throw new Error(`Entity ${entityID} not found`);
26
- if (!this.EntitySupportsCommunication(entityID)) {
27
- throw new Error(`Entity ${entityID} does not support communication`);
20
+ throw new Error(`Entity ${params.EntityID} not found`);
21
+ if (!this.EntitySupportsCommunication(params.EntityID)) {
22
+ throw new Error(`Entity ${params.EntityID} does not support communication`);
28
23
  }
29
24
  await communication_engine_1.CommunicationEngine.Instance.Config(false, this.ContextUser);
30
- const provider = communication_engine_1.CommunicationEngine.Instance.Providers.find(p => p.Name.trim().toLowerCase() === providerName.trim().toLowerCase());
25
+ const provider = communication_engine_1.CommunicationEngine.Instance.Providers.find(p => p.Name.trim().toLowerCase() === params.ProviderName.trim().toLowerCase());
31
26
  if (!provider)
32
- throw new Error(`Provider ${providerName} not found`);
33
- const providerMessageType = provider.MessageTypes.find(mt => mt.Name.trim().toLowerCase() === providerMessageTypeName.trim().toLowerCase());
34
- const entityMessageTypes = this.GetEntityCommunicationMessageTypes(entityID);
27
+ throw new Error(`Provider ${params.ProviderName} not found`);
28
+ const providerMessageType = provider.MessageTypes.find(mt => mt.Name.trim().toLowerCase() === params.ProviderMessageTypeName.trim().toLowerCase());
29
+ const entityMessageTypes = this.GetEntityCommunicationMessageTypes(params.EntityID);
35
30
  const entityMessageType = entityMessageTypes.find(m => m.BaseMessageTypeID === providerMessageType.CommunicationBaseMessageTypeID);
36
31
  if (!entityMessageType) {
37
- throw new Error(`Entity ${entityID} does not support message type ${providerMessageType.CommunicationBaseMessageType}`);
32
+ throw new Error(`Entity ${params.EntityID} does not support message type ${providerMessageType.CommunicationBaseMessageType}`);
38
33
  }
39
- // we have now validated we are good on the message type requested...
40
- // next up we will figure out which field to use for the entity, starting at the entity level and then going to the record level, IF the entity has
41
- // a PreferredCommunicationField we will flag that here as recordLevelPref = true
42
- const recordLevelPref = entityInfo.PreferredCommunicationField?.length > 0;
43
- // get the highest priority field within the entityMessageType.communicationFields property
44
- const entityLevelPrefField = entityMessageType.CommunicationFields.sort((a, b) => a.Priority - b.Priority)[0];
45
34
  // next our main job here is to run the view, get all the records, and then call the communication engine
46
35
  const rv = new core_1.RunView();
47
36
  const rvParams2 = {
48
- ...runViewParams
37
+ ...params.RunViewParams
49
38
  };
50
39
  // now change rvParams2.Fields to have ALL entity fields to make sure we get them all
51
40
  rvParams2.Fields = entityInfo.Fields.map(f => f.Name);
@@ -53,40 +42,24 @@ class EntityCommunicationsEngine extends entity_communications_base_1.EntityComm
53
42
  if (result && result.Success) {
54
43
  // have the results, now we can map the results to the types the comm engine needs and call SendMessages() in the comm engine
55
44
  await communication_engine_1.CommunicationEngine.Instance.Config(false, this.ContextUser);
56
- const recipients = result.Results.map(r => {
57
- // in the below we get the VALUE of the record level preferred field if it exists, otherwise we get the value of the entity level preferred field
58
- const ToValue = !recordLevelPref ? r[entityLevelPrefField.FieldName] : r[r[entityInfo.PreferredCommunicationField]];
59
- return {
60
- To: ToValue,
61
- ContextData: { ...r,
62
- recommendedArticles: [
63
- {
64
- title: 'Exemplifying the Importance of Code Reviews',
65
- url: 'https://example.com/article1'
66
- },
67
- {
68
- title: 'AI and Software Development: A New Frontier',
69
- url: 'https://example.com/article2'
70
- },
71
- {
72
- title: 'Gardening Tips for Fun Loving Software Developers',
73
- url: 'https://example.com/article3'
74
- }
75
- ]
76
- }
77
- };
78
- });
79
- const sendResult = await communication_engine_1.CommunicationEngine.Instance.SendMessages(providerName, providerMessageTypeName, message, recipients);
45
+ const recipients = await this.PopulateRecipientContextData(entityInfo, entityMessageType, params.Message, result.Results);
46
+ const sendResult = await communication_engine_1.CommunicationEngine.Instance.SendMessages(params.ProviderName, params.ProviderMessageTypeName, params.Message, recipients, params.PreviewOnly);
80
47
  if (sendResult && sendResult.length === recipients.length) {
81
48
  // make sure none of the messages failed
82
49
  return {
83
50
  Success: !sendResult.some(r => !r.Success),
84
- ErrorMessage: sendResult.filter(r => !r.Success).map(r => r.Error).join('; ')
51
+ ErrorMessage: sendResult.filter(r => !r.Success).map(r => r.Error).join('; '),
52
+ Results: sendResult.map((r, i) => {
53
+ return {
54
+ RecipientData: recipients[i],
55
+ Message: r.Message
56
+ };
57
+ })
85
58
  };
86
59
  }
87
60
  }
88
61
  else {
89
- throw new Error(`Failed to run view ${runViewParams.ViewName}: ${result.ErrorMessage}`);
62
+ throw new Error(`Failed to run view ${params.RunViewParams.ViewName}: ${result.ErrorMessage}`);
90
63
  }
91
64
  return {
92
65
  Success: false,
@@ -100,6 +73,175 @@ class EntityCommunicationsEngine extends entity_communications_base_1.EntityComm
100
73
  };
101
74
  }
102
75
  }
76
+ async PopulateRecipientContextData(entityInfo, entityMessageType, message, records) {
77
+ // we have now validated we are good on the message type requested...
78
+ // next up we will figure out which field to use for the entity, starting at the entity level and then going to the record level, IF the entity has
79
+ // a PreferredCommunicationField we will flag that here as recordLevelPref = true
80
+ const recordLevelPref = entityInfo.PreferredCommunicationField?.length > 0;
81
+ // get the highest priority field within the entityMessageType.communicationFields property
82
+ const entityLevelPrefField = entityMessageType.CommunicationFields.sort((a, b) => a.Priority - b.Priority)[0];
83
+ const hasTemplates = message.BodyTemplate || message.HTMLBodyTemplate || message.SubjectTemplate;
84
+ if (hasTemplates) {
85
+ this.ValidateTemplateContextParamAlignment(message);
86
+ }
87
+ const relatedData = await this.GetRelatedData(message, records, entityInfo.FirstPrimaryKey.Name, entityInfo.FirstPrimaryKey.NeedsQuotes);
88
+ // assume that the template(s) if there are multiple, ALL use the same parameters for their contexts, that is validated above
89
+ const templates = [];
90
+ if (message.BodyTemplate) {
91
+ templates.push(message.BodyTemplate);
92
+ }
93
+ if (message.HTMLBodyTemplate) {
94
+ templates.push(message.HTMLBodyTemplate);
95
+ }
96
+ if (message.SubjectTemplate) {
97
+ templates.push(message.SubjectTemplate);
98
+ }
99
+ const params = [];
100
+ templates.forEach(t => {
101
+ t.Params.forEach(p => {
102
+ if (!params.includes(p)) {
103
+ params.push(p);
104
+ }
105
+ });
106
+ });
107
+ const recipients = [];
108
+ for (const r of records) {
109
+ // in the below we get the VALUE of the record level preferred field if it exists, otherwise we get the value of the entity level preferred field
110
+ const ToValue = !recordLevelPref ? r[entityLevelPrefField.FieldName] : r[r[entityInfo.PreferredCommunicationField]];
111
+ // we have mapped the ToValue based on preferences, next up, we need to populate the context data, if there are any templates
112
+ // if there are no templates, we skip this step to save time
113
+ const pkey = r[entityInfo.FirstPrimaryKey.Name];
114
+ const retVal = {
115
+ To: ToValue,
116
+ ContextData: {}
117
+ };
118
+ if (hasTemplates) {
119
+ retVal.ContextData = await this.PopulateSingleRecipientContextData(r, relatedData, pkey, params);
120
+ }
121
+ recipients.push(retVal);
122
+ }
123
+ return recipients;
124
+ }
125
+ async PopulateSingleRecipientContextData(record, relatedData, pkey, params) {
126
+ // now, go through each template, and populate the context data for that param, but only do if we've not already processed that parameter since templates across Body/BodyHTML/Subject can share parameters
127
+ const contextData = {};
128
+ for (const p of params) {
129
+ if (!contextData[p.Name]) {
130
+ // we have not processed this parameter yet, so we will do so now.
131
+ // Params have various types, so we will switch on that here
132
+ switch (p.Type) {
133
+ case "Record":
134
+ // this one is simple, we create a property by the provided name, and set the value to the record we are currently processing
135
+ contextData[p.Name] = record;
136
+ break;
137
+ case "Entity":
138
+ // here we need to grab the related data from another entity and filter it down for the record we are current processing so it only shows the related data
139
+ // the metadata in the param tells us what we need to know
140
+ const d = relatedData.find(rd => rd.paramName === p.Name);
141
+ // now filter down the data in d to just this record
142
+ const relatedDataForRecord = d.data.filter(rdfr => rdfr[p.LinkedParameterField] === pkey);
143
+ // and set the value of the context data to the filtered data
144
+ contextData[p.Name] = relatedDataForRecord;
145
+ break;
146
+ case "Array":
147
+ case "Scalar":
148
+ case "Object":
149
+ // do nothing here, we don't directly support these param types from messaging. These param types are used
150
+ // when programs directly invoke the templating engine, but are not used by the Communication Engine
151
+ break;
152
+ }
153
+ }
154
+ }
155
+ return contextData;
156
+ }
157
+ /**
158
+ * Returns an array of objects that have the distinct param names across all templates in use, and the complete data for
159
+ * those relationships for all of the recipient records provided to the method.
160
+ * @param message
161
+ * @param records
162
+ */
163
+ async GetRelatedData(message, recipients, recipientPrimaryKeyFieldName, recipientPrimaryKeyNeedsQuotes) {
164
+ // First, get a distinct list of params of type Entity
165
+ const templates = [];
166
+ if (message.BodyTemplate) {
167
+ templates.push(message.BodyTemplate);
168
+ }
169
+ if (message.HTMLBodyTemplate) {
170
+ templates.push(message.HTMLBodyTemplate);
171
+ }
172
+ if (message.SubjectTemplate) {
173
+ templates.push(message.SubjectTemplate);
174
+ }
175
+ const entityParams = [];
176
+ templates.forEach(t => {
177
+ t.Params.forEach(p => {
178
+ if (p.Type === "Entity" && !entityParams.includes(p)) {
179
+ entityParams.push(p);
180
+ }
181
+ });
182
+ });
183
+ const data = [];
184
+ // now we have a distinct list of params that are of type Entity, we need to get the related data for each of these params
185
+ for (const p of entityParams) {
186
+ // we need to get the related data for this param, and filter it down to just the records we are currently processing
187
+ // the metadata in the param tells us what we need to know
188
+ const relatedEntity = p.Entity;
189
+ const relatedField = p.LinkedParameterField;
190
+ // construct a filter for the related field so that we constrain the results to just the set of records linked to our recipients
191
+ const quotes = recipientPrimaryKeyNeedsQuotes ? "'" : "";
192
+ const filter = `${relatedField} in (${recipients.map(r => `${quotes}${r[recipientPrimaryKeyFieldName]}${quotes}`).join(',')})`;
193
+ const finalFilter = p.ExtraFilter ? `(${filter}) AND (${p.ExtraFilter})` : filter;
194
+ const rv = new core_1.RunView();
195
+ const result = await rv.RunView({
196
+ EntityName: relatedEntity,
197
+ ExtraFilter: finalFilter,
198
+ }, this.ContextUser);
199
+ if (result && result.Success) {
200
+ data.push({
201
+ paramName: p.Name,
202
+ data: result.Results
203
+ });
204
+ }
205
+ }
206
+ return data;
207
+ }
208
+ /**
209
+ * This method is resposnible for determining if the template(s) used in the message have aligned parameters, meaning they don't have overlapping parameter names that have
210
+ * different meanings. It is okay for scenarios where there are > 1 template in use for a message to have different parameter names, but if they have the SAME parameter names
211
+ * they must not have different settings.
212
+ */
213
+ ValidateTemplateContextParamAlignment(message) {
214
+ // go through each template, and compare it's parameters to look for OVERLAP on param names with the other templates. If there is overlap
215
+ // make sure the definitions are the same, if they are not, throw an error.
216
+ const templates = [];
217
+ if (message.BodyTemplate) {
218
+ templates.push(message.BodyTemplate);
219
+ }
220
+ if (message.HTMLBodyTemplate) {
221
+ templates.push(message.HTMLBodyTemplate);
222
+ }
223
+ if (message.SubjectTemplate) {
224
+ templates.push(message.SubjectTemplate);
225
+ }
226
+ // the params are defined in each template they will be in the Params property of the template
227
+ const paramNames = [];
228
+ for (const t of templates) {
229
+ for (const p of t.Params) {
230
+ if (paramNames.includes(p.Name)) {
231
+ // we have a duplicate parameter name, now we need to check if the definitions are the same
232
+ const otherParam = paramNames.find(p2 => p2.Name === p.Name);
233
+ if (otherParam.Type !== p.Type) {
234
+ throw new Error(`Parameter ${p.Name} has different types in different templates`);
235
+ }
236
+ }
237
+ else {
238
+ paramNames.push(p);
239
+ }
240
+ }
241
+ }
242
+ // if we get here, we are good, otherwise we will have thrown an exception
243
+ return true;
244
+ }
103
245
  }
104
246
  exports.EntityCommunicationsEngine = EntityCommunicationsEngine;
105
247
  //# sourceMappingURL=entity-communications.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity-communications.js","sourceRoot":"","sources":["../src/entity-communications.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity-communications.js","sourceRoot":"","sources":["../src/entity-communications.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/entity-communications-server",
3
- "version": "1.8.0",
3
+ "version": "2.0.0",
4
4
  "description": "MemberJunction: Library that connects the MJ entities framework to the communication framework",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -19,10 +19,10 @@
19
19
  "typescript": "^5.4.5"
20
20
  },
21
21
  "dependencies": {
22
- "@memberjunction/global": "1.8.0",
23
- "@memberjunction/core": "1.8.0",
24
- "@memberjunction/core-entities": "1.8.0",
25
- "@memberjunction/communication-engine": "1.8.0",
26
- "@memberjunction/entity-communications-base": "1.8.0"
22
+ "@memberjunction/global": "2.0.0",
23
+ "@memberjunction/core": "2.0.0",
24
+ "@memberjunction/core-entities": "2.0.0",
25
+ "@memberjunction/communication-engine": "2.0.0",
26
+ "@memberjunction/entity-communications-base": "2.0.0"
27
27
  }
28
28
  }