Transcreva mensagens de voz no Node.js com o Twilio Functions

April 15, 2021
Escrito por
Revisado por

Transcreva mensagens de voz no Node.js com o Twilio Functions

Neste tutorial, você usará a Twilio Programamble Voice para receber chamadas telefônicas no número de telefone da Twilio e transcrever qualquer mensagem de voz deixada por quem ligou. Este guia pode ser usado como base para criar seu próprio sistema de correio de voz.

Pré-requisitos

Para começar este tutorial, você precisa de:

Crie um novo serviço de funções da Twilio

Na Twilio, você pode configurar um webhook que transferirá todas as chamadas recebidas para o número de telefone da Twilio.

Você precisará de um local para hospedar o código do webhook, que pode ser o seu servidor ou um aplicativo em execução local, mas para este tutorial você usará o Twilio Functions. O Twilio Functions é um ambiente sem servidor que permite implantar serviços de back-end sem a sobrecarga de configurar um servidor.

Para configurar um novo serviço do Functions, visite a seção Functions no console da Twilio. Lá, clique no botão Create service (Criar serviço). Um serviço do Functions é um contêiner exclusivo para funções, ativos e ambientes relacionados.

Ao clicar em Create service (Criar serviço), você precisará inserir um nome qualquer. Neste campo, digite "serviço de transcrição". Depois de inserir o nome, clique no botão Next (Avançar). Isso o levará ao editor para o seu novo serviço.

Na parte superior da página, clique no botão azul Add + (Adicionar +) e selecione Add Function (Adicionar função). Dê o nome /transcribe-call para a função.

Você poderá editar sua função no editor de texto à direita.

Exclua qualquer código preenchido automaticamente dentro de sua nova função e substitua-o pelo seguinte:

exports.handler = function(context, event, callback) {
  let twiml = new Twilio.twiml.VoiceResponse();
  
  twiml.record({
    transcribeCallback: '/transcription'
  });
  
  return callback(null, twiml);
};

Antes de me aprofundar no verbo <Record> TwiML, é importante mencionar que a gravação de chamadas telefônicas ou mensagens de voz tem uma série de considerações jurídicas e você deve garantir que está seguindo as leis locais, estaduais e federais ao fazer qualquer gravação.

O código acima primeiro cria uma nova variável chamada twiml, que contém uma referência a um novo objeto TwiML Voice Response.

TwiML, que significa Twilio Markup Language, é um XML, que tem marcas especiais definidas pela Twilio. Você pode usar o TwiML para informar à Twilio como lidar com uma chamada telefônica ou SMS recebido. Em vez de escrever XML, você também pode escrever TwiML programaticamente, que é o que você está fazendo nesta função.

Depois de criar a variável twiml, este código diz "Certo, Twilio, pode gravar o que for dito!". <Record> é um dos inúmeros verbos TwiML. Os verbos TwiML informam à Twilio quais ações realizar, e essas ações podem ser personalizadas fornecendo o verbo com certos parâmetros chamados atributos.

O verbo <Record> criará uma gravação de áudio de tudo o que o autor da chamada disser depois que a chamada se conectar e poderá ser modificado com uma série de atributos diferentes. Os atributos mais relevantes para este tutorial são transcribe e transcribeCallback.

transcribe é um atributo opcional que, quando incluído e definido como true, dirá à Twilio para criar uma transcrição de voz para texto de qualquer mensagem deixada pelo autor da chamada, com a ressalva de que a mensagem deve ter entre 2 e 120 segundos de duração. Isso significa que algumas mensagens muito curtas e muito longas não serão transcritas, embora as gravações de áudio reais da mensagem não sejam afetadas.

O conteúdo da transcrição será armazenado pela Twilio para você e poderá ser acessado por meio da API de transcrição.

Como alternativa, você pode retornar a chamada de transcrição para o verbo <Record> que será executado quando a transcrição for concluída. Neste retorno da ligação, você pode acessar o conteúdo da transcrição e executar uma ação nele, como salvá-lo em um banco de dados ou imprimi-lo em uma página da Web.

Se você usar o atributo transcribeCallback, você não precisará incluir o atributo transcribe: true. Tudo isso é o que você está vendo no código acima, nas linhas 4-6.

Isso leva você para a próxima etapa: criar a função de retorno de chamada de transcrição.

Adicione a função de retorno de chamada de transcrição

Pressione o botão Save (Salvar) no editor do Functions e adicione uma nova função clicando novamente no botão Add + (Adicionar +) na parte superior do editor.

Dê a esta função o nome /transcription.

Exclua qualquer código que foi preenchido automaticamente em sua função e substitua-o pelo seguinte:

exports.handler = function(context, event, callback) {
  const transcription = event.TranscriptionStatus == 'failed' ? 'No transcription available' : event.TranscriptionText;
  console.log(transcription)

  // do something with transcription text here
  
  return callback(null);
}

Todos os dados sobre a transcrição estão disponíveis no objeto event.

No código acima, a função verifica se TranscriptionStatus corresponde a failed. Nesse caso, ele atribui a string No transcription available a uma variável chamada transcription.

Se a transcrição foi bem-sucedida, esse código atribui o conteúdo real da transcrição, event.TranscriptionText a variável transcription. Depois, ele registra o valor transcription.

Clique no botão Save (Salvar) e depois clique em Deploy All (Implementar tudo) na parte inferior do editor.

Captura de tela do editor de funções mostrando as duas funções e o código interno

Configure o webhook para o número de telefone da Twilio

Não feche o editor do Functions e, em uma nova guia, visite a Seção de números de telefone da Twilio do console.

Localize na lista o número de telefone que você está usando neste tutorial e clique nele para abrir a página de configuração desse número.

Role para baixo até ver uma seção chamada Voice & Fax (Voz e fax).

Faça os seguintes ajustes nas informações mostradas nesta seção:

  • Para Aceitar recebimento, selecione Voice Calls (Chamadas de voz)
  • Para Configurar com, selecione Webhooks, TwiML Bins, Functions, Studio ou Proxy
  • Para Receber uma chamada, selecione Function (Função)
  • Para Serviço, selecione /transcribe-call 
  • Em Ambiente, selecione ui
  • Para Caminho da função, selecione /call 

Captura de tela mostrando a configuração de webhook do número de telefone da Twilio

Depois de fazer essas alterações, clique no botão Save (Salvar) e volte para a guia com o editor do Functions.

Teste seu aplicativo

De volta ao editor do Functions, verifique se a opção Enable Live Logs (Habilitar registros ativos) está ativada na parte do console do editor.

Captura de tela mostrando os registros ao vivo ativados

Ligue para o número de telefone da Twilio com seu telefone pessoal. Você ouvirá um bipe e poderá falar no telefone e dizer algumas palavras. Certifique-se de falar por pelo menos alguns segundos para garantir que haja conteúdo suficiente para que a transcrição seja acionada. Depois de deixar sua mensagem, desligue a chamada.

Enquanto você faz isso, fique de olho na parte do console do editor de funções. Pode demorar alguns segundos, mas em breve você verá o texto de transcrição registrado no console.

Parabéns. Agora que você aprendeu a gravar transcrições, o que fará em seguida? Conte para a gente no Twitter!

Este artigo foi traduzido do original "Transcribe a Voice Message in Node.js with Twilio Functions". Enquanto melhoramos nossos processos de tradução, adoraríamos receber seus comentários em help@twilio.com - contribuições valiosas podem render brindes da Twilio.