Tous les produits
Search
Centre de documentation

Intelligent Media Services:Configurer les paramètres de rappel pour les travaux de montage terminés

Dernière mise à jour :Aug 11, 2026

Lorsque vous utilisez la fonctionnalité de montage en ligne d'Intelligent Media Services (IMS), vous pouvez configurer des événements de rappel pour recevoir des mises à jour sur la progression et l'état des travaux. Cela vous permet d'effectuer d'autres opérations métier en temps utile.

Méthodes de rappel

Vous pouvez utiliser des requêtes HTTP et des files d'attente SMQ pour recevoir des notifications d'événements. Pour plus d'informations, consultez la rubrique Méthodes de rappel.

Mise en œuvre

Vous pouvez configurer des URL de rappel personnalisées pour des travaux individuels ou définir une URL de rappel globale.

  • URL de rappel personnalisée pour un seul travail : il s'agit de l'URL spécifiée lors de la soumission d'un travail de montage et de production. Vous devez appeler l'opération SubmitMediaProducingJob pour indiquer l'URL de rappel HTTP ou HTTPS, ou une URL de rappel Simple Message Queue (SMQ).

    • Si vous optez pour les rappels HTTP ou HTTPS, déployez un service HTTP destiné à recevoir les messages de rappel et spécifiez une URL de rappel lors de la soumission du travail de montage et de production. Une fois le travail terminé, IMS envoie une requête HTTP POST contenant la progression du travail dans le corps de la requête.

    • Si vous sélectionnez les rappels MNS, vous devez configurer une file d'attente dont le nom commence par ice-callback dans la région où le travail est achevé. Le serveur IMS transmet alors les messages à cette file d'attente.

  • URL de rappel globale : elle s'applique à tous les travaux de traitement multimédia. Dans les Global Settings d'IMS, indiquez un point de terminaison de file d'attente de messages comme URL de rappel globale. Lorsqu'un travail est terminé, IMS envoie une notification à cette URL.

    Remarque

    Seules les files d'attente de messages SMQ sont prises en charge.

Structure du message

Pour plus de détails sur la structure des messages relatifs aux travaux de montage et de production terminés, consultez la liste des Événements.

Prérequis

Si vous utilisez la méthode SMQ queue, assurez-vous qu'IMS dispose des autorisations nécessaires pour accéder à SMQ. Pour en savoir plus, reportez-vous à la section Simple Message Queue (anciennement MNS) : Activation et autorisations.

Configurer une URL de rappel personnalisée pour un seul travail

Lorsque vous appelez l'opération SubmitMediaProducingJob pour soumettre un travail, précisez l'URL de rappel HTTP, HTTPS ou SMQ dans le paramètre UserData. Voici un exemple de code :

  • URL de rappel HTTP ou HTTPS

    {"NotifyAddress":"http(s)://**.**.***"}
  • URL de rappel SMQ (doit correspondre au point de terminaison d'une file d'attente commençant par ice-callback)

    {"NotifyAddress":"ice-callback-****"}

Configurer une URL de rappel globale

  1. Créez une file d'attente de messages dans la console SMQ. Le nom de la file d'attente doit commencer par ice-callback. Pour plus d'informations, consultez la procédure Créer une file d'attente.

  2. Appelez l'opération SetEventCallback pour configurer les rappels d'événements et spécifiez le nom de la file d'attente créée à l'étape 1 dans le paramètre CallbackQueueName.

  3. Écoutez la file d'attente définie à l'étape 1 et traitez les messages. L'exemple de code ci-dessous illustre cette opération.

    Remarque

    La version du SDK serveur utilisée dans l'exemple de code suivant est fournie à titre indicatif. Pour obtenir la dernière version, consultez le SDK serveur.

    <dependencies>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.9</version>
    </dependency>
    <dependency>
        <groupId>com.aliyun.mns</groupId>
        <artifactId>aliyun-sdk-mns</artifactId>
        <version>1.1.9</version>
    </dependency>
    </dependencies>
    import java.util.List;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    
    import com.aliyun.mns.client.CloudAccount;
    import com.aliyun.mns.client.CloudQueue;
    import com.aliyun.mns.client.MNSClient;
    import com.aliyun.mns.common.ClientException;
    import com.aliyun.mns.common.ServiceException;
    import com.aliyun.mns.common.utils.ServiceSettings;
    import com.aliyun.mns.model.Message;
    
    public class IceProduceMessageConsumerDemo {
    
        public static void main(String[] args) {
    
            // Read the SMQ configuration from the ~/.aliyun-mns.properties file:
            // mns.accesskeyid, mns.accesskeysecret, mns.queue.endpoint
            // The RAM user to which the AccessKey pair belongs has full read and write permissions on SMQ.
            CloudAccount account = new CloudAccount(
                ServiceSettings.getMNSAccessKeyId(),
                ServiceSettings.getMNSAccessKeySecret(),
                ServiceSettings.getMNSAccountEndpoint());
            MNSClient client = account.getMNSClient(); //this client need only initialize once
    
            // Demo for receive message code
            try{
                CloudQueue queue = client.getQueueRef("ice-callback-test");// replace with your queue name
                List<Message> messages = queue.batchPopMessage(10, 30);
                for(Message popMsg : messages)
                {
                    if (popMsg != null){
                        System.out.println("message handle: " + popMsg.getReceiptHandle());
                        System.out.println("message body: " + popMsg.getMessageBodyAsString());
                        System.out.println("message id: " + popMsg.getMessageId());
                        System.out.println("message dequeue count:" + popMsg.getDequeueCount());
    
                        JSONObject jsonObject = JSON.parseObject(popMsg.getMessageBodyAsString());
    
                        // Process only messages of the ProduceMediaComplete type:
                        if("ProduceMediaComplete".equals(jsonObject.getString("EventType"))){
                            JSONObject messageBody = jsonObject.getJSONObject("MessageBody");
    
                            System.out.println("ProjectId:" + messageBody.getString("ProjectId"));
                            System.out.println("JobId:" + messageBody.getString("JobId"));
                            System.out.println("Status:" + messageBody.getString("Status"));
                            System.out.println("MediaId:" + messageBody.getString("MediaId"));
                            System.out.println("MediaURL:" + messageBody.getString("MediaURL"));
    
                            //<<to add your special logic.>>
    
                            //remember to  delete message when consume message successfully.
                            //queue.deleteMessage(popMsg.getReceiptHandle());
                            System.out.println("delete message successfully.\n");
                        }
    
                    }
                }
            } catch (ClientException ce)
            {
                System.out.println("Something wrong with the network connection between client and MNS service."
                    + "Please check your network and DNS availability.");
                ce.printStackTrace();
            } catch (ServiceException se)
            {
                if (se.getErrorCode().equals("QueueNotExist"))
                {
                    System.out.println("Queue is not exist. Please create queue before use");
                } else if (se.getErrorCode().equals("TimeExpired"))
                {
                    System.out.println("The request is time expired. Please check your local machine timeclock");
                }
                /*
                
                */
                se.printStackTrace();
            } catch (Exception e)
            {
                System.out.println("Unknown exception happened!");
                e.printStackTrace();
            }
    
            client.close();
        }
    }