You are viewing the Portuguese (Brazil) site, but your language preference is set to English. Switch to English site →

Menu

Reprodução segura de gravações a partir do armazenamento personalizado

Você pode gerenciar o acesso do usuário às gravações de chamadas do Flex Insights de acordo com suas próprias necessidades.

Se você armazena gravações de chamadas fora da Twilio, pode usar esse recurso para:

  • Criar uma autorização personalizada de usuários.
  • Registrar o acesso do usuário a gravações individuais.
  • Descriptografar gravações criptografadas da Twilio através de sua chave pública (usando sua chave privada).

Você pode usar o atributo url_provider ao anexar a mídia personalizada. O Flex Insights Player envia uma solicitação à URL para pedir o link real para a gravação. Seu serviço na URL fornecida pode então executar qualquer operação de autorização antes de fornecer o link. O link deve conter qualquer informação de autorização, como um token com tempo limitado, token de uso único, etc.

Você pode apontar o Player para um serviço padrão, como S3 da AWS. Ou você pode apontar o Player para um serviço personalizado que pode executar operações adicionais antes de transmitir o áudio real. Por exemplo, descriptografar do áudio.

Adicionar o link ao seu serviço

O valor do atributo url_provider é um link para seu serviço de API. O serviço precisa validar o token JWE do Flex e fornecer o link para a gravação. O link deve conter um identificador da gravação que seu serviço entende para que possa apontar o Player para a gravação correta.

Exemplo da estrutura de atributos do TaskRouter para link de voz no nível da tarefa:

{
  "task_attributes": {
    "conversations": {
      "media": [
        {
          "type": "VoiceRecording",
          "url_provider": "https://your_domain/?recording=RExxxxxxxxxxxxxxxxx"
        }
      ]
    }
  }
}

Você também pode usar o atributo url_provider no nível da reserva conforme descrito em Mídia personalizada anexada ao Conversations. Você pode ter mídias diferentes anexadas a segmentos individuais de uma conversa.

O Speech Analytics Essentials não pode analisar gravações armazenadas externamente. Métricas como tempo de conversação do agente, tempo de conversação do cliente, tempo de silêncio e tempo de interferência não darão nenhum resultado no Flex Insights.

Solicitação do Flex Insights Player para seu serviço

Ao abrir uma gravação do Flex Insights, o Player chama a URL da API fornecida como o valor do atributo url_provider. O Player adiciona o token JWE do Flex ao cabeçalho de autorização. O token é codificado com Base64.

Exemplo de solicitação:

GET /sec_rec?recording_sid=RExxxxxxxxxxxxxxxxxxxxxxx HTTP/1.1
Host: your_domain
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Authorization: Basic dG9rZW46ZXlKNmFYQWlPaUpFUlVZaUxDSnJhV1FpT2lKVFFWTmZVek1==
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36
Accept: */*
Origin: https://flex.twilio.com
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9,cs;q=0.8

Lidar com a solicitação do Player em seu serviço

Para ativar a reprodução, seu serviço de API deve:

  1. Validar o token JWE do Flex fornecido pelo Player no cabeçalho de autorização. A validação garante que o usuário tenha uma sessão Flex válida.
  2. Retornar o link 'media_url' para o arquivo de áudio da gravação. O Player usa esse link para recuperar a gravação real.

Validar o token JWE do Flex

O token JWE do Flex é enviado no seguinte formato:

Basic ${Buffer.from(`token:${flexJWE}`).toString('base64')}

O token JWE do Flex é codificado com Base64. Seu serviço precisa decodificar o token e, em seguida, usar o Twilio Flex Token Validator em uma função da Twilio ou em qualquer aplicativo NodeJS. Como alternativa, você pode usar a API da Twilio para validar o token.

Exemplo de validação de token em Python:

    header_raw = request.headers.get('Authorization')
    header_decoded = b64decode(header_raw.split()[1]).decode()
    token = header_decoded.split(':')[1]

    url = "https://iam.twilio.com/v1/Accounts/{}/Tokens/validate".
format(TWILIO_ACCOUNT_SID)
    headers = {
        "content-type": "application/json",
        "cache-control": "no-cache",
        "Authorization": header_raw
    }
    payload = {"token": token}
    response = requests.post(url, data=json.dumps(payload), headers=headers)

O resultado do token validado contém os seguintes dados:

{
  "valid": true,
  "code": 0,
  "message": null,
  "expiration": "2018-09-24T23:22:44.240Z",
  "realm_user_id": "user@example.com",
  "identity": "user_40example_2Dcom",
  "roles":[
    "agent"
  ],
  "worker_sid": "WKxxx"
}

Retornar o link para a gravação

O Flex Insights Player espera uma resposta contendo um link direto para a mídia no seguinte formato:

{
  "media_url": "https://link/to/recording"
}

Resolução de problemas

Enquanto ouve uma gravação, abra a guia Developed Tools (Ferramentas do desenvolvedor) > Network (Rede) no seu navegador. Confirme se o navegador solicitou 'url_provider' e 'media_url'.

Secure_troubleshooting.png

Classifique esta página:

Precisa de ajuda?

Às vezes, todos nós precisamos; a programação é difícil. Receba ajuda agora da nossa equipe de suporte, ou confie na sabedoria da multidão navegando pelo Stack Overflow Collective da Twilio ou buscando a tag Twilio no Stack Overflow.

Obrigado pelo seu feedback!

Selecione o(s) motivo(s) para seu feedback. As informações adicionais que você fornece nos ajudam a melhorar nossa documentação:

Enviando seu feedback...
🎉 Obrigado pelo seu feedback!
Algo deu errado. Tente novamente.

Obrigado pelo seu feedback!

Indique‑nos e obtenha USD10 em 3 etapas simples!

Etapa 1

Obtenha o link

Obtenha um link de indicação pessoal gratuito aqui

Etapa 2

Dê USD10

Seu usuário se inscreve e faz a atualização usando o link

Etapa 3

Obtenha USD10

1.250 mensagens SMS grátis
OU 1.000 min de voz grátis
OU 12.000 chats
OU mais