AIクイックスタート

このウォークスルーは、空のフォルダから顧客がサインインして自分のサポートケースに取り組むためのポータルへと導きます。手書きではなくAIコーディングエージェントに依頼することでです。各ステップには貼り付けるプロンプト、エージェントが何をするか、次に進む前に何を確認すべきかが示されます。この例はDynamics 365 Customer Serviceに付属している ケース テーブル(incident)を使っています。自分専用のテーブルがあれば、すべてのプロンプトは同じように動作します。

始める前に

  • .NET 10のSDKと、Reactテンプレートを選べばNode.js。
  • あなたがシステム管理者であるDataverse環境。このウォークスルーでは開発環境またはサンドボックス環境を使用してください。
  • その環境のEntraテナントで アプリ登録を作成する 許可。
  • ポータルのメールアドレス(登録確認やパスワードリセット)と、Exchange Online内の共有メールボックス(ライセンス不要)を用意します。アドレスの承認にはOffice 365グローバル管理者またはExchange Administratorが必要です。
  • MCPをサポートするAIコーディングエージェントです。以下のコマンドはClaude Code用です。MCPサーバーのページにはVisual Studio、VS Code、カーソルの設定が記載されています。

仕組み

エージェントがこれを正しくできるのは、単に現実的なだけでなく、2つの要素です。Power Portals Pro MCPサーバーは、実際のDataverse環境を読み取り、ポータルが必要とする設定変更を行います。もうひとつは、生成されたプロジェクトごとにエージェントに提供される指示です。

1. MCPサーバーをインストールする

マシンごとにユーザー スコープで一度ずつインストールし、プロジェクトを作成する予定の空のフォルダも含めてすべてのフォルダで利用可能にします。

dnx .NET 10 SDKに同梱されています。もしエージェントがすでに動いていた場合は再起動し、サーバーがそこにいるかどうか確認してください 。例えば「get_component_apiを使ってMainGridのパラメータをリストアップしてください」といった質問をします。

2. フォルダを作成しサインイン

ポータルが入るフォルダを作成し、その中でサインインします。1回はDataverse環境、もう1回はAzureにサインインします。これはステップ4のアプリ登録が作成される方法です:

両方のサインインはこのフォルダに属しており、マシンには属しません。ここに .ppp/mcp.json 書き込み、環境名とテナント名を付け、トークンはユーザープロファイルに保持するため、別のフォルダのプロジェクトが同時に別の顧客を指し示せるようにします。どちらもデバイスコードを使用しているため、スマホで完了できます。アカウントに複数のAzureサブスクリプションが表示されている場合、まだ一つ選ぶ必要はありません。それはデプロイしてからです。その後、このフォルダでエージェントを起動してください。

3. プロジェクトの作成

エージェントに、どのスタックを作っているか、ReactかBlazorか、そして誰がサインインするかを伝えてください。

エージェントはプロジェクトテンプレートが不足している場合をインストールし、リクエストから分からないことを尋ね、 dotnet newを実行します。各顧客はDataverseの 連絡先 となり、プロジェクト Program.csのセキュリティ登録によって何を見るかが決まります。これがテンプレートのデフォルトのセキュリティモデルであり、このウォークスルーの他の部分でも使われています。どちらの積み重ねでも動作します。その後のすべてのプロンプトは同じです。

注記

プロジェクトが存在したら、同じフォルダ内でエージェントを再起動してください。 プロジェクトは独自の .mcp.jsonを持ち込み、MCPサーバーをパッケージに合致するバージョンにピン留め、スキルや AGENTS.md も含めて、ほとんどのエージェントはそれらを開始時にしか読みません。エージェントが求めたらプロジェクトのMCPサーバーを承認してください。

4. Dataverseに接続する

新しいプロジェクトはDataverseに届くまでは開始されません。エージェントにその設定を依頼してください:

エージェントはプロジェクトの set-up-portal スキルを追い、まず check_setup から何が欠けているかを確認します。以下のいずれかを承認することを期待してください:

各ステップが完了するごとに、接続設定はプロジェクトのユーザーシークレットに表示されます。エージェントは再度 check_setup を実行し、クリーンになったらプロジェクトを実行してください。F5、またはサーバープロジェクトで dotnet run を実行し、テンプレートのホームページとサンプルページが表示されます。

5. 顧客が何を見るべきかを決める

望む結果をビジネス用語で説明し、エージェントにテーブルを見つけてもらいましょう。何かを書く前に尋ねる価値があります。エージェントは環境を読み取り、実際に何があるか、あなたのカスタムテーブルやカラムも含めて示唆してくれます。

list_tablesとdescribe_tableのテーブルを調べ、ビューをlist_viewsで読み、ケーステーブル(incident)、顧客に結びつけるルックアップ(customerid)、表示・編集する列を表示します。今すぐそのリストを調整してください。ポータルが何を公開するかを決定します。

6. テーブルを固定する

ポータルは指示された通り表示していないものを表示しません。テーブルが登録されるまでは、そのページは403または空のグリッドを返します。エージェントにテーブルを開けるよう頼みましょう — あなたが意図する範囲だけ:

エージェントはプロジェクトの secure-a-table スキルを使い、アクセス権が誰のものか、どの行のものか、どの操作か、どの列かを確認します。どれもスキップしないでください。回答ごとに公開される内容が変わります。

その後、サーバープロジェクトの Program.csにレジストレーションを書き込みます。この例では、次のようなものを期待してください:

RowsOwnedByContact("customerid") すべてのクエリをサインインした連絡先自身のケースに限定し、彼らが作成したケースの顧客に設定します。カラムはオプトイン制で、 Reading に名前が出ていないものは保留され、 Writing のカラムのみが変更可能です。 WritingOnCreate 優先度をカバーします — ケースがログされた時点で設定され、その後は読み取り専用にされます。 セキュリティ はすべてのオプションをカバーします。

アプリケーションユーザー自身の役割

登録によって各顧客が何をするかが決まりますが、ポータルは依然としてアプリケーションユーザーとしてDataverseと通信し、そのユーザーはテーブル上で権限を必要とします。彼らはステップ4からあなた自身のセキュリティ役割に入り、Power Portals Proの役割には決して入りません。エージェント:

  1. アプリケーションユーザーで get_application_user であなたのロールを見つけ、ステップ4で作成しなければ create_security_role で作成し、 assign_application_user_roleに割り当てます。
  2. 登録に必要な機能を add_table_privileges_to_roleで付与します: incidentではRead, Create, Write and Append、 contactではAppend To。なぜなら、新しいケースはすべて連絡先にリンクされているからです。その後、 check_setupを実行し、ページが使うテーブルとコードが登録するテーブルを比較します。

なぜ自分自身の役が必要なのですか?

Power Portals Proの役割はマネージドソリューションに付属します。Dataverseは権限を追加できますが、次のアップグレードで元の形態に戻され、助成金も失われてしまうため、MCPサーバーは管理されたロールに権限を追加しなくなります。自分専用の役割は、後で環境をレビューする人にポータルが到達可能な範囲を正確に示します。

7. ページを追加

テーブルを確保したら、メニューのリストとケースが開くページの両方を一度にリクエストしてください。

エージェントはプロジェクトの add-table-pages スキルに従います。ルート、 MainGrid付きのリストページ、メニューエントリ、そして新しいケースをログするために空のまま開く RecordContext ページを追加します。プレースホルダーを書く代わりに list_views で実際のビューIDを読み取り、登録が顧客に読めるすべての列を保持します。Dynamicsの標準ビューにはエージェント専用の列が含まれているため、独自のビューも提供されるはずです。登録が省略している列を要求した場合は、静かにアクセスを広げるのではなく、停止して尋ねるべきです。関連レコードはケースページにサブグリッドとして掲載できます。名前を付ければ、そのテーブルも保護されます。

8. 二人の客として試してみる

エージェントは顧客としてサインインできないので、この部分はあなたの担当です。また、最も重要なテストでもあります。登録の目的は、ある顧客が 見えない ものにあります。

  1. ポータルを実行し、 顧客登録を行ってください。確認メールは、メールキューのメールボックスがステップ4のテスト&有効化をクリアしたときに届きます。
  2. ケースを開き、新しいケースをログアップし、グリッドから再度開いてください。タイトルを変更して保存します。
  3. サインアウトし、 2人目の顧客 を登録し、 ケースを開きます。グリッドは空であるべきです:最初の顧客のケースはその人だけのものです。そのケースのアドレスをこのセッションに貼り付けても表示されません。

どちらかの顧客が見てはいけないものを見たら、手で調整しないでください。エージェントに見たことと期待していたことを伝え、再度 secure-a-table を処理させてください。

何かがおかしいと感じたら

次にどこへ行くべきか