| 
									
										
										
										
											2025-01-28 17:13:36 -05:00
										 |  |  | // Copyright (c) Microsoft Corporation. All rights reserved. | 
					
						
							|  |  |  | // HelloAgent.cs | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-02-12 18:37:42 -05:00
										 |  |  | using Microsoft.AutoGen.Agents; | 
					
						
							| 
									
										
										
										
											2025-01-28 17:13:36 -05:00
										 |  |  | using Microsoft.AutoGen.Contracts; | 
					
						
							|  |  |  | using Microsoft.AutoGen.Core; | 
					
						
							|  |  |  | using Microsoft.Extensions.Hosting; | 
					
						
							|  |  |  | using Microsoft.Extensions.Logging; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace Samples; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [TypeSubscription("HelloTopic")] | 
					
						
							|  |  |  | public class HelloAgent( | 
					
						
							|  |  |  |     IHostApplicationLifetime hostApplicationLifetime, | 
					
						
							|  |  |  |     AgentId id, | 
					
						
							|  |  |  |     IAgentRuntime runtime, | 
					
						
							|  |  |  |     Logger<BaseAgent>? logger = null) : BaseAgent(id, runtime, "Hello Agent", logger), | 
					
						
							|  |  |  |         IHandle<NewMessageReceived>, | 
					
						
							|  |  |  |         IHandle<ConversationClosed>, | 
					
						
							|  |  |  |         IHandle<Shutdown> | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     // This will capture the message sent in Program.cs | 
					
						
							|  |  |  |     public async ValueTask HandleAsync(NewMessageReceived item, MessageContext messageContext) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         Console.Out.WriteLine(item.Message); // Print message to console | 
					
						
							|  |  |  |         ConversationClosed goodbye = new ConversationClosed | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             UserId = this.Id.Type, | 
					
						
							|  |  |  |             UserMessage = "Goodbye" | 
					
						
							|  |  |  |         }; | 
					
						
							|  |  |  |         // This will publish the new message type which will be handled by the ConversationClosed handler | 
					
						
							|  |  |  |         await this.PublishMessageAsync(goodbye, new TopicId("HelloTopic")); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     public async ValueTask HandleAsync(ConversationClosed item, MessageContext messageContext) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         var goodbye = $"{item.UserId} said {item.UserMessage}"; // Print goodbye message to console | 
					
						
							|  |  |  |         Console.Out.WriteLine(goodbye); | 
					
						
							|  |  |  |         if (Environment.GetEnvironmentVariable("STAY_ALIVE_ON_GOODBYE") != "true") | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             // Publish message that will be handled by shutdown handler | 
					
						
							|  |  |  |             await this.PublishMessageAsync(new Shutdown(), new TopicId("HelloTopic")); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public async ValueTask HandleAsync(Shutdown item, MessageContext messageContext) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         Console.WriteLine("Shutting down..."); | 
					
						
							|  |  |  |         hostApplicationLifetime.StopApplication(); // Shuts down application | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |