Definir o canal personalizado
Canais aplicáveis: SMS, personalizado
Agora que você definiu as partes do seu canal personalizado, é hora de definir o canal. Esta etapa é onde você conecta todas as partes anteriores em um arquivo de metadados, que é um registro da entidade Definição de Canal (msdyn_channeldefinition
).
Importante
Se você estiver configurando registros de metadados diretamente no arquivo de personalização, verifique se os GUIDs estão em letras minúsculas.
Contrato de definição de canal
Nome lógico da entidade: msdyn_channeldefinition
Nome do conjunto de entidades: msdyn_channeldefinitions
Nome do atributo da ID principal: msdyn_channeldefinitionid
- msdyn_displayname: cadeia de caracteres – opcional. O nome de exibição do canal.
- msdyn_description: cadeia de caracteres – opcional. Descrição do canal.
- msdyn_channeltype: cadeia de caracteres – obrigatório. Valores com suporte: personalizado, SMS
- msdyn_outboundendpointurltemplate: cadeia de caracteres – obrigatório. Nome da API personalizada para o fluxo de saída.
- msdyn_hasinbound: bit – obrigatório. Valor booliano que indica se o canal oferece suporte a mensagens de entrada.
- msdyn_hasdeliveryreceipt: bit – obrigatório. Valor booliano que indica se o canal oferece suporte ao recebimento da entrega.
- msdyn_supportsaccount: bit – obrigatório. Valor booliano que indica se o canal oferece suporte à configuração em nível de conta. Para SMS, ele deve ser verdadeiro; caso contrário, falso.
- msdyn_channeldefinitionexternalentity: cadeia de caracteres – obrigatório. Nome da entidade do CDS, representando uma configuração estendida da instância do canal.
- msdyn_channeldefinitionexternalformid: GUID – obrigatório. ID do formulário a ser renderizado para exibir a configuração da tabela de instâncias do canal estendido.
- msdyn_channeldefinitionaccountexternalentity: cadeia de caracteres – opcional. Nome da entidade do CDS, representando uma configuração estendida da instância da conta.
- msdyn_channeldefinitionaccountexternalformid: cadeia de caracteres – opcional. ID do formulário a ser renderizado para exibir a configuração da tabela de contas de instâncias do canal estendido.
- msdyn_messageformid: GUID – opcional. Define um formulário que representa o editor de mensagens para o canal.
Os canais são definidos no customizations.xml como componentes da solução. Coloque cada msdyn_channeldefinition em elementos ImportExportXml>msdyn_channeldefinitions. Cada elemento da parte da mensagem msdyn_channeldefinition
deve incluir sua própria ID exclusiva no formulário de um GUID como o atributo XML msdyn_channeldefinitionid. Quando sua solução é importada, uma nova linha é criada na tabela msdyn_channeldefinition.
No seguinte exemplo, note que:
- A msdyn_channeldefinitionexternalentity e a msdyn_channeldefinitionexternalformid contêm o nome e a ID do formulário da entidade que você criou quando definiu a instância de canal.
- A msdyn_channeldefinitionaccountexternalentity e a msdyn_channeldefinitionaccountexternalformid contêm o nome e a ID do formulário da entidade que você criou quando definiu a conta da instância do canal.
- A msdyn_messageformid contém a ID do formulário que você criou se definiu um editor de mensagens personalizado.
- A msdyn_outboundendpointurltemplate contém a API personalizada que você criou quando definiu APIs personalizadas.
Exemplo de customizations.xml incluindo definição de canal:
<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>
Soluções de exemplo
O exemplos a seguir incluem soluções descompactadas para o Dataverse e projetos de plug-ins. Para empacotar e importar essas soluções, primeiro crie o projeto de plug-in. O projeto copia o assembly para o projeto da solução. Em seguida, compacte a solução usando a Ferramenta Pacote de Soluções.
Como criar o projeto de plug-in e empacotar a solução
Crie o projeto de plug-ins com MSBuild ou o Visual Studio.
A criação do projeto cria um DLL na pasta PluginAssemblies dentro da pasta da solução Dataverse.
Empacote a pasta não gerenciada com o Pacote de Soluções usando:
- pac CLI (preferencial)
- Pacote de Soluções
pac solution pack --zipfile C:\tmp\SampleCustomChannelSolution.zip -f src\Solutions\Samples\SampleCustomChannel\SampleCustomChannel.Solution\unmanaged --packagetype Both