当营销旅程发送电子邮件时,我想在自定义实体中创建一条记录,其中包含联系人详细信息和所发送电子邮件的详细信息。
我找不到拦截电子邮件发送过程以运行一些自定义代码的方法,例如一个插件
有办法吗,还是营销模块不行?
如果你决定使用功能区,这个 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 添加到命令中:
然后你就可以用它做任何你想做的事情。 我使用 Dataverse REST Builder 创建部分代码。 但要小心,大多数时候它不会生成非常好的代码。 如果您使用它来创建“执行多个”或“创建记录”或其他任何内容,请确保应用 ES6 最佳实践。