Microsoft Dynamics 365 Marketing:有没有办法在发送电子邮件时更新自定义实体

问题描述 投票:0回答:1
我正在将 Microsoft Dynamics 365 CRM 与营销模块结合使用。

当营销旅程发送电子邮件时,我想在自定义实体中创建一条记录,其中包含联系人详细信息和所发送电子邮件的详细信息。

我找不到拦截电子邮件发送过程以运行一些自定义代码的方法,例如一个插件

有办法吗,还是营销模块不行?

dynamics-crm dynamics-marketing
1个回答
0
投票
“发送电子邮件”是电子邮件表上的一个操作。 您可以使用 HTML、PCF 控件或功能区工作台创建自定义按钮。

如果你决定使用功能区,这个 js 应该处理它:

/* jslint browser: true, for: true, this: true */ /* global Xrm, Common, BBYH, BUSINESS_REQUIREMENT_LEVEL */ if (!window.hasOwnProperty("Org")) { window.Org = {}; } Org.emailRibbon = (function() { "use strict"; const Helpers = { handleEmail: async(primaryControl) => { const formContext = primaryControl.ui.formContext; //use formContext to get your guid const executeSendEmailRequest = { // Parameters entity: { entityType: "email", id: "<guid here>" }, // entity IssueSend: true, // Edm.Boolean TrackingToken: "Optional Token", // Edm.String getMetadata() { return { boundParameter: "entity", parameterTypes: { entity: { typeName: "mscrm.email", structuralProperty: 5 }, IssueSend: { typeName: "Edm.Boolean", structuralProperty: 1 }, TrackingToken: { typeName: "Edm.String", structuralProperty: 1 } }, operationType: 0, operationName: "SendEmail" }; } }; try { const response = await Xrm.WebApi.execute(executeSendEmailRequest); if (response.ok) { const responseBody = await response.json(); console.log(responseBody); // Return Type: mscrm.SendEmailResponse // Output Parameters const subject = responseBody["Subject"]; // Edm.String return subject; } } catch (error) { console.log(error.message); } } }; return { handleEmail: Helpers.handleEmail }; })();

然后只需创建按钮并将 Org.emailRibbon.handleEmail 添加到命令中:

enter image description here

然后你就可以用它做任何你想做的事情。 我使用 Dataverse REST Builder 创建部分代码。 但要小心,大多数时候它不会生成非常好的代码。 如果您使用它来创建“执行多个”或“创建记录”或其他任何内容,请确保应用 ES6 最佳实践。

© www.soinside.com 2019 - 2024. All rights reserved.