定义自定义渠道
适用的渠道:短信、自定义
现在您已经定义了自定义渠道的各个部分,是时候定义渠道了。 此步骤是在一个元数据文件中连接之前的所有部分,该文件是渠道定义实体 (msdyn_channeldefinition
) 的记录。
重要提示
如果直接在自定义文件中配置元数据记录,请确保 GUID 为小写。
渠道定义约定
实体逻辑名称:msdyn_channeldefinition
实体集名称:msdyn_channeldefinitions
主要 ID 属性名称:msdyn_channeldefinitionid
- msdyn_displayname:字符串 - 可选。 渠道的显示名称。
- msdyn_description:字符串 - 可选。 渠道的说明。
- msdyn_channeltype:字符串 - 必需。 支持值:自定义、短信。
- msdyn_outboundendpointurltemplate:字符串 - 必需。 出站流自定义 API 的名称。
- msdyn_hasinbound:位 - 必需。 指示渠道是否支持入站消息的布尔值。
- msdyn_hasdeliveryreceipt:位 - 必需。 指示渠道是否支持送达回执的布尔值。
- msdyn_supportsaccount:位 - 必需。 指示渠道是否支持客户级别配置的布尔值。 对于短信,它必须是 true;否则为 false。
- msdyn_channeldefinitionexternalentity:字符串 - 必需。 CDS 实体的名称,表示渠道实例的扩展配置。
- msdyn_channeldefinitionexternalformid:GUID - 必需。 要呈现以显示扩展渠道实例表配置的窗体的 ID。
- msdyn_channeldefinitionaccountexternalentity:字符串 - 可选。 CDS 实体的名称,表示渠道实例帐户的扩展配置。
- msdyn_channeldefinitionaccountexternalformid:字符串 - 可选。 要呈现以显示扩展渠道实例帐户表配置的窗体的 ID。
- msdyn_messageformid:GUID - 可选。 定义表示渠道的消息编辑器的窗体。
渠道在 customizations.xml 中被定义为解决方案组件。 将每个 msdyn_channeldefinition 放在 ImportExportXml>msdyn_channeldefinitions 元素下面。 每个消息部分元素 msdyn_channeldefinition
必须以 GUID 形式包含自己的唯一 ID 作为 XML 属性 msdyn_channeldefinitionid。 在导入解决方案时,将在 msdyn_channeldefinition 表中创建一个新行。
在以下示例中,请注意:
- msdyn_channeldefinitionexternalentity 和 msdyn_channeldefinitionexternalformid 包含您在定义渠道实例时创建的实体的名称和窗体 ID。
- msdyn_channeldefinitionaccountexternalentity 和 msdyn_channeldefinitionaccountexternalformid 包含您在定义渠道实例帐户时创建的实体的名称和窗体 ID。
- msdyn_messageformid 包含您在定义自定义消息编辑器时创建的窗体 ID。
- msdyn_outboundendpointurltemplate 包含您在定义自定义 API 时创建的自定义 API。
包含渠道定义的 customizations.xml 示例:
<ImportExportXml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<msdyn_channeldefinitions>
<msdyn_channeldefinition msdyn_channeldefinitionid="af0c2a3c-85a5-43b3-84be-2a4a171249f3">
<msdyn_channeldefinitionaccountexternalentity>cr65f_samplechannelinstanceaccount</msdyn_channeldefinitionaccountexternalentity>
<msdyn_channeldefinitionaccountexternalformid>3071133f-1208-4dc1-8eba-4d4724961029</msdyn_channeldefinitionaccountexternalformid>
<msdyn_channeldefinitionexternalentity>cr65f_samplechannelinstance</msdyn_channeldefinitionexternalentity>
<msdyn_channeldefinitionexternalformid>7d2b885a-80eb-479d-b0c3-600bc41e9789</msdyn_channeldefinitionexternalformid>
<msdyn_channeltype>Custom</msdyn_channeltype>
<msdyn_description>Metadata definition for sample custom channel</msdyn_description>
<msdyn_displayname>Sample custom channel</msdyn_displayname>
<msdyn_hasdeliveryreceipt>0</msdyn_hasdeliveryreceipt>
<msdyn_hasinbound>0</msdyn_hasinbound>
<msdyn_messageformid>69723cfe-3835-4126-ab9a-a82a5b88c21d</msdyn_messageformid>
<msdyn_outboundendpointurltemplate>/cr65f_OutboundCustomApi</msdyn_outboundendpointurltemplate>
<msdyn_specialconsentrequired>0</msdyn_specialconsentrequired>
<msdyn_supportsaccount>0</msdyn_supportsaccount>
<msdyn_supportsattachment>0</msdyn_supportsattachment>
<msdyn_supportsbinary>0</msdyn_supportsbinary>
<statecode>0</statecode>
<statuscode>1</statuscode>
</msdyn_channeldefinition>
</msdyn_channeldefinitions>
</ImportExportXml>
示例解决方案
以下示例包括 Dataverse 和插件项目的未打包解决方案。 要打包和导入这些解决方案,首先构建插件项目。 项目将程序集复制到解决方案项目中。 然后,使用 Solution Packager 工具打包解决方案。
如何生成插件项目并打包解决方案
使用 MSBuild 或 Visual Studio 生成插件项目。
生成项目时将在 Dataverse 解决方案文件夹内的 PluginAssemblies 文件夹中创建一个 DLL。
使用解决方案包生成工具和以下任何一项打包非托管文件夹:
pac solution pack --zipfile C:\tmp\SampleCustomChannelSolution.zip -f src\Solutions\Samples\SampleCustomChannel\SampleCustomChannel.Solution\unmanaged --packagetype Both