Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,32 @@ codeunit 4303 "Agent Task"
exit(AgentTaskImpl.GetDetailsForAgentTaskLogEntry(AgentTaskLogEntry));
end;

/// <summary>
/// Gets the model ID of the agent task.
/// </summary>
/// <param name="AgentTaskID">The ID of the agent task.</param>
/// <returns>The model ID of the agent task. Must be valid value from Agent Model table.</returns>
procedure GetModelId(AgentTaskID: BigInteger): Code[30]
var
AgentTaskImpl: Codeunit "Agent Task Impl.";
begin
FeatureAccessManagement.AgentManagementAllowed(true);
exit(AgentTaskImpl.GetModelId(AgentTaskID));
end;

/// <summary>
/// Gets the model name of the agent task.
/// </summary>
/// <param name="AgentTaskID">The ID of the agent task.</param>
/// <returns>The model name of the agent task.</returns>
procedure GetModelName(AgentTaskID: BigInteger): Text[70]
var
AgentTaskImpl: Codeunit "Agent Task Impl.";
begin
FeatureAccessManagement.AgentManagementAllowed(true);
exit(AgentTaskImpl.GetModelName(AgentTaskID));
end;

var
FeatureAccessManagement: Codeunit "Feature Access Management";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@ codeunit 4315 "Agent Task Builder"
/// <param name="RequiresMessage">Specifies whether a message is required, default is true.</param>
/// <returns>Agent task that was created.</returns>
/// <remarks>The builder keeps the state, do not reuse the same instance of the builder to create multiple tasks.</remarks>
[Scope('OnPrem')]
procedure Create(SetTaskStatusToReady: Boolean; RequiresMessage: Boolean): Record "Agent Task"
begin
FeatureAccessManagement.AgentTaskManagementPreviewEnabled(true);
Expand All @@ -81,6 +80,20 @@ codeunit 4315 "Agent Task Builder"
exit(AgentTaskBuilderImpl.GetAgentTaskMessageCreated());
end;

/// <summary>
/// Set the model ID that will be used to process the task.
/// If the model ID is not set, the model from the agent will be used, if any.
/// If the agent does not have a model, the default model will be used.
/// </summary>
/// <param name="ModelId">The model ID of the task. This field is used to connect to external systems, like Message ID for emails.</param>
/// <returns>This instance of the Agent Task Builder.</returns>
procedure SetModelId(ModelId: Code[30]): codeunit "Agent Task Builder"
begin
FeatureAccessManagement.AgentManagementAllowed(true);
AgentTaskBuilderImpl.SetModelId(ModelId);
exit(this);
end;

/// <summary>
/// Set the external ID of the task.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ codeunit 4310 "Agent Task Builder Impl."
GlobalAgentUserSecurityId: Guid;
GlobalTaskTitle: Text[150];
GlobalExternalID: Text[2048];
GlobalModelId: Code[30];
GlobalBillingContext: Enum "Agent Task Billing Context";

[Scope('OnPrem')]
Expand All @@ -40,7 +41,7 @@ codeunit 4310 "Agent Task Builder Impl."
VerifyMandatoryFieldsSet();
VerifyTaskCanBeCreated(RequiresMessage);

AgentTaskImpl.CreateTask(GlobalAgentUserSecurityId, GlobalTaskTitle, GlobalExternalID, GlobalBillingContext, AgentTaskRecord);
AgentTaskImpl.CreateTask(GlobalAgentUserSecurityId, GlobalTaskTitle, GlobalExternalID, GlobalBillingContext, GlobalModelId, AgentTaskRecord);
if MessageSet then begin
GlobalAgentTaskMessageBuilder.SetAgentTask(AgentTaskRecord);
GlobalAgentTaskMessageBuilder.Create(false);
Expand All @@ -65,6 +66,13 @@ codeunit 4310 "Agent Task Builder Impl."
exit(this);
end;

[Scope('OnPrem')]
procedure SetModelId(ModelId: Code[30]): codeunit "Agent Task Builder Impl."
begin
GlobalModelId := ModelId;
exit(this);
end;

[Scope('OnPrem')]
procedure SetBillingContext(BillingContext: Enum "Agent Task Billing Context"): codeunit "Agent Task Builder Impl."
begin
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,15 @@ codeunit 4300 "Agent Task Impl."
Page.Run(Page::"Agent Task Log Entry List", AgentTaskLogEntry);
end;

procedure CreateTask(AgentUserSecurityID: Guid; TaskTitle: Text[150]; ExternalID: Text[2048]; BillingContext: Enum "Agent Task Billing Context"; var NewAgentTask: Record "Agent Task")
procedure CreateTask(AgentUserSecurityID: Guid; TaskTitle: Text[150]; ExternalID: Text[2048]; BillingContext: Enum "Agent Task Billing Context"; ModelId: Code[30]; var NewAgentTask: Record "Agent Task")
begin
NewAgentTask."Agent User Security ID" := AgentUserSecurityID;
NewAgentTask."Created By" := UserSecurityId();
NewAgentTask.Title := TaskTitle;
NewAgentTask."Needs Attention" := false;
NewAgentTask.Status := NewAgentTask.Status::Paused;
NewAgentTask."External ID" := ExternalID;
NewAgentTask."Model ID" := ModelId;
NewAgentTask."Billing Context" := BillingContext;
NewAgentTask.Insert();
end;
Expand Down Expand Up @@ -164,6 +165,24 @@ codeunit 4300 "Agent Task Impl."
exit(false);
end;

procedure GetModelId(TaskId: BigInteger): Code[30]
var
AgentTaskRecord: Record "Agent Task";
begin
AgentTaskRecord.Get(TaskId);
exit(AgentTaskRecord."Model ID")
end;

procedure GetModelName(TaskId: BigInteger): Text[70]
var
AgentTaskRecord: Record "Agent Task";
begin
AgentTaskRecord.Get(TaskId);
AgentTaskRecord.CalcFields("Model Name");
exit(AgentTaskRecord."Model Name");
end;


[EventSubscriber(ObjectType::Codeunit, Codeunit::"System Action Triggers", GetAgentTaskMessagePageId, '', true, true)]
local procedure OnGetAgentTaskMessagePageId(var PageId: Integer)
begin
Expand Down
Loading