Todos os produtos
Search
Central de documentação

ApsaraVideo Live:CreateEventSub

Última atualização: Jul 15, 2026

Cria um callback para assinar mensagens de canal.

Descrição da operação

Cria um callback para assinar mensagens de canal. Por exemplo, ao criar um callback, você pode configurar parâmetros como a URL de callback e os tipos de evento.

Limite de QPS

O limite de QPS por usuário único para esta operação é de 100 chamadas por segundo. Se o limite for excedido, as chamadas de API serão limitadas, o que pode afetar seus negócios. Chame esta operação adequadamente.

Experimente agora

Experimente esta API no OpenAPI Explorer, sem necessidade de assinatura manual. Chamadas bem-sucedidas geram automaticamente código SDK correspondente aos seus parâmetros. Faça o download com segurança de credenciais integrada para uso local.

Testar

Autorização RAM

A tabela abaixo descreve a autorização necessária para chamar esta API. Você pode defini-la em uma política do Resource Access Management (RAM). As colunas da tabela estão detalhadas abaixo:

  • Ação: As ações que podem ser usadas no elemento Action das instruções de política de permissão do RAM para conceder permissões para executar a operação.

  • API: A API que você pode chamar para executar a ação.

  • Nível de acesso: O nível de acesso predefinido concedido para cada API. Valores válidos: create, list, get, update e delete.

  • Tipo de recurso: O tipo de recurso que suporta autorização para executar a ação. Indica se a ação suporta permissão em nível de recurso. O recurso especificado deve ser compatível com a ação. Caso contrário, a política será ineficaz.

    • Para APIs com permissões em nível de recurso, os tipos de recursos obrigatórios são marcados com um asterisco (*). Especifique o Nome de Recurso Alibaba Cloud (ARN) correspondente no elemento Resource da política.

    • Para APIs sem permissões em nível de recurso, é exibido como Todos os Recursos. Use um asterisco (*) no elemento Resource da política.

  • Chave de condição: As chaves de condição definidas pelo serviço. A chave permite controle granular, aplicando-se somente a ações ou a ações associadas a recursos específicos. Além das chaves de condição específicas do serviço, o Alibaba Cloud fornece um conjunto de chaves de condição comuns aplicáveis a todos os serviços compatíveis com RAM.

  • Ação dependente: As ações dependentes necessárias para executar a ação. Para concluir a ação, o usuário RAM ou a função RAM deve ter permissões para executar todas as ações dependentes.

Ação

Nível de acesso

Tipo de recurso

Chave de condição

Ação dependente

live:CreateEventSub

none

*Rtc.

acs:live::{#accountId}:rtc/{#AppId}

Nenhuma Nenhuma

Parâmetros da solicitação

Parâmetro

Tipo

Obrigatório

Descrição

Exemplo

AppId

string

Sim

O ID do aplicativo a ser assinado. Você pode visualizar os IDs dos seus aplicativos navegando até ApsaraVideo Live > Live+ > ApsaraVideo Real-time Communication > Gerenciamento de Aplicativos. Se nenhum aplicativo existir, crie um clicando em [Criar Aplicativo].

9qb1****

ChannelId

string

Não

O ID do canal a ser assinado. Você pode chamar a operação ListEventSub para consultar os IDs dos canais assinados.

Nota
  • Se o parâmetro Users.N não estiver vazio, este parâmetro é obrigatório.

  • Se ChannelId estiver definido como * ou deixado vazio, todos os canais serão assinados. Cada AppId permite apenas uma assinatura de todos os canais.

  • Cada AppId permite no máximo 20 assinaturas simultaneamente.

123333

Users

array

Não

Os usuários cujas mensagens você deseja assinar. Se este parâmetro estiver vazio, todos os usuários no canal (incluindo streamers e espectadores) serão assinados. Formato:

Users.1=****
Users.2=****
......

string

Não

O ID do usuário.

user1

Events

array

Sim

Os eventos de assinatura.

string

Sim

O evento de assinatura. Valores válidos:

  • ChannelEvent: evento de canal.

  • UserEvent: evento de usuário dentro de um canal.

ChannelEvent

CallbackUrl

string

Sim

A URL de callback. Para o conteúdo do callback, consulte os exemplos de conteúdo de callback abaixo.

http://****.com/callback

Callback

O exemplo a seguir mostra o conteúdo que é retornado via callback para o usuário através da CallbackUrl especificada:

Request:

POST /callbackURL

Body
application/json

{
    "MsgId": "Message ID",
    "MsgTimestamp": 12312324, // Unix timestamp when the message is sent
    "SubscribeID": "Subscription ID",
    "AppId":"",     // The AppId that generated this message 
    "ChannelID":"", // The channel that generated this message
    "Contents": [
      {
        "Event": "UserEvent",// Subscription event: user event within a channel
        "UserEvent": {
          "UserId": "80331631628*****",    // User ID
          "EventTag": "Publish",    // Event, including Join, Leave, Publish, Unpublish, Roleupdate
          "SessionId": "0dr15rrnhkz0jnvz6o8sxo0*****", // The SessionID that generated this event
          "Timestamp": 1609854786,    // Unix timestamp when the event occurred
          "Reason": 1, // Reason for joining or leaving. Only available for Join events.
          "Role": 1, //  Role type: streamer or viewer
          "CurrentMedias":"1,2,3"// Stream type: the streams published by the user
        }
      },
      {
        "Event": "ChannelEvent",// Subscription event: channel event
        "ChannelEvent": {
          "ChannelId": "88888****",
          "EventTag": "Open",   // Channel event, including Open and Close
          "Timestamp": 1609854530 // Unix timestamp when the event occurred
        }
      }
   ]
}

Response 
HTTP STATUS 200

UserEvent

ParâmetroTipoObrigatórioDescrição
UserIdstringSimO ID do usuário.
SessionIdstringSimO ID da sessão do usuário.
EventTagstringSimO tipo de evento. Valores válidos:
Join: entra no canal.
Leave: sai do canal.
PublishVideo: começa a publicar um fluxo de vídeo.
PublishAudio: começa a publicar um fluxo de áudio.
PublishScreen: começa o compartilhamento de tela.
UnpublishVideo: para de publicar um fluxo de vídeo.
UnpublishAudio: para de publicar um fluxo de áudio.
UnpublishScreen: para o compartilhamento de tela.
Roleupdate: altera a função.
TimestampnumberSimO timestamp de quando o evento ocorreu.
ReasonintegerSimO motivo para entrar ou sair (disponível apenas para eventos Join). Valores válidos:
1: entrada ou saída normal.
2: entrada por reconexão (o usuário já existe no canal e entra novamente).
3: retransmissão entre canais.
4: saída por tempo limite.
5: o usuário inicia uma nova sessão e a sessão atual é forçada a ficar offline.
6: expulso.
7: canal encerrado.
RoleintegerSimO tipo de função. Valores válidos:
1: streamer.
2: espectador.
CurrentMediasintegerSimO tipo de fluxo. Valores válidos:
1: áudio.
2: vídeo.
3: compartilhamento de tela.

ChannelEvent

ParâmetroTipoObrigatórioDescrição
EventTagstringSimO tipo de evento. Valores válidos:
Open: a reunião começa.
Close: a reunião termina.
TimestampnumberSimO timestamp de quando o evento ocorreu.

Autenticação de callback

O recurso de autenticação de callback de eventos está ativado por padrão. A lógica de autenticação é a seguinte:

  • Quando o ApsaraVideo Live inicia uma solicitação de callback, o cabeçalho da solicitação HTTP(S) contém os campos Ali-Rtc-Timestamp e Ali-Rtc-Signature para que o servidor receptor de mensagens de callback realize a autenticação de assinatura. O valor Ali-Rtc-Timestamp é calculado da seguinte forma: Ali-Rtc-Signature=MD5SUM(MD5CONTENT), onde MD5CONTENT=Nome de domínio de callback|Valor Ali-Rtc-Timestamp|Chave de Autenticação. O nome de domínio de callback é o nome de domínio configurado na URL de callback, e a Chave de Autenticação é a AppKey gerada quando o AppId foi criado.

  • Quando o servidor receptor de mensagens de callback recebe uma mensagem de callback, ele concatena o nome de domínio de callback, o valor Ali-Rtc-Timestamp e a Chave de Autenticação, calcula o valor MD5 para obter uma string criptografada e, em seguida, compara a string criptografada calculada com o valor do campo Ali-Rtc-Signature no cabeçalho da solicitação HTTP(S) iniciado pelo ApsaraVideo Real-time Communication. Se não coincidirem, a solicitação é inválida.

Nova tentativa em caso de exceção de callback

Quando o Alibaba Cloud inicia uma solicitação de callback, o callback é considerado bem-sucedido somente quando seu servidor de negócios responde com o código de status HTTP 200. Se o callback falhar, o Alibaba Cloud tentará novamente 7 vezes em intervalos de 1 segundo, 2 segundos, 5 segundos, 10 segundos, 1 minuto, 2 minutos e 5 minutos. Cada nova tentativa gera um registro de callback correspondente.

Tratamento de exceções

Os clientes que entraram em um canal ou estão publicando fluxos mantêm um mecanismo de keep-alive de heartbeat com o servidor do Alibaba Cloud. Quando o keep-alive de heartbeat falha porque o cliente perde a conectividade de rede ou o aplicativo é fechado anormalmente (a falha é determinada se nenhum heartbeat for recebido do cliente por 90 segundos), o servidor determina que o cliente atingiu o tempo limite e saiu anormalmente, e gera callbacks de evento para o usuário parar a publicação de fluxo e sair do canal.

Elementos de resposta

Elemento

Tipo

Descrição

Exemplo

object

Esquema da resposta.

RequestId

string

O ID da solicitação.

760bad53276431c499e30dc36f6b****

SubscribeId

string

O ID da assinatura criada.

ad53276431c****

Exemplos

Resposta de sucesso

JSON formato

{
  "RequestId": "760bad53276431c499e30dc36f6b****",
  "SubscribeId": "ad53276431c****"
}

Códigos de erro

Código de status HTTP

Código de erro

Mensagem de erro

Descrição

400 InputInvalid %s. Os parâmetros de entrada são inválidos.
400 QuotaLimitError %s. Cada AppId permite no máximo 20 assinaturas simultâneas, e apenas uma assinatura de canal completo é permitida.
400 ErrorInvalidCallBackUrl %s. O CallBackURL é inválido. Verifique o valor e tente novamente.
500 ServerError %s. Ocorreu um erro desconhecido. Tente novamente mais tarde ou abra um ticket.
403 NoAuth %s. Você não tem as permissões necessárias.
404 ResourceNotExist %s. O recurso solicitado não existe. Verifique a solicitação e tente novamente.

Consulte Códigos de Erro para uma lista completa.

Notas de versão

Consulte Notas de Versão para uma lista completa.