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
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. |