次の方法で共有


チュートリアル: 財務と運用アプリで Copilot 用クライアント プラグインを作成する

クライアント プラグイン、またはクライアント アクションは、クライアント コードを呼び出す Microsoft Copilot プラグインです。クライアント エクスペリエンスのコンテキストではユーザー財務と運用アプリ。 開発者は、X++ コード ベースの機能、操作、およびビジネス ロジックを、ユーザーが 自然言語で呼び出せるアクションに変換するプラグインを定義することで、財務と運用アプリの Copilot チャット機能を拡張できます。 クライアント プラグインと構文の詳細については、財務と運用アプリで Copilot 用クライアント プラグインを作成するを参照してください。

シナリオ

クライアント プラグインには数多くの有効なユース ケースがあります。X++ のビジネス ロジックを Copilot に公開するには、ロジックを Copilot がどうすればよいか「知っている」ことに変換し、ユーザーがロジックを自然言語で対話できるようにします。 このシナリオでは、簡略化したクライアント ナビゲーション アクションを Copilot 機能として追加します。 その後、ユーザーは Copilot チャット ウィンドウで自然言語を使用してアプリケーションの特定のフォームに移動できます。

このチュートリアルのステップの概要は次のとおりです。

  1. アクションに対して呼び出すロジックを定義するクライアント側のアクションを X++ で作成します。
  2. Copilot Studio で、定義されたフォームに移動するための Copilot プロンプトによってトリガーされ、手順 1 で作成したクライアント アクションを呼び出すトピックを作成します。
  3. 完了したクライアント アクションによってトリガーされ、Copilot チャット ウィンドウでユーザーに応答を返すトピックを作成します。

前提条件

このチュートリアルには次の前提条件があります。

手順 1: クライアント側のアクションを作成する

統合開発者環境で、ナビゲーション アクションを定義する X++ クラスを作成します。 アクションには、クライアントと Copilot の間でプロパティを渡す入力パラメータと出力パラメータが含まれます。

  1. Visual Studio の開発プロジェクトでは SysCopilotActionCustomNgateAction という名前のクラスを作成します。

  2. 新しいクラスに次のコードを追加します。

    /// <summary>
    /// Provides a client-side action for copilot that navigates to a defined form in the application.
    /// </summary>
    [DataContract]
    [SysCopilotChatGlobalAction]
    [SysCopilotChatActionDefinition(
        identifierStr(MS.PA.CopilotExample.ClientNavigate),
        'Navigate',
        'Navigates to or opens a defined form in the application client',
        menuItemActionStr(SysCopilotChatCustomNavigateAction), MenuItemType::Action)]
    public final class SysCopilotChatCustomNavigateAction extends SysCopilotChatAction
    {
        private MenuItemName menuItemName;
        private str navResponse;
    
        [DataMember('menuItemName'),
        SysCopilotChatActionInputParameter('The name of the menu for the form to launch', true)]
        internal MenuItemName parmMenuItemName(MenuItemName _menuItemName = menuItemName)
        {
            menuItemName = _menuItemName;
            return menuItemName;
        }
    
        [DataMember('navResponse'),
        SysCopilotChatActionOutputParameter('The response from the navigation, whether an error or successful navigation')]
        public str parmNavResponse(str _navResponse = navResponse)
        {
            navResponse = _navResponse;
            return navResponse;
        }
        public void executeAction(SysCopilotChatActionDefinitionAttribute _actionDefinition, Object _context)
        {
            super(_actionDefinition, _context);
    
            if (this.parmMenuItemName())
            {
                // Navigate
                MenuFunction::runClient(this.parmMenuItemName(), MenuItemType::Display, false, new Args());
                this.parmNavResponse("You were successfully navigated to the " + menuItemName + " form.");
            }
            else
            {
                throw Error(Error::wrongUseOfFunction(funcName()));
                this.parmNavResponse("There was an error navigating you to the " + menuItemName + " form. See the action menu for more information.");
            }
        }
    }
    
  3. 開発プロジェクトで、アクション メニュー項目を追加します。 それに以下のプロパティ値を設定します。

    • 名前: 、Action
    • オブジェクト タイプ: クラス
    • オブジェクト: 、Action
  4. コードを保存し、環境に展開します。

手順 2: アクションを呼び出すトピックを作成する

この例では、Copilot Studio で財務と運用の Copilot チャットボットのトピックを 2 つ作成します。 最初のトピックは、Copilot にユーザーが入力したプロンプトがフォームに移動する意図を示すと、プラグインを開始します。 このトピックがトリガーされると、アクションの入力パラメータが決定され、X++ にイベントとして送信されてアクションが呼び出されます。

  1. Copilot Studio で財務と運用の Copilot チャットボットを開きます。

  2. CustomClientNclientgation という名前で、次のトリガー フレーズを含むトピックを作成します。

    • 「フォームに移動する」
    • 「ページを開く」
    • 「フォームに移動してください」
  3. 新しいトピックで、ユーザーにクライアントの移動先のフォームを定義するかを質問する質問ノードを作成します。

    • メッセージ フィールドに、どのフォームに移動しますか? と入力します。
    • 識別フィールドで、リスト変数のオプションを選択します。
    • リスト変数フィールドに、Global.PA_Copilot_ServerForm_NavigationContext を指定します。
    • ユーザーの応答に名前を付けて保存フィールドで、ローカル トピック変数 Topic.SelectedTarget を作成します。
  4. X++ クラスを呼び出すイベント活動ノードを作成します。

    • 名前フィールドに MS.PA.CopilotExample.ClientNavigate と入力します。

    • フィールドに、次の Power Fx 式を入力します。

      Concatenate("{""menuItemName"": """,Topic.SelectedTarget.MenuItem, """}")
      
  5. トピックを終了するための現在のトピックの終了ノードを作成します。

  6. 新しいトピックを保存します。

手順 3: 返される出力パラメーターのトピックを作成する

2 番目のトピックでは、X++ クラスから返される出力パラメータを受け取ります。 その後、Copilot チャット ウィンドウでユーザーに応答を返します。

  1. 財務と運用の Copilot チャットボットで、トピックを作成します。

    • トリガーのタイプをイベント受信に設定します。 詳細については、トピックのトリガーの変更を参照してください。
    • イベント活動時プロパティ ウィンドウで、イベント名 プロパティを MS.PA.CopilotExample.ClientNavigate に設定します。
  2. 新しいトピックで、イベント ペイロードから JavaScript Object Notation (JSON) 文字列を解析する値の解析ノードを作成します。

    • 値の解析フィールドに System.Activity.Text と入力します。

    • データ型フィールドで、サンプル データからと指定します。

    • サンプル JSON からスキーマを取得を選択し、次の JSON 文字列を入力して、返されるパラメータのスキーマを定義します。

      {
          "isResponse":true,
          "menuItemName":"EInvoiceExtCodeWeightUnit_MX",
          "navResponse":"You successfully navigated to the EInvoiceExtCodeWeightUnit_MX form."
      }
      
    • 名前を付けて保存フィールドで、解析される応答のレコード タイプとして Topic.NavigationResponse 変数を作成します。

  3. メッセージ ノードを作成します。 メッセージ値を Topic.NavigationResponse 変数に設定します。

  4. トピックを保存します。

  5. 変更をチャットボットに公開します。

手順 4: プラグインをテストする

実行と応答を管理するアクションとトピックを作成してからコードを公開して展開すると、Copilot チャットに新しい機能が追加されます。 ユーザーは、財務と運用アプリの Copilot 自然言語チャットの一環として、アプリケーションの特定のフォームに移動できるようになります。 たとえば、Copilot チャット ウィンドウに以下のプロンプトを入力できます。

  • "フォームを開く: 既定のダッシュボード" : このプロンプトでは、クライアントに DefaultDashboard フォームに移動します。

  • "ページに移動する" : このプロンプトに、ユーザーのアクセス許可に基づいて、ユーザーが使用できるメニュー項目の一覧が表示されます。 次に、ユーザーはメニュー項目を選択できます。

    注意

    ユーザーのアクセス許可によって、リストを長くすることができます。 ただし、メニュー項目数は 500 に制限されます。