Use ações API da Web

 

Publicado: janeiro de 2017

Aplicável a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Ação e as funções representam operações reutilizáveis que você pode realizar usando a API da Web. Use uma solicitação POST com ações listadas em Web API Action Reference para realizar operações que apresentam efeitos colaterais. Você também pode definir as ações personalizadas e elas estarão disponíveis para você usar.

Neste tópico

Ações desvinculadas

Ações vinculadas

Usar uma ação personalizada

Especifique o tipo de parâmetro da entidade

Ações desvinculadas

Ações são definidas em d80cfb87-d4f1-4c75-bcc8-4f54d1351e26#bkmk_csdl. Como exemplo, o que vem a seguir é a definição de WinOpportunity Action representado no CSDL.

<Action Name="WinOpportunity">
  <Parameter Name="OpportunityClose" Type="mscrm.opportunityclose" Nullable="false" />
  <Parameter Name="Status" Type="Edm.Int32" Nullable="false" />
</Action>

A ação WinOpportunity corresponde ao WinOpportunityRequest usando o serviço da organização. Use esta ação para definir o estado de uma oportunidade para Ganha e crie uma opportunityclose EntityType para registrar um evento. Esta ação não inclui um valor de retorno. Se tiver êxito, a operação é concluída.

O parâmetro OpportunityClose exige uma representação de JSON da entidade opportunityclose para criar na operação. Esta entidade deve estar relacionada à oportunidade que emite propriedade de navegação de valor único de opportunityid. Em JSON está definido usando a anotação @odata.bind como explicado em Associar entidades ao criar.

O parâmetro Status deve ser definido para o estado de opportunity quando for fechado. Você pode encontrar o valor padrão disso na propriedade opportunity EntityTypestatuscode. A opção Ganha tem um valor de três. Você pode se perguntar: por que é necessário definir esse valor quando há somente uma opção de razão do status que representa Ganha? A razão é porque você pode definir opções de estado personalizado para representar um ganho, como Ganho Grande ou Ganho Pequeno, para que o valor possa potencialmente ser diferente de 3 nesta situação.

O exemplo a seguir é a solicitação HTTP e resposta para chamar a ação WinOpportunity de uma oportunidade com um valor opportunityid de b3828ac8-917a-e511-80d2-00155d2a68d2.

  • Solicitação

    POST cc_WebAPI_ServiceURI/WinOpportunity HTTP/1.1
    Accept: application/json
    Content-Type: application/json; charset=utf-8
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
    {
     "Status": 3,
     "OpportunityClose": {
      "subject": "Won Opportunity",
      "opportunityid@odata.bind": "cc_WebAPI_ServiceURI/opportunities(b3828ac8-917a-e511-80d2-00155d2a68d2)"
     }
    }
    
  • Resposta

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    

Ações vinculadas

No d80cfb87-d4f1-4c75-bcc8-4f54d1351e26#bkmk_csdl, quando um elemento Action representa uma ação vinculada, tem um atributo IsBound com o valor true. O primeiro elemento Parâmetro definido dentro da ação representa a entidade à qual a operação está associada. Quando o atributo Type do parâmetro é uma coleção, a operação está associada a uma coleção de entidades. Como um exemplo, o que vem a seguir é a definição de AddToQueue Action representado no CSDL:

 <ComplexType Name="AddToQueueResponse">
 <Property Name="QueueItemId" Type="Edm.Guid" Nullable="false" />
 </ComplexType>
 <Action Name="AddToQueue" IsBound="true">
  <Parameter Name="entity" Type="mscrm.queue" Nullable="false" />
  <Parameter Name="Target" Type="mscrm.crmbaseentity" Nullable="false" />
  <Parameter Name="SourceQueue" Type="mscrm.queue" />
  <Parameter Name="QueueItemProperties" Type="mscrm.queueitem" />
  <ReturnType Type="mscrm.AddToQueueResponse" Nullable="false" />
</Action>

Essa associação é equivalente ao AddToQueueRequest usado pelo serviço da organização. Na API da Web esta ação está associada ao queue EntityType que representa o AddToQueueRequest. Propriedade DestinationQueueId. Esta ação aceita diversos parâmetros adicionais e devolve um AddToQueueResponse ComplexType correspondente ao AddToQueueResponse devolvido pelo serviço da organização. Quando uma ação retorna um tipo complexo, a definição do tipo complexo aparecerá diretamente acima da ação no CSDL.

Uma ação vinculada deve ser invocada usando um URI para definir o primeiro valor de parâmetro. Não é possível defini-la como um valor de parâmetro nomeado.

Quando invocar uma função vinculada, você deve incluir o nome completo da função incluindo o namespace Microsoft.Dynamics.CRM. Se você não incluir o nome completo, você receberá o seguinte erro: Status Code:400 Request message has unresolved parameters.

O exemplo a seguir mostra o uso de AddToQueue Action para adicionar uma carta à fila. Como o tipo do tipo de parâmetro Target não é específico (mscrm.crmbaseentity), você deve declarar explicitamente o tipo de objeto usando o valor da propriedade @odata.type do nome completo da entidade, incluindo o namespace Microsoft.Dynamics.CRM. Neste caso, Microsoft.Dynamics.CRM.letter.Para obter mais informações:Especifique o tipo de parâmetro da entidade

  • Solicitação

    POST cc_WebAPI_ServiceURI/queues(56ae8258-4878-e511-80d4-00155d2a68d1)/Microsoft.Dynamics.CRM.AddToQueue HTTP/1.1
    Accept: application/json
    Content-Type: application/json; charset=utf-8
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
    {
     "Target": {
      "activityid": "59ae8258-4878-e511-80d4-00155d2a68d1",
      "@odata.type": "Microsoft.Dynamics.CRM.letter"
     }
    }
    
  • Resposta

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    
    {
     "@odata.context": "cc_WebAPI_ServiceURI/$metadata#Microsoft.Dynamics.CRM.AddToQueueResponse",
     "QueueItemId": "5aae8258-4878-e511-80d4-00155d2a68d1"
    }
    

Usar uma ação personalizada

Se você definir as ações personalizadas de sua organização ou solução, elas também serão incluídas no d80cfb87-d4f1-4c75-bcc8-4f54d1351e26#bkmk_csdl. Para obter informações sobre como criar ações usando as ferramentas de personalização no aplicativo, consulte o tópico TechNetAções. Para obter informações sobre como criar e usar suas próprias ações personalizadas, consulte Criar suas próprias ações.

Independentemente se as operações incluídas em sua ação personalizada apresentam efeitos colaterais, elas podem modificar potencialmente e, portanto são consideradas ações em vez de funções. Não existe uma maneira de criar uma função personalizada.

Exemplo de ação personalizada: Adicionar uma anotação a um contato

Digamos que você deseja criar uma ação personalizada que irá adicionar uma nova anotação a um contato específico. Você pode criar uma ação vinculada personalizada para a entidade do contato com as propriedades a seguir.

Rótulo da UI

Valor

Nome do Processo

AddNoteToContact

Nome Exclusivo

new_AddNoteToContact

Entidade

Contato

Categoria

Ação

Argumentos do Processo

Nome

Tipo

Necessário

Direção

NoteTitle

Cadeia de caracteres

Necessário

Entrada

NoteText

Cadeia de caracteres

Necessário

Entrada

NoteReference

EntityReference

Necessário

Saída

Etapas

Nome

Tipo de etapa

Descrição

Criar a anotação

Criar Registro

Título = {NoteTitle(Arguments)}

Corpo da anotação = {NoteText(Argumentos)}

Referente a = Contato{Contato}}

Retornar uma referência à anotação

Atribuir Valor

Valor de NoteReference = {Anotação(Criar a anotação (Anotação))}

Depois que você publicar e ativar a ação personalizada, quando você baixar o CSDL, você encontrará esta nova ação definida.

<Action Name="new_AddNoteToContact" IsBound="true">
  <Parameter Name="entity" Type="mscrm.contact" Nullable="false" />
  <Parameter Name="NoteTitle" Type="Edm.String" Nullable="false" Unicode="false" />
  <Parameter Name="NoteText" Type="Edm.String" Nullable="false" Unicode="false" />
  <ReturnType Type="mscrm.annotation" Nullable="false" />
</Action>

As solicitações a seguir de HTTP e resposta mostram como chamar uma ação personalizada e se a resposta que ela devolve é bem-sucedida.

  • Solicitação

    POST cc_WebAPI_ServiceURI/contacts(94d8c461-a27a-e511-80d2-00155d2a68d2)/Microsoft.Dynamics.CRM.new_AddNoteToContact HTTP/1.1
    Accept: application/json
    Content-Type: application/json; charset=utf-8
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
    {
     "NoteTitle": "New Note Title",
     "NoteText": "This is the text of the note"
    }
    
  • Resposta

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    
    {
     "@odata.context": "cc_WebAPI_ServiceURI/$metadata#annotations/$entity",
     "annotationid": "9ad8c461-a27a-e511-80d2-00155d2a68d2"
    }
    

Especifique o tipo de parâmetro da entidade

Quando uma ação exigir uma entidade como um parâmetro e o tipo de entidade for ambíguo, use a propriedade @odata.type para especificar o tipo de entidade. O valor desta propriedade é o nome totalmente qualificado da entidade que segue este padrão:
Microsoft.Dynamics.CRM.+<nome lógico da entidade>.

Conforme mostrado na seção Ações vinculadas acima, o parâmetro do Target para a AddToQueue Action é uma atividade. Mas como todas as atividades são herdadas de activitypointer EntityType, é necessário incluir a seguinte propriedade na entidade JSON para especificar que o tipo de entidade é uma letra: "@odata.type": "Microsoft.Dynamics.CRM.letter".

Os dois outros exemplos são AddMembersTeam Action e RemoveMembersTeam Action porque o parâmetro Members é um conjunto de systemuser EntityType que herda sua chave primária de ownerid do principal EntityType. Se você transmite o seguinte JSON para representar um usuário único do sistema no conjunto, é claro que a entidade é um usuário do sistema e não um team EntityType, que também é herdado do tipo de entidade principal.

    {
     "Members": [{
      "@odata.type": "Microsoft.Dynamics.CRM.systemuser",
      "ownerid": "5dbf5efc-4507-e611-80de-5065f38a7b01"
     }] 
    }

Se você não especificar o tipo de entidade nesta situação, você poderá receber a seguinte mensagem de erro: "EdmEntityObject passed should have the key property value set.".

Confira Também

Exemplo de funções API da Web e ações (C#)
Funções da API Web e Amostra de ações (Javascript do cliente)
Executar operações usando A API
Compor solicitações de HTTP e lidar com erros
Consultar dados usando a API da Web
Criar uma entidade usando a API da Web
Recuperar uma entidade usando a API Web
Atualizar e excluir entidades que usam a API Web
Associar e desassociar entidades usando a API Web
Usar funções da API Web
Executar operações em lote usando a API da WEB
Representar outro usuário usando API da Web
Executar operações condicionais usando A API

Microsoft Dynamics 365

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais