Correio de voz

Introdução

O Voice API da Vonage é a maneira mais fácil de criar aplicativos de voz de alta qualidade na nuvem. Neste guia, você aprenderá a gravar áudio de chamadas recebidas usando .NET e a Voice API da Vonage.

Este guia traz instruções passo a passo que mostram como:

  1. Criar um account na Vonage
  2. Criar uma aplicação da Vonage
  3. Configurar uma aplicação da Vonage
  4. Criar um aplicativo ASP.NET Core
  5. Adicione o pacote da Vonage a ele
  6. Receber uma ligação e gravá-la
  7. Recuperar a gravação da Vonage

Pré-requisitos

Existem alguns pré-requisitos que você precisa cumprir antes de seguir este guia. Se você já tiver cumprido algum deles, fique à vontade para pular essa etapa.

Criar Account na Vonage

Você pode criar um account na Vonage pelo Painel de controle. No Painel de Controle, você pode criar Applications e adquirir Numbers da Vonage. Você também pode realizar essas tarefas usando o CLI da Vonage.

Instale o CLI da Vonage

O CLI da Vonage permite que você execute diversas operações na linha de comando. Entre os exemplos estão a criação de Applications, a compra de Numbers e a vinculação de um número a uma Application.

Para instalar a CLI com o NPM, execute:

npm install --location=global @vonage/cli

Configure o CLI da Vonage para usar sua chave API e seu segredo API da Vonage. Você pode obtê-los no página de configurações no Painel.

Execute o seguinte comando em um terminal, substituindo API_KEY e API_SECRET com o seu próprio:

vonage config:set --apiKey=API_KEY --apiSecret=API_SECRET

Como executar o Ngrok

Você deve tornar seu webhook acessível às APIs da Vonage pela Internet pública. Uma maneira simples de fazer isso durante o desenvolvimento, sem precisar configurar seu próprio servidor, é usar Ngrok. Para saber mais, leia nossa documentação sobre o Ngrok.

Baixe e instale o ngrok e, em seguida, execute o comando a seguir para expor seu aplicativo na porta 3000 para a Internet pública:

./ngrok http 3000

Se você for um assinante pago, pode digitar:

./ngrok http 3000 -subdomain=your_domain

NOTA: Neste exemplo, o Ngrok redirecionará os webhooks do Vonage que você especificou ao criar seu aplicativo do Vonage para localhost:3000. Embora a porta 3000 seja mostrada aqui, você pode usar qualquer porta livre que seja conveniente.

Criar um aplicativo de voz

Existem dois métodos para criar um aplicativo Voice:

  1. Como usar a CLI da Vonage
  2. Como usar o painel

Cada um desses métodos é descrito nas seções a seguir.

Como criar um aplicativo de voz usando a CLI da Vonage

Para criar seu aplicativo usando a CLI da Vonage, digite o seguinte comando no shell, substituindo NGROK_HOST_NAME com o host do ngrok que você obteve ao configurar o ngrok:

vonage apps:create "AspNetTestApp" --voice_answer_url=http://NGROK_HOST_NAME/webhooks/answer --voice_event_url=http://NGROK_HOST_NAME/webhooks/events

Este comando cria uma aplicação da Vonage com recursos de voz capacidade. Ele configura as Applications com as URLs de resposta e de webhook de eventos e gera um arquivo de chave privada private.key, que você deve salvar no diretório do seu projeto.

O comando retorna um ID de aplicativo exclusivo. Use esse ID de aplicativo para vincular seu número virtual da Vonage ao seu aplicativo, executando o seguinte:

vonage apps:link APPLICATION_ID --number=VONAGE_NUMBER

Isso vinculará esse Número Virtual da Vonage ao seu aplicativo, fazendo com que todas as chamadas recebidas nesse número sejam encaminhadas para os URLs que você indicar.

Como criar um aplicativo de voz usando o Painel de Controle

Você pode criar Applications de voz no Painel de controle.

Para criar seu aplicativo usando o Painel:

  1. Sob Applications No Painel, clique no Criar um novo aplicativo botão.

  2. Sob Nome, digite o nome da Application. Escolha um nome que facilite a identificação futura.

  3. Clique no botão Gerar chave pública e chave privada. Isso criará um par de chaves pública/privada, e a chave privada será baixada pelo seu navegador. Salve a chave privada que foi gerada.

  4. Sob Recursos selecione o Voz botão.

  5. No URL da resposta na caixa, digite a URL do seu webhook de chamadas recebidas, por exemplo, http://example.com/webhooks/answer.

  6. No URL do evento na caixa, digite a URL do seu webhook de status de chamada, por exemplo, http://example.com/webhooks/events.

  7. Clique no Criar um novo pedido botão.

  8. Agora você será direcionado para a próxima etapa do procedimento de criação do aplicativo, na qual deverá vincular seu número da Vonage ao aplicativo.

Você já criou seu aplicativo.

NOTA: Antes de testar seu aplicativo, certifique-se de que seus webhooks estejam configurados e que seu servidor de webhooks esteja em funcionamento.

Criar o arquivo do projeto de voz

Para começar, você vai criar uma voz csproj arquivo. Para facilitar os testes, configure o Kestrel com o HTTPS desativado.

No seu terminal, execute o seguinte comando:

dotnet new mvc --no-https -n VonageVoice

Instalar o pacote da Vonage

Para instalar o pacote NuGet da Vonage, mude para o diretório VonageVoice repositório e execute o seguinte comando:

dotnet add package Vonage

Agora você pode abrir o VonageVoice.csproj arquivo no Visual Studio.

Nota: Este guia pressupõe que você esteja usando o Visual Studio. Como alternativa, você pode abrir o VonageVoice pasta no Visual Studio Code ou em outro editor, mas talvez você precise criar parte da estrutura que o Visual Studio gera para você.

Adicionar controlador de voz

Clique com o botão direito do mouse no Controllers pasta e selecione “Adicionar” → “Controlador”. Selecione “Adicionar controlador MVC vazio” e nomeie-o VoiceController.

Adicionar using declarações sobre Vonage.Voice, Vonage.Voice.Nccos, Vonage.Voice.Nccos.Endpoints, Vonage.Request, e Microsoft.Extensions.Configuration no início deste arquivo.

Injetar configuração

Injetar dependência em um IConfiguration objeto por meio do construtor:

private readonly IConfiguration _config { get; set; }

public VoiceController(IConfiguration config)
{
    _config = config;
}

Adicionar rota de resposta para correio de voz

Adicione uma rota ao seu VoiceController para atender a chamada recebida. Isso ficará localizado em /webhooks/answer e retornará um NCCO com um record ação que instrui a Vonage a iniciar a gravação da ligação.

Você também deve especificar a URL de outro webhook - /webhooks/recording - ao qual a Vonage enviará uma solicitação quando a gravação estiver pronta para download. Você programará esse webhook na próxima etapa.

[HttpGet("/webhooks/answer")]
public string Answer()
{
    var talkAction = new TalkAction
    {
        Text = "Hello, you have reached Steve's number," +
        " he cannot come to the phone right now. " +
        "Please leave a message after the tone."
    };
    var recordAction = new RecordAction
    {
        EndOnSilence = "3",
        BeepStart = "true",
        EventUrl = new[] { $"{Request.Scheme}://{Request.Host}/webhooks/recording" },
        EventMethod = "POST"
    };

    var ncco = new Ncco(talkAction, recordAction);
    return ncco.ToString();
}

Adicionar rota de gravação

Após o término da gravação da chamada, a Vonage enviará uma solicitação para a URL do webhook que você configurou no record ação no seu NCCO. Essa solicitação conterá a URL na qual você poderá baixar o arquivo de áudio.

Neste guia, você vai usar o GetRecording API para baixar a gravação para o seu computador:

[HttpPost("/webhooks/recording")]
public async Task<IActionResult> Recording()
{
    var appId = _config["APPLICATION_ID"];
    var privateKeyPath = _config["PRIVATE_KEY_PATH"];
    var credentials = Credentials.FromAppIdAndPrivateKeyPath(appId, privateKeyPath);
    var voiceClient = new VoiceClient(credentials);
    var record = await Vonage.Utility.WebhookParser.ParseWebhookAsync<Record>(Request.Body, Request.ContentType);
    var recording = await voiceClient.GetRecordingAsync(record.RecordingUrl);
    await System.IO.File.WriteAllBytesAsync("your_recording.mp3", recording.ResultStream);
    return StatusCode(204);
}

Configurar o aplicativo ASP.NET

Abra seu appsettings.json arquivo e adicione os dois campos a seguir a ele:

  • APPLICATION_ID: O identificador exclusivo do seu aplicativo da Voice API.
  • PRIVATE_KEY_PATH: A localização do seu aplicativo private.key arquivo.

Execute seu aplicativo

No seu console, acesse o csproj diretório e execute o comando dotnet run --urls=http://localhost:3000. Isso iniciará o aplicativo no http://localhost:3000. Abra essa URL no seu navegador.

E agora?

Saiba mais sobre os recursos da Voice API da Vonage: