- using Microsoft.AutoGen.Agents.Abstractions;
- using Microsoft.AutoGen.Agents.Client;
- using Microsoft.Extensions.DependencyInjection;
- using Microsoft.Extensions.Hosting;
-
- // send a message to the agent
- var app = await App.PublishMessageAsync("HelloAgents", new NewMessageReceived
- {
- Message = "World"
- }, local: true);
-
- await App.RuntimeApp!.WaitForShutdownAsync();
- await app.WaitForShutdownAsync();
-
- namespace Hello
- {
- [TopicSubscription("HelloAgents")]
- public class HelloAgent(
- IAgentContext context,
- [FromKeyedServices("EventTypes")] EventTypes typeRegistry) : ConsoleAgent(
- context,
- typeRegistry),
- ISayHello,
- IHandle<NewMessageReceived>,
- IHandle<ConversationClosed>
- {
- public async Task Handle(NewMessageReceived item)
- {
- var response = await SayHello(item.Message).ConfigureAwait(false);
- var evt = new Output
- {
- Message = response
- }.ToCloudEvent(this.AgentId.Key);
- await PublishEvent(evt).ConfigureAwait(false);
- var goodbye = new ConversationClosed
- {
- UserId = this.AgentId.Key,
- UserMessage = "Goodbye"
- }.ToCloudEvent(this.AgentId.Key);
- await PublishEvent(goodbye).ConfigureAwait(false);
- }
- public async Task Handle(ConversationClosed item)
- {
- var goodbye = $"********************* {item.UserId} said {item.UserMessage} ************************";
- var evt = new Output
- {
- Message = goodbye
- }.ToCloudEvent(this.AgentId.Key);
- await PublishEvent(evt).ConfigureAwait(false);
- await App.ShutdownAsync();
- }
- public async Task<string> SayHello(string ask)
- {
- var response = $"\n\n\n\n***************Hello {ask}**********************\n\n\n\n";
- return response;
- }
- }
- public interface ISayHello
- {
- public Task<string> SayHello(string ask);
- }
- }
|