Démarrage rapide IA

Cette solution vous emmène d’un dossier vide à un portail en cours où les clients se connectent et travaillent avec leurs propres dossiers de support — en demandant à un agent de codage IA plutôt qu’en écrivant à la main. Chaque étape vous propose une invite à coller, ce que l’agent en fera et quoi vérifier avant de passer à la suite. L’exemple utilise la table des cas (incident) fournie avec le service client de Dynamics 365 ; avec votre propre tableau, chaque invite fonctionne de la même manière.

Avant que tu commences

  • Le SDK .NET 10, et Node.js si vous choisissez le modèle React.
  • Un environnement Dataverse dans lequel vous êtes administrateur système. Utilisez un environnement de développement ou bac à sable pour cette solution de passage.
  • Permission de créer des inscriptions d’applications dans le locataire Entra de cet environnement.
  • Une adresse pour l’adresse e-mail du portail — confirmations d’inscription et réinitialisations de mot de passe — avec une boîte aux lettres partagée dans Exchange Online, qui ne nécessite pas de licence. L’approbation de l’adresse nécessite un Office 365 Global Administrator ou Exchange Administrator.
  • Un agent de codage IA qui prend en charge MCP. Les commandes ci-dessous concernent Claude Code ; la page MCP Server contient la configuration pour Visual Studio, VS Code et Cursor.

Comment cela fonctionne

Deux choses permettent à un agent de bien faire cela plutôt que de simplement être plausible : le serveur Power Portals Pro MCP, qui lit votre environnement Dataverse réel et effectue les modifications de configuration dont un portail a besoin, et les instructions que chaque projet généré envoie aux agents.

1. Installer le serveur MCP

Installez-le une fois par machine, à portée utilisateur, afin qu’il soit disponible dans chaque dossier — y compris celui vide dans lequel vous allez créer le projet :

dnxlivré avec le SDK .NET 10. Redémarrez votre agent s’il était déjà en marche, puis vérifiez que le serveur est là en posant une question à laquelle il seul peut répondre, comme « utiliser get_component_api pour lister les paramètres de MainGrid ».

2. Créer un dossier et se connecter

Créez le dossier dans lequel votre portail sera installé, et connectez-vous depuis l’intérieur — une fois vers votre environnement Dataverse, et une fois vers Azure, qui est par là où sont créées les inscriptions aux applications à l’étape 4 :

Les deux connexions appartiennent à ce dossier, pas à la machine. Ils écrivent .ppp/mcp.json ici, nomment l’environnement et le locataire, et gardent vos tokens dans votre profil utilisateur, afin qu’un projet dans un autre dossier puisse pointer vers un autre client en même temps. Les deux utilisent un code de dispositif, donc vous pouvez les terminer sur votre téléphone. Si votre compte voit plusieurs abonnements Azure, vous n’avez pas besoin d’en choisir un encore — cela n’a d’importance qu’une fois déployé. Puis lancez votre agent dans ce dossier.

3. Créer le projet

Dites à l’agent ce que vous construisez — quelle stack, React ou Blazor, et qui se connectera :

L’agent installe les modèles de projet s’ils manquent, pose des questions sur tout ce qu’il ne peut pas détecter de votre demande, et exécute dotnet new. Chaque client devient un contact dans Dataverse, et ce qu’il peut voir est décidé par les enregistrements de sécurité dans le Program.csfichier . C’est le modèle de sécurité par défaut du modèle, et celui utilisé par le reste de cette guide. L’une ou l’autre pile fonctionne ; chaque prompt ultérieur est identique.

Note

Redémarrez votre agent dans le même dossier une fois que le projet existe. Le projet apporte son propre .mcp.json, qui épingle le serveur MCP à la version correspondant à ses paquets, ainsi que ses compétences et AGENTS.md — et la plupart des agents ne lisent ces éléments qu’au début. Approuvez le serveur MCP du projet si votre agent le demande.

4. Connectez-le à Dataverse

Un nouveau projet ne commencera pas tant qu’il n’aura pas atteint Dataverse. Demandez à l’agent de le configurer :

L’agent suit la compétence du set-up-portal projet, en commençant par check_setup voir ce qui manque. Attendez-vous à approuver chacun de ces éléments :

Les paramètres de connexion s’affichent dans les secrets utilisateur du projet à chaque étape terminée. L’agent termine en relançant check_setup ; une fois que c’est propre, lancez le projet — F5, ou dotnet run dans le projet serveur — et vous verrez la page d’accueil et les pages d’échantillons du modèle.

5. Décider ce que les clients doivent voir

Décrivez le résultat que vous souhaitez en termes professionnels, et laissez l’agent trouver la table. Demander avant que quoi que ce soit soit écrit en vaut la peine : l’agent lit votre environnement, ce qui suggère ce qui est réellement là, avec vos propres tables et colonnes personnalisées incluses.

Attendez-vous à ce qu’il consulte la table avec list_tables et describe_table, lise ses vues avec list_views, et revienne avec la table des cas (incident), la recherche qui relie un dossier à son client (customerid), et les colonnes à afficher et à modifier. Ajustez cette liste maintenant : c’est elle qui décide ce que le portail publie.

6. Sécuriser la table

Un portail ne montre rien qu’on ne lui ait pas demandé de montrer : tant qu’une table n’est pas enregistrée, ses pages reviennent 403 ou une grille vide. Demandez à l’agent d’ouvrir la table — seulement dans la mesure où vous l’avez prévu :

L’agent travaille à travers la compétence du secure-a-table projet, confirmant à qui s’adresse l’accès, quelles lignes, quelles opérations et quelles colonnes. N’en saute aucune : chaque réponse change ce qui est publié.

Ensuite, il écrit l’enregistrement dans le projet Program.csserveur . Pour cet exemple, attendez-vous à quelque chose comme :

RowsOwnedByContact("customerid") Limite chaque requête aux propres cas du contact connecté, et fait de lui le client d’un dossier qu’il crée. Les colonnes sont en option : tout ce qui n’est pas nommé Reading est retenu, et seules les colonnes Writing peuvent être modifiées. WritingOnCreate Couvre la priorité — définie lors de l’enregistrement du dossier, en lecture seule à partir de ce moment. La sécurité couvre toutes les options.

Le rôle propre de l’utilisateur de l’application

L’enregistrement décide de ce que chaque client peut faire, mais le portail communique toujours avec Dataverse en tant qu’utilisateur de l’application, et cet utilisateur a besoin de privilèges sur la table elle-même. Ils vont dans votre propre rôle de sécurité à partir de l’étape 4, jamais dans le rôle Power Portals Pro. L’agent :

  1. Trouve votre rôle sur l’utilisateur de l’application avec get_application_user — et si l’étape 4 n’en a pas créé, il le crée avec create_security_role et l’assigne à assign_application_user_role.
  2. Cela lui accorde ce dont l’enregistrement a besoin avec add_table_privileges_to_role: Lire, Créer, Écrire et Ajouter sur incident, et Ajouter à contactsur , car chaque nouveau cas est lié à un contact. Ensuite, il exécute check_setup, qui compare les tables utilisées par vos pages avec celles que votre code enregistre.

Pourquoi avoir un rôle à part ?

Le rôle Power Portals Pro est livré dans une solution gérée. Dataverse vous permettrait d’y ajouter des privilèges, mais la prochaine mise à niveau de cette solution peut le remettre dans la version originale, emportant vos subventions — donc le serveur MCP refuse d’ajouter des privilèges à un rôle géré. Un rôle à vous montre aussi à quiconque examine l’environnement par la suite ce que le portail peut atteindre.

7. Ajouter les pages

Une fois la table sécurisée, demandez les deux pages en une seule fois — la liste dans le menu, et la page où un dossier s’ouvre :

L’agent suit la compétence du add-table-pages projet. Il ajoute les itinéraires, une page de liste avec une MainGrid, l’entrée du menu et une RecordContext page qui s’ouvre également vide pour enregistrer un nouveau cas. Il lit les identifiants de vues réelles avec list_views plutôt que d’écrire des espaces réservés, et garde chaque colonne dans ce que l’enregistrement permet aux clients de lire — les vues Dynamics d’origine incluent des colonnes uniquement pour l’agent, donc attendez-vous à ce qu’elles offrent leurs propres vues. Si vous demandez une colonne que l’enregistrement laisse de côté, il devrait s’arrêter et demander plutôt que d’élargir discrètement l’accès. Les enregistrements associés peuvent aller sur la page du dossier sous forme de sous-grilles ; nommez-les, et cela sécurisera aussi cette table.

8. Essayez en tant que deux clients

L’agent ne peut pas se connecter en tant que client, donc cette partie vous appartient. C’est aussi le test qui compte le plus : le but de l’inscription, c’est ce qu’un client ne peut pas voir.

  1. Ouvrez le portail et enregistrez un client. L’email de confirmation arrive une fois que la boîte aux lettres de la file d’attente a passé Test & Enable à l’étape 4.
  2. Ouvrez des dossiers, enregistrez un nouveau dossier, puis rouvrez-le depuis la grille. Changez son titre et enregistrez.
  3. Déconnectez-vous, enregistrez un second client et ouvrez les Dossiers. La grille doit être vide : le dossier du premier client lui appartient seul. Coller l’adresse de ce dossier dans cette session ne devrait pas non plus l’afficher.

Si l’un des clients voit quelque chose qu’il ne devrait pas, ne l’ajustez pas à la main. Dites à l’agent ce que vous avez vu et ce que vous attendiez, et laissez la chose fonctionner secure-a-table à nouveau.

Si quelque chose ne va pas

Où aller ensuite