Todos os produtos
Search
Central de documentação

Intelligent Media Services:Configurar definições de callback para trabalhos de edição concluídos

Última atualização: Jul 08, 2026

Ao utilizar o recurso de edição online do Intelligent Media Services (IMS), configure eventos de callback para receber atualizações sobre o progresso e o status dos trabalhos. Isso permite executar outras operações de negócios de maneira oportuna.

Métodos de callback

Utilize requisições HTTP e filas SMQ para receber notificações de eventos. Para mais informações, consulte Métodos de callback.

Implementação

É possível configurar URLs de callback personalizadas para trabalhos individuais ou definir uma URL de callback global.

  • URL de callback personalizada para um único trabalho: trata-se da URL especificada no momento do envio de um trabalho de edição e produção. Chame a operação SubmitMediaProducingJob para definir a URL de callback HTTP ou HTTPS, ou uma URL de callback do Simple Message Queue (SMQ).

    • Para callbacks HTTP ou HTTPS, implante um serviço HTTP capaz de receber as mensagens de callback e especifique a URL ao enviar o trabalho de edição e produção. Após a conclusão do trabalho, o IMS envia uma requisição HTTP POST contendo o progresso no corpo da requisição.

    • Caso selecione callbacks MNS, configure uma fila de mensagens com prefixo ice-callback na região onde o trabalho será concluído. O servidor IMS enviará as mensagens para essa fila.

  • URL de callback global: aplica-se a todos os trabalhos de processamento de mídia. Nas Global Settings do IMS, defina um endpoint de fila de mensagens como a URL de callback global. Quando um trabalho for concluído, o IMS enviará uma notificação para esse endereço.

    Nota

    Apenas filas de mensagens do SMQ são suportadas.

Estrutura da mensagem

Para detalhes sobre a estrutura das mensagens de trabalhos de edição e produção concluídos, consulte Lista de eventos.

Pré-requisitos

Se optar pelo método de SMQ queue, garanta que o IMS tenha autorização para acessar o SMQ. Para mais informações, consulte Simple Message Queue (antigo MNS): Ativação e permissões.

Configurar uma URL de callback personalizada para um único trabalho

Ao chamar a operação SubmitMediaProducingJob para enviar um trabalho, especifique a URL de callback HTTP, HTTPS ou SMQ no parâmetro UserData. Exemplo de código:

  • URL de callback HTTP ou HTTPS

    {"NotifyAddress":"http(s)://**.**.***"}
  • URL de callback SMQ (deve ser o endpoint de uma fila de mensagens com prefixo ice-callback)

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

Configurar uma URL de callback global

  1. Crie uma fila de mensagens no console do SMQ. O nome da fila deve começar com ice-callback. Para mais informações, consulte Criar uma fila.

  2. Chame a operação SetEventCallback para configurar os callbacks de eventos. No parâmetro CallbackQueueName, especifique o nome da fila criada na Etapa 1.

  3. Monitore a fila de mensagens da Etapa 1 e processe as mensagens recebidas. O código abaixo serve como exemplo.

    Nota

    A versão do SDK do servidor no exemplo a seguir é apenas para referência. Para obter a versão mais recente, consulte SDK do Servidor.

    <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();
        }
    }