Olá caros leitores desse blog! Hoje trago para vocês uma dica rápida de como resolver um problema de um erro muito comum em ocorrer quando você está trabalhando com o Copilot Studio.
Você está com seu agente já existente, dentro da solução correta que você utiliza para exportar. Então você faz uma alteração em um tópico existente incluindo um novo fluxo de nuvem. Você publica, exporta a sua solução e importa no ambiente de destino e tudo acontece sem apresentar erro.
Porém você analisa o agente no ambiente de destino e percebe que ele não foi publicado e com isso você tenta publicar e quando percebe se depara com o erro abaixo:
Você verifica primeiramente se o fluxo de nuvem está no ambiente de destino. E sim, ele está! Agora você também verifica que ele está ligado, ou seja, tudo funcionando normalmente. Porém, mesmo assim o agente não consegue publicar a nova versão pois fica emitindo o erro que não encontrou o fluxo de nuvem.
Mas não se preocupe, isso é mais comum do que parece!
Infelizmente o processo de gestão de ALM relacionado aos componentes do Copilot Studio apresenta algumas falhas ainda, atualmente você não consegue adicionar os componentes(botcomponent) separadamente na solução. Quando você adiciona o agente na solução o Dataverse inclui tudo que esta relacionado com o agente a solução naquele momento: botcomponents, cloud flows, connections references e entre outros.
Porém se você atualiza incluindo novos botcomponents ele infelizmente não inclui automaticamente na solução que você está trabalhando e com isso você precisa remover e adicionar novamente o agente para o Dataverse buscar todos componentes relacionados e incluir tudo.
Remover e adicionar o agente é algo simples e fácil né? Correto! Porém se você tem tem componentes que são utilizado nesse agente que não fazem parte dessa solução e sim de outras soluções, ele acaba por trazer tudo e com isso você tem um trabalho de organização da solução removendo componente por componente que não deveriam vir.
Então para resolver isso sem tem que remover e adicionar o agente a todo o momento, podemos fazer algumas coisas que são simples e práticas e que evitam você ficar fazendo a todo momento esse processo de Remover -> Adiciona -> Reorganiza componentes.
Isso vale para todas os botcomponents abaixos:
No nosso caso aqui vamos trabalhar com a tabela botcomponent_workflow que representa o relacionamento do agente com o fluxo de nuvem.
A primeira coisa é pegar o Id do fluxo de nuvem relatado e pesquisa na tabela botcomponent_workflow pelo campo de workflowid. Aqui estou utilizando SQL4CDS para obter as informações.
select * from botcomponent_workflow
where workflowid = '54bdfea6-613a-f111-88b4-7ced8da856ee'Com isso vamos ter o resultado.
Agora você vai pegar o Id que está em botcomponentid e com isso vamos utilizar a action chamada AddSolutionComponent para incluir esse componente dentro da nossa solução.
Aqui eu demonstro como fazer a execução da requisição usando o webapi do Dataverse.
// Parameters
var parameters = {};
parameters.ComponentId = "7581d573-3dd9-4e28-ad77-51830cfde17a"; // Id do botcomponent
parameters.ComponentType = 10164; // Enum do component type workflow
parameters.SolutionUniqueName = "NomeUnico da solução"; // Nome lógico da solução
parameters.AddRequiredComponents = false; // Para não sair adicionando outros componentes adicionais
fetch(Xrm.Utility.getGlobalContext().getClientUrl() + "/api/data/v9.2/AddSolutionComponent", {
method: "POST",
headers: {
"OData-MaxVersion": "4.0",
"OData-Version": "4.0",
"Content-Type": "application/json; charset=utf-8",
"Accept": "application/json"
},
body: JSON.stringify(parameters)
}).then(
function success(response) {
return response.json().then((json) => { if (response.ok) { return [response, json]; } else { throw json.error; } });
}
).then(function (responseObjects) {
var response = responseObjects[0];
var responseBody = responseObjects[1];
var result = responseBody;
console.log(result);
// Return Type: mscrm.AddSolutionComponentResponse
// Output Parameters
var id = result["id"]; // Edm.Guid
}).catch(function (error) {
console.log(error.message);
});Execute você terá o retorno de sucesso recebendo um GUID.
{
"@odata.context": "https://XXXX.crm2.dynamics.com/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.AddSolutionComponentResponse",
"id": "24c6ea34-8f3a-f111-88b4-7ced8da856ee"
}Pronto! Agora você pode exportar e importar novamente a sua solução e você já vai ter o seu agente publicado e funcionando normalmente.
Espero que tenha gostado e até o próximo post!


