msdyn_invokeCaseProcessingAgentを使用して Case Management エージェントを呼び出す

msdyn_invokeCaseProcessingAgentビジネス イベントを使用して、Case Management エージェントをトリガーして次の操作を行います。

  • 電子メールなどのソース エンティティから情報を抽出し、関連する詳細でケースを更新します。
  • 特定のケースを解決します。

これを使用して、既定のトリガーを超えてケースの自動化を拡張できます。 たとえば、顧客が外部ポータルからケースを作成するときや、ケースに追加された新しいレシートなど、カスタム テーブルで CRUD イベントが発生したときに、Case Management Agent を呼び出すことができます。

[前提条件]

HTTP 要求

POST [Organization URI]/api/data/v9.2/msdyn_invokeCaseProcessingAgent

要求本文

プロパティ タイプ 必須 Description
msdyn_incidentId String イエス ケース管理エージェントを実行する必要があるケース (インシデント) の ID。
例: "3895d023-a353-f011-877b-6045bd062e87"
msdyn_actions 文字列化された JSON 配列 イエス 実行するケース管理エージェントのアクション/機能を定義します。 詳細については、以下を参照してください。

配列オブジェクト: msdyn_actions

プロパティ タイプ 必須 Description
アクション String イエス 実行するケース処理アクションを定義します。
値:
  • 解決: Case Management Agent の解決機能を使用してケースを解決します。
  • enrich: メールなどのソース エンティティから情報を抽出し、関連する詳細でケースを更新します。
    ソース エンティティにアクセスでき、関連するケース情報が含まれている必要があります
automationLevel String いいえ アクションのオートメーション モードを定義します。 これは、ケース解決にのみ適用されます。 この値が指定されていない場合、エージェントは管理者によって構成されたモードを使用します。
値:
  • 完全: AI エージェントは、顧客サービス担当者 (サービス担当者または担当者) の介入なしで自動的にケースを解決します。
  • ,
  • Semi: AI エージェントは解決メールを下書きしますが、サービス担当者のレビューと承認が必要です
sourceContextEntity String イエス これは、ケース エンリッチメントに必要な値であり、ケース解決には省略可能です。 ケースの更新に使用する必要があるメールや会話などのソース エンティティ。
例: "emails(0e20cf92-f663-f011-bec1-000d3a3622ba)"

サンプルリクエスト

{
  "msdyn_incidentId": "5ad2ac2c-6363-f011-bec2-6045bd026457",
  "msdyn_actions": "[{\"action\":\"enrich\",\"sourceContextEntity\":\"emails(0e20cf92-f663-f011-bec1-000d3a3622ba)\"},{\"action\":\"resolve\",\"automationLevel\":\"Full\"}]"
}

[応答]

  • 成功: 本文が空の HTTP 204 No Content を返します。
  • 失敗: 標準 OData エラー応答。

サンプル コード

次の例では、 msdyn_invokeCaseProcessingAgent 組織要求を実行することで、Dataverse プラグインまたはカスタム コードから Case Management Agent を呼び出すことができます。 エージェントは、関連する電子メール エンティティを使用してケースを更新し、完全な自動化でケースを解決するために使用されます。

例 1

CrmServiceClient GetService()
{
    string orgUrl = "";
    string username = "";
    string connectionString = $"AuthType=OAuth;Username={username};Url={orgUrl};AppId=51f81489-12ee-4a9e-aaae-a2591f45987d;RedirectUri=http://localhost;LoginPrompt=Auto";
    CrmServiceClient svc = new CrmServiceClient(connectionString);
    return svc;
}

public class InvokeCaseProcessingAgentRequest
{
    [JsonProperty("msdyn_incidentId")]
    public string incidentid { get; set; }

    [JsonProperty("msdyn_actions")]
    public List<AgentAction> actions { get; set; }
}

public class AgentAction
{
    [JsonProperty("action")]
    public AgentActionType action { get; set; }

    [JsonProperty("sourceContextEntity")]
    public string sourceContextEntity { get; set; }

    [JsonProperty("automationLevel")]
    public AutomationLevel? automationLevel { get; set; }
}

[JsonConverter(typeof(StringEnumConverter))]
public enum AgentActionType
{
    [EnumMember(Value = "enrich")]
    Enrich,
    [EnumMember(Value = "resolve")]
    Resolve
}

[JsonConverter(typeof(StringEnumConverter))]
public enum AutomationLevel
{
    [EnumMember(Value = "Full")]
    Full,
    [EnumMember(Value = "Semi")]
    Semi
}

void Main()
{
    var service = GetService();
    var actions = new List<AgentAction>()
    {
        new AgentAction()
        {
            action = AgentActionType.Enrich,
            sourceContextEntity = "emails(0e20cf92-f663-f011-bec1-000d3a3622ba)"
        },
        new AgentAction()
        {
            action = AgentActionType.Resolve,
            automationLevel = AutomationLevel.Full
        },
    };
    var req = new OrganizationRequest("msdyn_invokeCaseProcessingAgent")
    {
        ["msdyn_incidentId"] = new Guid("8f2db50d-0c64-f011-bec2-000d3a3b776a"),
        ["msdyn_actions"] = JsonConvert.SerializeObject(actions)
    };
    service.Execute(req);
}

例 2

function invokeCaseManagementAgent() {
  var data = JSON.stringify({
    "msdyn_incidentId": "020edf2f-7d3f-4a69-bd26-030736604eeb",
    "msdyn_actions": "[{\"action\":\"enrich\",\"sourceContextEntity\":\"emails(0e20cf92-f663-f011-bec1-000d3a3622ba)\"},{\"action\":\"resolve\",\"automationMode\":\"Full\"}]"
  });
  var xhr = new XMLHttpRequest();
  xhr.withCredentials = true;
  xhr.addEventListener("readystatechange", function() {
    if(this.readyState === 4) {
      console.log(this.responseText);
    }
  });
  xhr.open("POST", Xrm.Utility.getGlobalContext().getClientUrl()+"/api/data/v9.2/msdyn_invokeCaseProcessingAgent");
  xhr.setRequestHeader("Cache-Control", "no-cache");
  xhr.setRequestHeader("Accept", "*/*");
  xhr.setRequestHeader("Content-Type", "application/json");
  xhr.send(data);
}

invokeCaseManagementAgent();