Vídeo ao vivo

Informações multimídia, como vídeo ao vivo, podem ser úteis para os atendentes de emergência em situações críticas. Exemplo:

  • Incidentes com carros: um vídeo ao vivo da cena pode ajudar a entender os veículos envolvidos.
  • Incêndios: para entender a extensão do incêndio e os danos.
  • Emergências médicas: orientar os usuários sobre RCP para salvar vidas.

Agora, o ELS pode interceptar um SMS iniciado por um atendente solicitando vídeo ao vivo de um usuário e apresentar uma experiência de vídeo integrada. Como esse recurso é especificamente para situações de emergência, a permissão da câmera é concedida previamente durante a emergência.

Nossos principais objetivos com esse recurso são oferecer aos usuários:

  • experiência de vídeo ao vivo sem atrito e sem permissões complexas
  • experiência consistente para todos os usuários do Android

Como funciona

O fluxo de vídeo ao vivo do ELS, mostrando como uma ligação ou mensagem de texto de emergência de um usuário do Android aciona o ELS, incluindo um novo token de vídeo ao vivo. Quando o software de atendimento de chamadas detecta esse token e o envia de volta ao usuário do Android em uma mensagem SMS com um link para um fluxo de vídeo WebRTC ao vivo, o ELS pode oferecer uma experiência de vídeo integrada.

Guia de integração

1. Recepção

Depois de atualizar a configuração do ELS para ativar o vídeo ao vivo, você vai começar a receber o campo live_video_token nas mensagens HTTPS do ELS quando o smartphone de um usuário for compatível com o recurso. O recurso é compatível com dispositivos Android 8 Oreo e versões mais recentes.

O token é um ID gerado no dispositivo que muda a cada chamada ou texto e consiste em:

  • 6 caracteres aleatórios
  • Alfanuméricos
  • Maiúsculo

2. Convite

Ao detectar o token, transmita-o no URL, como um parâmetro de URL, no SMS que contém o link para seu stream de vídeo. Por exemplo: https://example.com/live?token=AFZ791. O ELS vai detectar mensagens SMS recebidas durante ligações ou mensagens de texto de emergência e procurar o token de vídeo ao vivo correspondente, neste caso: AFZ791.

Quando o dispositivo detecta um URL e um token válidos, o usuário recebe uma caixa de diálogo perguntando se ele quer aceitar a solicitação. Se eles clicarem em Accept, o link enviado na sua solicitação por SMS será aberto em uma experiência de visualização da Web integrada.

3. Experiência de vídeo ao vivo

O link do seu vídeo ao vivo precisa ser compatível com duas experiências:

A. Experiência baseada em navegador da Web:

Isso pode incluir sua própria interface personalizada, por exemplo:

  • Botões
  • Solicitações de local
  • Caixas de diálogo e consentimentos

B. Experiência integrada:

Para isso, você precisa:

  • Remova todos os botões, já que os eventos de toque não vão funcionar.
  • Inicie diretamente no stream de vídeo sem caixas de diálogo

Detecção

Para detectar o modo integrado, observe o user agent que contém Live.

Exemplo de user agent em uma experiência de navegador para dispositivos móveis: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36

Exemplo de user agent em uma experiência de visualização da Web integrada: Mozilla/5.0 (Linux; Android 10; K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/125.000 Mobile Safari/537.36 Live/25.23.10

Em JavaScript, isso pode ser feito com o seguinte:

if (navigator.userAgent.includes("Live")) {
    <!-- Render integrated experience -->
} else {
    <!-- Render your your own custom UI -->
}

Permissões

  • A permissão para a câmera precisa ser concedida previamente para o vídeo ao vivo integrado. Solicite essas permissões normalmente usando JavaScript.
  • As permissões de localização, áudio e outras serão rejeitadas automaticamente.

Ganchos

Para oferecer a melhor experiência do usuário, a experiência integrada vai fornecer os elementos da interface para virar a câmera e ativar/desativar a lanterna.

Nome da função Retornar Descrição
Câmera switchCamera Promise<bool> Ao carregar, comece com a câmera traseira (modo de frente = ambiente), já que ela é mais útil em situações de emergência. Alterna entre as câmeras disponíveis sempre que a função é chamada. Retorne true se a troca de câmera for bem-sucedida.
Lanterna toggleFlashlight Promise<bool> Ativar e desativar a lanterna sempre que a função for chamada. Retorna true se a alternância da lanterna for bem-sucedida.
Lanterna isFlashlightAvailable bool Retorna true ou false, dependendo da disponibilidade da lanterna para o modo de câmera atual. Depois de uma chamada para switchCamera, pressupõe que o valor de retorno reflita o estado de disponibilidade atualizado assim que a Promise do switchCamera for resolvida.
Lanterna isFlashlightOn bool Retorna true quando a lanterna está ligada e false caso contrário. Depois de uma chamada para toggleFlashlight, pressupõe que o valor de retorno reflita o estado atualizado da lanterna assim que a Promise de toggleFlashlight for resolvida.