public async Task FetchInboxAsync(IAgentContext agentContext) { var connection = await GetMediatorConnectionAsync(agentContext); if (connection == null) { throw new InvalidOperationException("This agent is not configured with a mediator"); } var createInboxMessage = new GetInboxItemsMessage(); var response = await messageService.SendReceiveAsync <GetInboxItemsResponseMessage>(agentContext.Wallet, createInboxMessage, connection); var processedItems = new List <string>(); foreach (var item in response.Items) { try { await agentContext.Agent.ProcessAsync(agentContext, new PackedMessageContext(item.Data)); processedItems.Add(item.Id); } catch (Exception e) { Console.WriteLine($"Error processing message {e}"); } } await messageService.SendAsync(agentContext.Wallet, new DeleteInboxItemsMessage { InboxItemIds = processedItems }, connection); }
private async Task <GetInboxItemsResponseMessage> GetInboxItemsAsync(IAgentContext agentContext, ConnectionRecord connection, GetInboxItemsMessage getInboxItemsMessage) { var inboxId = connection.GetTag("InboxId"); var inboxRecord = await recordService.GetAsync <InboxRecord>(agentContext.Wallet, inboxId); var edgeWallet = await walletService.GetWalletAsync(inboxRecord.WalletConfiguration, inboxRecord.WalletCredentials); var items = await recordService.SearchAsync <InboxItemRecord>(edgeWallet); return(new GetInboxItemsResponseMessage { Items = items .Select(x => new InboxItemMessage { Id = x.Id, Data = x.ItemData }) .ToList() }); }