[FunctionName("StorageOrchestrator")]
    public static async Task<string> RunOrchestrator([OrchestrationTrigger]
           IDurableOrchestrationContext context, ILogger log)
    {
        try
        {
            var uploadedBlob = context.GetInput<CloudBlobItem>();
            bool isEmailSentToAdmin;

            // Łańcuch #1 — wyślij komunikat z danymi BLOB-a do kolejki Service Bus Queue
            var queueMessage = await context.CallActivityAsync<string>(
                                        "SendMessageToServiceBusQueue",
                                        uploadedBlob);
            if(queueMessage != null)
            {
                // Łańcuch #2 — wyślij SMS i zadzwoń przez TwilioAPI
                var isSmsCalledUser = await context.CallActivityAsync<bool>(
                                            "SendSmsCallviaTwilio",
                                            serviceBusMessage);
                // Łańcuch #3 — wyślij e-mail poprzez Sendgrid API
                if (isSmsCalledUser)
                {
                    isEmailSentToAdmin = await context.CallActivityAsync<bool>(
                                                     "SendEmailNotice",
                                                     uploadedBlob);
                }

                log.LogInformation($"Nowy element blob o nazwie {uploadedBlob.Name}
                utworzony" +
                $"i dodany do kolejki Service Bus Queue. \n" +
                $" Wiadomość SMS wysłana = {isSmsSentAndCalledUser} do użytkownika. \n" +
                $" Dostęp przez adres URL: {uploadedBlob.BlobUrl}" +
                $" wiadomość została wysłana.");
            }

            return $"Orkiestracja zakończona; ID: {context.InstanceId}";
        }
        catch (Exception ex)
        {
            // Do zrobienia: obsługa błędów i ponowne wywołanie funkcji w razie potrzeby
            log.LogError($"Coś poszło źle. " + ex.Message);
            throw;
        }
    }
