You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

Program.cs 2.6 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // Copyright (c) Microsoft Corporation. All rights reserved.
  2. // Program.cs
  3. using Microsoft.AutoGen.Abstractions;
  4. using Microsoft.AutoGen.Agents;
  5. using Microsoft.Extensions.DependencyInjection;
  6. using Microsoft.Extensions.Hosting;
  7. // send a message to the agent
  8. var app = await AgentsApp.PublishMessageAsync("HelloAgents", new NewMessageReceived
  9. {
  10. Message = "World"
  11. }, local: false);
  12. await app.WaitForShutdownAsync();
  13. namespace Hello
  14. {
  15. [TopicSubscription("HelloAgents")]
  16. public class HelloAgent(
  17. IAgentContext context,
  18. [FromKeyedServices("EventTypes")] EventTypes typeRegistry) : ConsoleAgent(
  19. context,
  20. typeRegistry),
  21. ISayHello,
  22. IHandle<NewMessageReceived>,
  23. IHandle<ConversationClosed>
  24. {
  25. private AgentState? State { get; set; }
  26. public async Task Handle(NewMessageReceived item)
  27. {
  28. var response = await SayHello(item.Message).ConfigureAwait(false);
  29. var evt = new Output
  30. {
  31. Message = response
  32. }.ToCloudEvent(this.AgentId.Key);
  33. var entry = "We said hello to " + item.Message;
  34. await Store(new AgentState
  35. {
  36. AgentId = this.AgentId,
  37. TextData = entry
  38. }).ConfigureAwait(false);
  39. await PublishEvent(evt).ConfigureAwait(false);
  40. var goodbye = new ConversationClosed
  41. {
  42. UserId = this.AgentId.Key,
  43. UserMessage = "Goodbye"
  44. }.ToCloudEvent(this.AgentId.Key);
  45. await PublishEvent(goodbye).ConfigureAwait(false);
  46. }
  47. public async Task Handle(ConversationClosed item)
  48. {
  49. State = await Read<AgentState>(this.AgentId).ConfigureAwait(false);
  50. var read = State?.TextData ?? "No state data found";
  51. var goodbye = $"{read}\n********************* {item.UserId} said {item.UserMessage} ************************";
  52. var evt = new Output
  53. {
  54. Message = goodbye
  55. }.ToCloudEvent(this.AgentId.Key);
  56. await PublishEvent(evt).ConfigureAwait(false);
  57. //sleep
  58. await Task.Delay(10000).ConfigureAwait(false);
  59. await AgentsApp.ShutdownAsync().ConfigureAwait(false);
  60. }
  61. public async Task<string> SayHello(string ask)
  62. {
  63. var response = $"\n\n\n\n***************Hello {ask}**********************\n\n\n\n";
  64. return response;
  65. }
  66. }
  67. public interface ISayHello
  68. {
  69. public Task<string> SayHello(string ask);
  70. }
  71. }