Как запустить функцию после успешного выполнения другой функции

Как запустить функцию после успешного выполнения другой функции

24.12.2019 07:07:58 Просмотров 32 Источник

У меня есть 2 функции, которые используют Twilio для отправки мультимедийных файлов и текстовых сообщений соответственно. В большинстве случаев я хочу отправить фотографию, а затем текстовое сообщение. Однако, когда я вызываю обе функции, текстовое сообщение отправляется перед фотографией. Как я могу гарантировать, что фотография отправляется первой перед текстом.

//sends photo
   public static function sendMediaMessage($phone, $mediaUrl, $msg = null){
        try{

            $client = new Client(env('TWILIO_SID'), env('TWILIO_TOKEN'));
            $send = $client->messages->create(
                "whatsapp:".$phone,
                array(
                    'from' => "whatsapp:".env('TWILIO_NUMBER'), 
                    'body' => $msg,
                    'mediaUrl' => [$mediaUrl],

                )
            );

        }catch (\Exception $exception){

        }
    }

//send text messages
public static function sendWhatsAppMessage($phone, $message){

        try{

            $client = new Client(env('TWILIO_SID'), env('TWILIO_TOKEN'));
            $send = $client->messages->create(
                "whatsapp:".$phone, // Text this number
                array(
                    'from' => "whatsapp:".env('TWILIO_NUMBER'), 
                    'body' => $message
                )
            );

        }catch (\Exception $exception){

        }

    }

Делает звонок

myClass::sendMediaMessage();
myClass::sendWhatsAppMessage();
У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/59471202/how-to-run-a-function-upon-successful-execution-of-another-function#comment105121102_59471202
Однако я не могу быть уверен, что это будет вне вашего контроля, поскольку Twilio может использовать разные очереди для разных типов сообщений. А также, используя эту статью в качестве примера: support.twilio.com/hc/en-us/articles/... , это также может быть связано с перевозчиком.

Ответы - Как запустить функцию после успешного выполнения другой функции / How to run a function upon successful execution of another function

PtrTon

24.12.2019 08:57:43

Twillio документации предполагает, что вы можете поставить функцию обратного вызова URL-адрес, используя statusCallback поле.

Если указано, Мы публикуем эти изменения статуса сообщения на URL-адрес: поставлено в очередь, не удалось, отправлено, доставлено или недоставлено. Вы можете настроить маршрут для него, а затем отправить второе сообщение.

В качестве альтернативы вы можете посмотреть на систему обратной связи с сообщениями Twillio.

Чтобы отслеживать обратную связь с сообщением, необходимо установить ProvideFeedback=true при первом создании сообщения. Это создаст экземпляр обратной связи сообщения с результатом unconfirmed.

Я не уверен, что из вышеперечисленного следует использовать, это зависит от вас.

Закрыть X