Início Rápido de IA
Esse guia guia leva você de uma pasta vazia para um portal em execução onde os clientes fazem login e trabalham com seus próprios casos de suporte — perguntando a um agente de codificação de IA em vez de escrever manualmente. Cada etapa te dá um prompt para colar, o que o agente fará com ele e o que verificar antes de seguir em frente. O exemplo usa a tabela de casos (incident) que vem com o Atendimento ao Cliente do Dynamics 365; com uma tabela própria, todo prompt funciona da mesma forma.
Antes de começar
- O SDK .NET 10, e Node.js se você escolher o template React.
- Um ambiente Dataverse no qual você é um Administrador de Sistemas. Use um ambiente de desenvolvimento ou sandbox para este guia.
- Permissão para criar registros de aplicativos no inquilino Entra daquele ambiente.
- Um endereço para o e-mail do portal — confirmações de registro e redefinição de senha — com uma caixa de correio compartilhada no Exchange Online, que não precisa de licença. Aprovar o endereço exige um Administrador Global do Office 365 ou Administrador do Exchange.
- Um agente de codificação de IA que suporta MCP. Os comandos abaixo são para Claude Code; a página do MCP Server tem a configuração para Visual Studio, VS Code e Cursor.
Como isso funciona
Duas coisas permitem que um agente acerte isso em vez de ser apenas plausível: o servidor Power Portals Pro MCP, que lê seu ambiente Dataverse real e faz as mudanças de configuração que um portal precisa, e as instruções que cada projeto gerado envia para os agentes.
- Toda alteração é solicitada primeiro. Antes de um registro de app, o usuário do aplicativo ou um papel de segurança ser criado, privilégios serem concedidos ou uma solução ser instalada, o agente mostra o que está prestes a acontecer — a ação, o alvo, o custo, o efeito e como desfazê-lo — e você então aprova ou recusa em um prompt de uma linha. Leia os detalhes: eles são sua etapa de revisão.
- O projeto carrega o know-how. Um projeto gerado inclui uma
AGENTS.mde três habilidades —set-up-portal,secure-a-tableeadd-table-pages— que indicam ao agente quais perguntas fazer e em qual ordem. Você não precisa nomeá-las; os prompts abaixo são suficientes para o agente escolher a certa. - Os prompts são um ponto de partida. Coloque-os com suas próprias palavras, se quiser. O que importa é o que eles dizem: para quem é o portal, quais dados essas pessoas devem ver e o que podem fazer com eles.
1. Instalar o servidor MCP
Instale-a uma vez por máquina, no escopo do usuário, para que esteja disponível em todas as pastas — incluindo a que você está prestes a criar o projeto:
claude mcp add --scope user powerportalspro -- dnx PowerPortalsPro.Mcp --yes
dnxvem com o SDK .NET 10. Reinicie seu agente se ele já estava rodando, depois verifique se o servidor está lá perguntando algo que só ele possa responder, como "usar get_component_api para listar os parâmetros do MainGrid".
2. Crie uma pasta e faça login
Crie a pasta onde seu portal estará e faça login por dentro dela — uma vez no seu ambiente Dataverse e outra vez no Azure, que é por onde os registros do app no passo 4 são feitos:
mkdir C:\Code\Contoso.Portal
cd C:\Code\Contoso.Portal
dnx PowerPortalsPro.Mcp login --environment https://yourorg.crm.dynamics.com
dnx PowerPortalsPro.Mcp azure login
Ambos os logins pertencem a essa pasta, não à máquina. Eles escrevem .ppp/mcp.json aqui, nomeando o ambiente e o tenant, e mantêm seus tokens no seu perfil de usuário, para que um projeto em outra pasta possa apontar para outro cliente ao mesmo tempo. Ambos usam código de dispositivo, então você pode finalizá-los no seu celular. Se sua conta receber várias assinaturas do Azure, você não precisa escolher uma ainda — isso só importa depois que você for implantado. Depois, inicie seu agente nessa pasta.
3. Criar o projeto
Diga ao agente o que você está construindo — qual stack, React ou Blazor, e quem vai fazer login:
Crie um novo portal Power Portals Pro nesta pasta chamada Contoso.Portal, usando o modelo React. É para nossos clientes, que vão se registrar e fazer login com suas próprias contas.
O agente instala os templates do projeto se eles estiverem faltando, pergunta sobre algo que não consegue identificar do seu pedido e executa dotnet new. Cada cliente se torna um contato no Dataverse, e o que eles podem ver é decidido pelos registros de segurança nos arquivos do projeto Program.cs. Esse é o modelo padrão de segurança do template, e o que o restante deste walkthrough usa. Qualquer stack funciona; todos os prompts posteriores são iguais.
Nota
Reinicie seu agente na mesma pasta assim que o projeto existir. O projeto traz seu próprio
.mcp.json, que fixa o servidor MCP na versão que corresponde aos seus pacotes, junto com suas habilidades eAGENTS.md— e a maioria dos agentes só lê essas coisas quando começa. Aprove o servidor MCP do projeto se seu agente pedir.
4. Conecte-o ao Dataverse
Um novo projeto só começará quando conseguir chegar ao Dataverse. Peça ao agente para configurar isso:
Configure esse portal contra meu ambiente Dataverse para que ele rode localmente. Não dê ao usuário da aplicação Administrador do Sistema: use o papel Power Portals Pro, além de um papel nosso para nossas tabelas. Envie o e-mail do portal de noreply@contoso.com.
O agente acompanha a habilidade do set-up-portal projeto, começando por check_setup ver o que está faltando. Espere aprovar cada uma delas:
- A solução gerenciada — as tabelas Power Portals Pro, a verificação de licença e o papel de segurança de usuário do Power Portals Pro Application .
- Um registro no app Entra que o portal conecta ao Dataverse como ele. O segredo do cliente vai direto para os segredos do usuário do projeto, nunca para a conversa.
- O usuário da aplicação Dataverse para esse registro, com o papel de Usuário da Aplicação Power Portals Pro e o perfil de segurança da coluna que o framework precisa, além de um papel de segurança vazio seu. O papel do Power Portals Pro cobre apenas as tabelas próprias do framework; suas tabelas vão para o seu papel, no passo 6.
- Um segundo registro de aplicativo para "Entrar com a Microsoft" — somente se você quiser esse botão. Clientes com contas próprias não precisam disso.
- Uma fila de e-mail de onde o registro e a redefinição de senha são enviados. O agente aprova seu endereço e executa o Test & Enable em sua caixa de correio. Duas coisas podem ficar a seu critério: o endereço precisa de uma caixa de correio no Exchange Online — uma caixa compartilhada, que não precisa de licença — e aprovar precisa de um Administrador Global do Office 365 ou Administrador do Exchange. Se algum estiver faltando, o agente diz qual; corrija e peça ao agente para executar a etapa novamente.
As configurações de conexão aparecem nos segredos de usuário do projeto à medida que cada etapa é concluída. O agente termina executando check_setup novamente; uma vez limpo, execute o projeto — F5, ou dotnet run no projeto servidor — e você verá a página inicial e as páginas de exemplo do template.
5. Decidir o que os clientes devem ver
Descreva o resultado que você deseja em termos comerciais e deixe o agente encontrar a tabela. Perguntar antes de qualquer coisa ser escrita vale a pena: o agente lê seu ambiente, então ele sugere o que realmente está lá, incluindo suas próprias tabelas e colunas personalizadas.
Clientes que fazem login devem ver os casos de suporte que abriram, abrir um para ver os detalhes e registrar um novo caso. Quais tabelas e colunas devemos usar? Não mude nada ainda.
Espere que ele consulte a tabela com list_tables e describe_table, leia suas visualizações com list_views, e volte com a tabela de casos (incident), a busca que vincula um caso ao cliente (customerid), e as colunas para mostrar e editar. Ajuste essa lista agora: ela decide o que o portal publica.
6. Prenda a mesa
Um portal não mostra nada que não tenha sido instruído a mostrar: até que uma tabela seja registrada, suas páginas retornam 403 ou uma grade vazia. Peça ao agente para abrir a tabela — apenas na medida em que você pretende:
Proteja a tabela de casos: clientes logados podem ler, criar e editar apenas seus próprios casos, com as colunas que concordamos. Eles escolhem a prioridade ao registrar um caso, mas não podem alterá-la depois. Dê ao nosso próprio papel de segurança os privilégios que o usuário da aplicação precisa nos casos.
O agente trabalha com a habilidade do secure-a-table projeto, confirmando para quem é o acesso, quais linhas, quais operações e quais colunas. Não pule nenhuma delas: cada resposta altera o que é publicado.
Depois, ele escreve o registro no projeto Program.csdo servidor . Para este exemplo, espere algo como:
builder.Services.AddTableAccess("incident", t => t
.ForSignedInUsers()
.RowsOwnedByContact("customerid")
.Allow(TableSecurityPermission.Read | TableSecurityPermission.Create | TableSecurityPermission.Write)
.Reading("title", "ticketnumber", "prioritycode", "statuscode", "createdon", "description")
.Writing("title", "description")
.WritingOnCreate("prioritycode"));
RowsOwnedByContact("customerid") Limita cada consulta aos próprios casos do contato logado, e o torna o cliente de um caso que ele cria. Colunas são opt-in: tudo que não for nomeado Reading é retido, e apenas as colunas Writing podem ser alteradas. WritingOnCreate cobre a prioridade — definida quando o caso é registrado, somente leitura a partir de então. A segurança cobre todas as opções.
O próprio papel do usuário da aplicação
O registro decide o que cada cliente pode fazer, mas o portal ainda se comunica com o Dataverse como seu usuário da aplicação, e esse usuário precisa de privilégios na própria mesa. Eles assumem o papel de segurança do seu próprio passo a partir do passo 4, nunca no papel Power Portals Pro. O agente:
- Encontra seu papel no usuário da aplicação com
get_application_user— e se o passo 4 não criou um, cria comcreate_security_rolee atribui comassign_application_user_role. - Concede o que o registro precisa com
add_table_privileges_to_role: Ler, Criar, Escrever e Anexar emincident, e Anexar a emcontact, porque cada novo caso está vinculado a um contato. Então executacheck_setup, que compara as tabelas que suas páginas usam com as tabelas que seu código registra.
Por que um papel só seu?
O papel Power Portals Pro vem em uma solução gerenciada. O Dataverse permitiria adicionar privilégios a ele, mas a próxima atualização dessa solução pode devolvê-lo ao jeito que foi lançado, levando suas concessões consigo — então o servidor MCP se recusa a adicionar privilégios a qualquer função gerenciada. Um papel próprio também mostra a qualquer pessoa que revise o ambiente depois exatamente o que o portal pode alcançar.
7. Adicionar as páginas
Com a tabela segura, peça as duas páginas de uma vez — a lista no menu e a página em que um caso abre:
Adicione uma página de Casos ao menu principal com uma grade dos casos do cliente logado, e a página em que o caso se abre: título, número do caso, prioridade e status em uma seção, a descrição em outra. Os clientes podem mudar o título e a descrição, definir a prioridade apenas ao registrar um novo caso, e nada mais.
O agente segue a habilidade do add-table-pages projeto. Ele adiciona as rotas, uma página de lista com , MainGrida entrada do menu e uma RecordContext página que também abre vazia para registrar um novo caso. Ele lê IDs de visualização real com list_views , em vez de escrever, marcadores de lugar, e mantém cada coluna dentro do que o registro permite que os clientes leiam — as visualizações padrão do Dynamics incluem colunas apenas para agente, então espere que ofereça visualizações próprias. Se você pedir uma coluna que o registro deixa de fora, ele deve parar e perguntar em vez de ampliar o acesso silenciosamente. Registros relacionados podem ir na página do caso como subgrades; nomeie-os, e ele também protegerá essa tabela.
8. Experimente como dois clientes
O agente não pode fazer login como cliente, então essa parte é sua. Também é o teste que mais importa: o objetivo do registro é aquilo que um cliente não consegue ver.
- Execute o portal e registre um cliente. O e-mail de confirmação chega assim que a caixa de correio da fila de e-mails passa no Teste & Habilitar na etapa 4.
- Abra Casos, registre um novo caso e depois abra novamente pela grade. Mude o título e salve.
- Saia da sessão, registre um segundo cliente e abra os Casos. A grade deve estar vazia: o caso do primeiro cliente é só dele. Colar o endereço desse caso nesta sessão também não deve mostrar isso.
Se algum cliente vir algo que não deveria, não ajuste à mão. Diga ao agente o que viu e o que esperava, e deixe a situação funcionar secure-a-table novamente.
Se algo não parecer certo
- A grade está vazia, ou a página retorna 403. Peça ao agente para executar
check_setup: uma tabela que suas páginas usam sem registro está listada lá. Caso contrário, o cliente pode simplesmente não ter casos ainda. - Uma coluna está sempre em branco. Ela não está na lista do
Readingregistro. Colunas são retidas a menos que sejam nomeadas, de propósito. - Cada solicitação de dados retorna 402. A verificação da licença falhou — geralmente porque a solução gerenciada ainda não está instalada.
check_setupdiz qual é. - O portal não inicia, ou mostra "Algum conteúdo está indisponível". Ele não pode fazer login no Dataverse. A linha de log que começa
Could not connect to Dataverseindica a configuração a corrigir echeck_setuptambém a reporta.
Para onde ir a seguir
- Adicione mais tabelas da mesma forma: passo 5 para escolher, passo 6 para fixar, passo 7 para as páginas.
- Dê a alguns clientes mais acesso do que a outros com funções no portal — peça ao agente uma função, como Gerente de Casos que veja todos os casos da empresa do cliente. A segurança explica como os papéis aumentam os registros em todo o portal.
- Implante-o. "Implantar este portal no Azure" inicia a implantação do Azure, com seu próprio login e um preço para cada recurso antes de ser criado.
- Prefira os papéis web e permissões de tabela do Power Pages? Crie o projeto com
--EnableEnhancedAuthorization true. O acesso então vem de papéis de segurança do Dataverse em vez deProgram.cs— veja Segurança do Dataverse.
