定义自定义渠道

适用的渠道:短信、自定义

现在您已经定义了自定义渠道的各个部分,是时候定义渠道了。 此步骤是在一个元数据文件中连接之前的所有部分,该文件是渠道定义实体 (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_channeldefinitionexternalentitymsdyn_channeldefinitionexternalformid 包含您在定义渠道实例时创建的实体的名称和窗体 ID。
  • msdyn_channeldefinitionaccountexternalentitymsdyn_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 工具打包解决方案。

如何生成插件项目并打包解决方案

  1. 使用 MSBuild 或 Visual Studio 生成插件项目。

    生成项目时将在 Dataverse 解决方案文件夹内的 PluginAssemblies 文件夹中创建一个 DLL。

  2. 使用解决方案包生成工具和以下任何一项打包非托管文件夹:

    pac solution pack --zipfile C:\tmp\SampleCustomChannelSolution.zip -f src\Solutions\Samples\SampleCustomChannel\SampleCustomChannel.Solution\unmanaged --packagetype Both