Gravação e transcrição de chamadas
Visão geral
A Voice API da Vonage oferece a possibilidade de gravar o áudio das chamadas de várias maneiras. Você pode:
- Gravar uma ligação entre duas pessoas de forma passiva, como se fosse um “monitoramento”.
- Grave o áudio de um único interlocutor quando ele for solicitado a fazê-lo. Por exemplo, em um sistema de correio de voz.
- Ativar a gravação de uma conversa específica (usando a ação de conversa).
Por padrão, todas as gravações são em formato mono, com todas as partes da conversa em um único canal.
A Vonage também oferece um gravação dividida Recurso em que o áudio será salvo como um arquivo estéreo. Nesse caso, o áudio falado pelo autor da chamada inicial ficará no canal esquerdo, e o áudio ouvido por ele ficará no canal direito. Isso costuma ser útil para enviar a sistemas de transcrição, quando se deseja identificar quem disse o quê.
Para gravar uma conversa, você pode usar o record ação em um NCCO. A gravação funcionará de maneira diferente dependendo de como você configurar a ação. Para obter mais informações sobre como configurar uma gravação, consulte o registrar referência NCCO
Assim que o record Quando a ação terminar, a Vonage enviará um webhook para o eventUrl que você especificou ao configurar o record ação. Este webhook contém uma URL na qual o arquivo de gravação pode ser baixado. Para baixar o arquivo de gravação, você precisará se autenticar com um JWT assinado pela mesma chave de aplicativo que criou a gravação.
Transcrição de chamadas também está disponível; a Vonage enviará um webhook para um eventUrl assim que a transcrição estiver concluída. Esse webhook contém uma URL na qual a transcrição pode ser acessada. Da mesma forma que na gravação, você precisará se autenticar. Observe que esse é um recurso pago; as tarifas exatas podem ser consultadas na Preços da Voice API página na seção “Recursos programáveis”.
NOTA: Após a conclusão da gravação, ela fica armazenada pela Vonage por 30 dias antes de ser excluída automaticamente
Gravação síncrona
A record a ação será concluída quando o endOnSilence o tempo limite foi atingido, ou o endOnKey a chave é enviada ou o timeout for atingido. Nesse momento, a gravação será encerrada e um evento de gravação será enviado para o seu event_url antes que a próxima ação seja executada. Isso é utilizado em situações semelhantes às do correio de voz.
Gravação assíncrona
Se nenhuma das endOnSilence, endOnKey ou timeout Se essa opção estiver definida, a gravação funcionará de maneira assíncrona e passará instantaneamente para a próxima ação, sem interromper a gravação da chamada. A gravação só será encerrada e o evento relevante será enviado quando a chamada for encerrada. Isso é utilizado em cenários semelhantes ao monitoramento de chamadas.
Ao gravar uma conversa nomeada, a gravação é sempre assíncrona e está vinculada ao ciclo de vida da conferência. Para gravar uma conferência, é necessário definir o record atribuir a true no seu conversation ação no NCCO.
Gravação dividida
Ao gravar uma chamada, você pode ativar a gravação dividida, o que fará com que a gravação seja um arquivo estéreo, em que um canal contém o áudio enviado pelo interlocutor e o outro canal contém o áudio ouvido pelo interlocutor.
Gravação multicanal
Ao gravar uma chamada, você pode ativar a gravação multicanal, que permite que até 32 trechos da chamada sejam gravados separadamente. Será gerado um único arquivo com o número de canais definido.
Neste exemplo, iniciamos uma gravação multicanal que prevê três participantes (channels: 3), e em seguida conecta mais dois números à conversa. Cada participante aparecerá em seu próprio canal na gravação.
Para obter mais informações sobre o record ação, consulte o Referência NCCO
[
{
"action": "record",
"eventUrl": ["https://example.com/recordings"],
"split": "conversation",
"channels": 3
},
{
"action": "connect",
"eventUrl": ["https://example.com/events"],
"from":"447700900000",
"endpoint": [
{
"type": "phone",
"number": "447700900001"
}
]
},
{
"action": "connect",
"eventUrl": ["https://example.com/events"],
"from":"447700900000",
"endpoint": [
{
"type": "phone",
"number": "447700900002"
}
]
}
]
Se você tiver adicionado outro connect Nessa configuração do NCCO, os dois primeiros participantes apareceriam em seus próprios canais, enquanto os participantes três e quatro apareceriam juntos no canal 3. Nesse cenário, seria necessário aumentar o número de canais para 4, a fim de que cada participante tivesse seu próprio canal. É possível ter até 32 participantes em uma única conversa.
Formatos de arquivo
- O Vonage suporta gravações nos formatos MP3, OGG ou WAV; o padrão é o MP3 (ou WAV para gravações com mais de 2 canais).
- Os arquivos MP3 são gravados com profundidade de 16 bits e taxa de amostragem de 16 kHz. Eles são codificados com uma taxa de bits constante de 32 Kbps.
- Os arquivos WAV são gravados com profundidade de 16 bits e taxa de amostragem de 16 kHz.
Todos os formatos são mono por padrão. Se a gravação dividida estiver ativada, é criado um arquivo estéreo em que cada canal utiliza a profundidade de bits e as taxas de amostragem mencionadas anteriormente.
Transcrição
Se o transcription Se essa opção estiver ativada, a gravação será transcrita usando o valor padrão para language, en-US:
[
{
"action": "record",
"eventUrl":["https://example.com/recording"],
"transcription": {}
}
]
Observação: há um limite máximo de 2 horas para a transcrição de chamadas de voz.
Além disso, esse é um recurso pago; as tarifas exatas podem ser consultadas no Preços da Voice API página na seção “Recursos programáveis”.
Usando as configurações de transcrição, você pode definir uma eventUrl e language pelas suas transcrições. Você pode encontrar mais informações no Referência NCCO. Você também pode optar por realizar uma análise de sentimento em cada segmento da gravação da chamada.
[
{
"action": "record",
"eventUrl":["https://example.com/recording"],
"transcription":
{
"eventMethod": "POST",
"eventUrl":["https://example.com/transcription"],
"language": "en-US",
"sentimentAnalysis": "true"
}
}
]
Assim que a transcrição estiver concluída, você receberá uma notificação na sua gravação eventUrl. Se uma gravação eventUrl Se não for especificado, o webhook será enviado para o seu aplicativo eventUrl:
{
"conversation_uuid": "CON-aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
"recording_uuid": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
"status": "transcribed",
"transcription_url": "https://api.nexmo.com/v1/files/bbbbbbbb-aaaa-cccc-dddd-0123456789ab",
"type": "record"
}
Usando o transcription_url Você pode enviar uma solicitação GET para recuperar a transcrição. Será necessário se autenticar com um JWT assinado pela mesma chave de aplicativo que criou a gravação. A resposta do transcription_url conterá as frases e uma análise detalhada, palavra por palavra, com suas respectivas pontuações de confiança e de análise de sentimento:
{
"ver": "1.0.19",
"request_id": "6226182254ce513117079b58",
"channels": [
{
"transcript": [
{
"sentence": "Transcription example test.",
"timestamp": 9630,
"duration": 2642,
"action_items": [],
"questions": [],
"answers": [],
"raw_sentence": "transcription example test",
"words": [
{
"word": "transcription",
"start_time": 9630,
"end_time": 10887,
"confidence": 1
},
{
"word": "example",
"start_time": 10952,
"end_time": 11726,
"confidence": 0.990055
},
{
"word": "test",
"start_time": 11728,
"end_time": 12272,
"confidence": 0.486845
}
],
"sentiments": [
{
"text_part": "transcription example test",
"score": 0.1213
}
]
}
],
"duration": 16.2
}
]
}