public async Task Run([EventGridTrigger] JObject eventGridEvent, ILogger log)
        {
            var e = eventGridEvent.ToObject <EventGridEvent>();

            if (e.EventType != BlobCreated)
            {
                log.Log(LogLevel.Information, $"Unsupported event {e.EventType}, skipping.");
                return;
            }

            var blobPath = e.Subject.Replace(ContainerPrefix, string.Empty);

            if (!blobPath.Contains(_blobPrefix))
            {
                log.Log(LogLevel.Information, $"Blob path {blobPath} doesn't match function configuration, skipping.");
                return;
            }

            var messages = await _storageHelper.ListMessagesAsync(blobPath.Replace(_blobPrefix, string.Empty));

            // TODO: group notify all readings
            var firstMessage = messages.FirstOrDefault();

            if (firstMessage != null)
            {
                await _appNotifier.NotifyNewReadingAsync(firstMessage.EnqueuedTimeUtc, firstMessage.Body, log);
            }
        }