diff --git a/src/Infrastructure/BotSharp.Abstraction/Routing/Models/RoutingItem.cs b/src/Infrastructure/BotSharp.Abstraction/Routing/Models/RoutingItem.cs index ca632ee1..97b5f1fb 100644 --- a/src/Infrastructure/BotSharp.Abstraction/Routing/Models/RoutingItem.cs +++ b/src/Infrastructure/BotSharp.Abstraction/Routing/Models/RoutingItem.cs @@ -13,6 +13,9 @@ public class RoutingItem [JsonPropertyName("description")] public string Description { get; set; } = string.Empty; - [JsonPropertyName("fields")] - public List Fields { get; set; } = new List(); + [JsonPropertyName("required_fields")] + public List RequiredFields { get; set; } = new List(); + + [JsonPropertyName("optional_fields")] + public List OptionalFields { get; set; } = new List(); } diff --git a/src/Infrastructure/BotSharp.Core/Routing/RouterInstance.cs b/src/Infrastructure/BotSharp.Core/Routing/RouterInstance.cs index 1c6f4e54..216c354f 100644 --- a/src/Infrastructure/BotSharp.Core/Routing/RouterInstance.cs +++ b/src/Infrastructure/BotSharp.Core/Routing/RouterInstance.cs @@ -92,7 +92,14 @@ public class RouterInstance : IRouterInstance AgentId = x.Id, Description = x.Description, Name = x.Name, - Fields = x.RoutingRules + RequiredFields = x.RoutingRules + .Where(p => p.Required) + .Select(p => new ParameterPropertyDef(p.Field, p.Description, type: p.Type) + { + Required = p.Required + }).ToList(), + OptionalFields = x.RoutingRules + .Where(p => !p.Required) .Select(p => new ParameterPropertyDef(p.Field, p.Description, type: p.Type) { Required = p.Required diff --git a/src/WebStarter/data/agents/01fcc3e5-9af7-49e6-ad7a-a760bd12dc4a/instruction.liquid b/src/WebStarter/data/agents/01fcc3e5-9af7-49e6-ad7a-a760bd12dc4a/instruction.liquid index b0e0e698..eca5ac78 100644 --- a/src/WebStarter/data/agents/01fcc3e5-9af7-49e6-ad7a-a760bd12dc4a/instruction.liquid +++ b/src/WebStarter/data/agents/01fcc3e5-9af7-49e6-ad7a-a760bd12dc4a/instruction.liquid @@ -19,12 +19,18 @@ Parameters: [AGENTS] {% for agent in routing_agents %} -* {{ agent.description}} -Agent: {{ agent.name }} -{% if agent.fields and agent.fields != empty -%} -Arguments: - {% for f in agent.fields -%} - - {{ f.name }}: {{ f.description }} (type: {{ f.type }}, required: {{f.required}}){{ "\r\n " }} +* Agent: {{ agent.name }} +{{ agent.description}} +{% if agent.required_fields and agent.required_fields != empty -%} +Required args: + {% for f in agent.required_fields -%} + - {{ f.name }} (type: {{ f.type }}): {{ f.description }}{{ "\r\n " }} + {%- endfor %} +{%- endif %} +{% if agent.optional_fields and agent.optional_fields != empty -%} +Optional args: + {% for f in agent.optional_fields -%} + - {{ f.name }} (type: {{ f.type }}): {{ f.description }}{{ "\r\n " }} {%- endfor %} {%- endif %} {% endfor %}