public async Task SaveHostedContentsCollection(ChatMessage message, IChatMessageHostedContentsCollectionPage list)
        {
            var jsonFile = GetBackupMessageHostedContentFile(_Options.Path, _TeamId, _ChannelId, message);

            using System.IO.FileStream fs = System.IO.File.Create(jsonFile);
            _Logger.LogTrace($"File: {jsonFile}");
            await JsonSerializer.SerializeAsync <IChatMessageHostedContentsCollectionPage>(fs, list, _Options.JsonOptions);
        }
        public async Task SaveMessageHostedContents(ChatMessage message)
        {
            if (message.DeletedDateTime != null)
            {
                return;
            }

            var detailRequestBuilder =
                message.ReplyToId == null
                ? _GraphClientService.GetGraphClient(_Logger).Teams[_TeamId].Channels[_ChannelId].Messages[message.Id].HostedContents
                : _GraphClientService.GetGraphClient(_Logger).Teams[_TeamId].Channels[_ChannelId].Messages[message.ReplyToId].Replies[message.Id].HostedContents;

            var detailRequest = detailRequestBuilder.Request();
            IChatMessageHostedContentsCollectionPage list = new ChatMessageHostedContentsCollectionPage();

            do
            {
                _Logger.LogTrace($"GraphURI: {detailRequest.RequestUrl}");

                IChatMessageHostedContentsCollectionPage hostedContentPage = null;
                for (int i = 1; i <= MgGraphRequester.MaxRetry; i++)
                {
                    try
                    {
                        _Logger.LogTrace($"GraphURI({i}): {detailRequest.RequestUrl}");
                        hostedContentPage = await detailRequest.GetAsync();

                        break;
                    }
                    catch (ServiceException mgsex)
                    {
                        if (!await MgGraphRequester.ShouldContinue(mgsex, i))
                        {
                            _Logger.LogWarning(mgsex, $"Error getting HostedContent page: {detailRequest.RequestUrl}");
                            return;
                        }
                    }
                }


                foreach (var hostedContent in hostedContentPage)
                {
                    _Logger.LogTrace($"HostedContent: {message.Id}|{hostedContent.Id}");
                    list.Add(hostedContent);
                    await SaveHostedContentBlob(message, hostedContent, detailRequestBuilder);
                }
                detailRequest = hostedContentPage.NextPageRequest;
            }while (detailRequest != null);
            if (list.Count > 0)
            {
                await SaveHostedContentsCollection(message, list);
            }
        }