示例#1
0
        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);
        }
示例#2
0
        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()
            });
        }