Acompanhe o uso dos seus números da Vonage

Obtenha informações sobre a eficácia de suas comunicações com os clientes acompanhando as chamadas recebidas em seus números da Vonage. Ao registrar um número diferente para cada uma de suas campanhas de marketing, você pode verificar qual delas tem o melhor desempenho e usar essas informações para aprimorar suas futuras iniciativas de marketing.

O exemplo de hoje usa o NodeJS e todo o código está disponível no GitHub, no entanto, a mesma abordagem poderia ser utilizada para qualquer outra pilha de tecnologias.

Pré-requisitos

Para seguir este guia, você precisará de:

  • A Account da Vonage
  • O CLI da Vonage instalado e configurado.
  • Um servidor web acessível ao público para que a Vonage possa enviar solicitações de webhook ao seu aplicativo. Se você estiver desenvolvendo localmente, recomendamos ngrok.

Comece agora

Antes de baixar o código e começar a trabalhar, você precisará configurar uma aplicação da Vonage e obter alguns Numbers para usar com ela. Ao criar uma aplicação da Vonage, você especifica alguns webhook pontos de extremidade; esses são URLs na sua própria aplicação e são a razão pela qual seu código deve estar acessível ao público. Quando alguém liga para seu número da Vonage, a Vonage fará uma solicitação da web para o answer_url ponto de extremidade que você especificar e seguir as instruções encontradas nesse local.

Há também um event_url webhook, que recebe atualizações sempre que o estado da chamada muda. Nesta aplicação, o código exibe os eventos no console para fornecer informações úteis durante o desenvolvimento.

Para criar o aplicativo inicial, use a CLI da Vonage para executar o comando abaixo, substituindo sua URL em dois locais:

vonage apps create 'Your application'

✅ Creating Application
Saving private key ... Done!
Application created

Name: Your application
Application ID: 00000000-0000-0000-0000-000000000000
Improve AI: Off
Private/Public Key: Set

Capabilities:
  None Enabled
vonage apps create 'Your application'

✅ Creating Application
Saving private key ... Done!
Application created

Name: Your application
Application ID: 00000000-0000-0000-0000-000000000000
Improve AI: Off
Private/Public Key: Set

Capabilities:
  None Enabled
vonage apps create 'Your application' ✅ Creating Application Saving private key ... Done! Application created Name: Your application Application ID: 00000000-0000-0000-0000-000000000000 Improve AI: Off Private/Public Key: Set Capabilities: None Enabled

Este comando retorna o UUID (Identificador Universalmente Único) que identifica seu aplicativo. Com o ID do aplicativo, agora você pode adicionar o recurso de voz ao seu aplicativo:

Certifique-se de definir o voice-answer-url, voice-event-url para apontar para o seu domínio. Você não precisa definir a URL alternativa.

vonage apps capabilities update 00000000-0000-0000-0000-000000000000 voice `
  --voice-answer-url='https://example.com/webhooks/voice/answer' `
  --voice-event-url='https://example.com/webhooks/voice/event' `
  --voice-fallback-url='https://example.com/webhooks/voice/fallback'
  
✅ Fetching Application
✅ Adding voice capability to application 00000000-0000-0000-0000-000000000000

Name: Your application
Application ID: 00000000-0000-0000-0000-000000000000
Improve AI: Off
Private/Public Key: Set

Capabilities:
 VOICE:
    Uses Signed callbacks: On
    Conversation TTL: 41 hours
    Leg Persistence Time: 6 days
    Event URL: [POST] https://example.com/webhooks/voice/event
    Answer URL: [POST] https://example.com/webhooks/voice/answer
    Fallback URL: [POST] https://example.com/webhooks/voice/fallback
vonage apps capabilities update 00000000-0000-0000-0000-000000000000 voice ^
  --voice-answer-url='https://example.com/webhooks/voice/answer' ^
  --voice-event-url='https://example.com/webhooks/voice/event' ^
  --voice-fallback-url='https://example.com/webhooks/voice/fallback'
  
✅ Fetching Application
✅ Adding voice capability to application 00000000-0000-0000-0000-000000000000

Name: Your application
Application ID: 00000000-0000-0000-0000-000000000000
Improve AI: Off
Private/Public Key: Set

Capabilities:
 VOICE:
    Uses Signed callbacks: On
    Conversation TTL: 41 hours
    Leg Persistence Time: 6 days
    Event URL: [POST] https://example.com/webhooks/voice/event
    Answer URL: [POST] https://example.com/webhooks/voice/answer
    Fallback URL: [POST] https://example.com/webhooks/voice/fallback
vonage apps capabilities update 00000000-0000-0000-0000-000000000000 voice \ --voice-answer-url='https://example.com/webhooks/voice/answer' \ --voice-event-url='https://example.com/webhooks/voice/event' \ --voice-fallback-url='https://example.com/webhooks/voice/fallback' ✅ Fetching Application ✅ Adding voice capability to application 00000000-0000-0000-0000-000000000000 Name: Your application Application ID: 00000000-0000-0000-0000-000000000000 Improve AI: Off Private/Public Key: Set Capabilities: VOICE: Uses Signed callbacks: On Conversation TTL: 41 hours Leg Persistence Time: 6 days Event URL: [POST] https://example.com/webhooks/voice/event Answer URL: [POST] https://example.com/webhooks/voice/answer Fallback URL: [POST] https://example.com/webhooks/voice/fallback

Você precisará de alguns números da Vonage para testar este aplicativo. É possível usar a CLI da Vonage para pesquisar e comprar um número por meio dos comandos mostrados abaixo; ao pesquisar um número, digite qualquer código de país em Formato ISO 3166-1 alfa-2.

vonage numbers search US

✅ Searching for numbers

There is 1 number available for purchase in United States

Number       Type    Features         Monthly Cost  Setup Cost
-----------  ------  ---------------  ------------  ----------
16127779311  Mobile  MMS, SMS, VOICE  €0.900.00

Use vonage numbers buy to purchase.
vonage numbers search US

✅ Searching for numbers

There is 1 number available for purchase in United States

Number       Type    Features         Monthly Cost  Setup Cost
-----------  ------  ---------------  ------------  ----------
16127779311  Mobile  MMS, SMS, VOICE0.900.00

Use vonage numbers buy to purchase.
vonage numbers search US ✅ Searching for numbers There is 1 number available for purchase in United States Number Type Features Monthly Cost Setup Cost ----------- ------ --------------- ------------ ---------- 16127779311 Mobile MMS, SMS, VOICE €0.90 €0.00 Use vonage numbers buy to purchase.
vonage numbers buy US 16127779311 
✅ Searching for numbers
Are you sure you want to purchase the number 16127779311 for0.90? [y/n] y

✅ Purchasing number
Number 16127779311 purchased

Number: 16127779311 
Country: 🇺🇸 United States
Type: Mobile
Features: MMS, SMS, VOICE
Monthly Cost: €0.90
Setup Cost: €0.00
Linked Application ID: Not linked to any application
Voice Callback: Not Set
Voice Callback Value: Not Set
Voice Status Callback: Not Set
vonage numbers buy US 16127779311 
✅ Searching for numbers
Are you sure you want to purchase the number 16127779311 for0.90? [y/n] y

✅ Purchasing number
Number 16127779311 purchased

Number: 16127779311 
Country: 🇺🇸 United States
Type: Mobile
Features: MMS, SMS, VOICE
Monthly Cost: €0.90
Setup Cost: €0.00
Linked Application ID: Not linked to any application
Voice Callback: Not Set
Voice Callback Value: Not Set
Voice Status Callback: Not Set
vonage numbers buy US 16127779311 ✅ Searching for numbers Are you sure you want to purchase the number 16127779311 for €0.90? [y/n] y ✅ Purchasing number Number 16127779311 purchased Number: 16127779311 Country: 🇺🇸 United States Type: Mobile Features: MMS, SMS, VOICE Monthly Cost: €0.90 Setup Cost: €0.00 Linked Application ID: Not linked to any application Voice Callback: Not Set Voice Callback Value: Not Set Voice Status Callback: Not Set

Você pode usar qualquer código de país em Formato ISO 3166-1 alfa-2 para este comando. O resultado é o número que você comprou, então copie-o (você sempre pode obter uma lista com vonage numbers) e vincule-o ao aplicativo que você criou:

vonage apps numbers link 00000000-0000-0000-0000-000000000000 16127779311

✅ Fetching Application
Fetching Owned numbers [===============================================] 1/1 100%

Number linked

Number: 16127779311
Country: 🇺🇸 United States
Type: Toll-free
Features: MMS, SMS, VOICE
Monthly Cost: Not Set
Setup Cost: Not Set
Linked Application ID: 00000000-0000-0000-0000-000000000000
Voice Callback: app
Voice Callback Value: 00000000-0000-0000-0000-000000000000
Voice Status Callback: Not Set
vonage apps numbers link 00000000-0000-0000-0000-000000000000 16127779311

✅ Fetching Application
Fetching Owned numbers [===============================================] 1/1 100%

Number linked

Number: 16127779311
Country: 🇺🇸 United States
Type: Toll-free
Features: MMS, SMS, VOICE
Monthly Cost: Not Set
Setup Cost: Not Set
Linked Application ID: 00000000-0000-0000-0000-000000000000
Voice Callback: app
Voice Callback Value: 00000000-0000-0000-0000-000000000000
Voice Status Callback: Not Set
vonage apps numbers link 00000000-0000-0000-0000-000000000000 16127779311 ✅ Fetching Application Fetching Owned numbers [===============================================] 1/1 100% Number linked Number: 16127779311 Country: 🇺🇸 United States Type: Toll-free Features: MMS, SMS, VOICE Monthly Cost: Not Set Setup Cost: Not Set Linked Application ID: 00000000-0000-0000-0000-000000000000 Voice Callback: app Voice Callback Value: 00000000-0000-0000-0000-000000000000 Voice Status Callback: Not Set

Repita a etapa de compra e vinculação para quantos números você quiser usar.

Para novos usuários, será necessário recarregar o Account antes de poder comprar um número.

Configurar e executar o aplicativo

Primeiro, obtenha o código em este repositório. Você pode clonar o repositório na sua máquina local ou baixar o arquivo zip.

Instale as dependências com este comando: npm install

Em seguida, copie o modelo de configuração .env-example em um arquivo chamado .env. Nesse arquivo, você precisará configurar o número de telefone para o qual a Vonage deve fazer a ligação; portanto, pode ser qualquer telefone que esteja por perto e que você possa atender.

Você também pode definir o número da porta no .env arquivo adicionando um PORT configuração

Para iniciar o servidor web: npm start

Verifique se tudo está funcionando conforme o esperado acessando http://localhost:5000. Você deverá ver “Hello Vonage” como resposta.

Atender chamadas de voz recebidas

Quando a Vonage recebe uma chamada para o seu número da Vonage, ela envia uma solicitação para o endpoint do webhook que você configurou ao criou um aplicativo do Voice.

Quando a pessoa faz a ligação, o aplicativo recebe o webhook de entrada. Ele extrai o número do qual a pessoa está ligando (o to número) e o número que discaram (o from (número) e repassa esses valores para a lógica de rastreamento de chamadas.

O webhook recebido é processado pelo /track-call trajeto:

app.get('/track-call', (req, res) => {
    const from = req.query.from;
    const to = req.query.to;

    const ncco = callTracker.answer(from, to);
    return res.json(ncco);
});

Rastrear a chamada antes de conectar o chamador

A lógica para rastrear a chamada, propriamente dita, está separada no aplicativo de exemplo. Observe que o aplicativo perde os dados quando você reinicia o servidor! Para suas próprias aplicações, você pode ampliar essa parte para gravar em um banco de dados, em uma plataforma de log ou em qualquer outro recurso que atenda às suas necessidades. Após rastrear a chamada, o aplicativo retorna um Objeto de Controle de Chamadas da Nexmo (NCCO) para informar aos servidores da Vonage o que fazer a seguir com a chamada.

Você encontrará esse código em lib/CallTracker.js:

class CallTracker {

  config;

  trackedCalls;

  constructor(config) {
    this.config = config;

    this.trackedCalls = {};
  }

  /**
   * Track the call and return an NCCO that proxies a call.
   */
  answer (from, to) {
    if(!this.trackedCalls[to]) {
      this.trackedCalls[to] = [];
    }

    this.trackedCalls[to].push({
      timestamp: Date.now(),
      from: from,
    });

    return [
      {
        action: 'connect',
        from: to,
        endpoint: [
          {
            type: 'phone',
            number: this.config.proxyToNumber,
          },
        ],
      },
    ];
  };
}

A NCCO utiliza o connect ação para conectar a chamada recebida a outra chamada para o número que você especificou no arquivo de configuração. O from O número deve ser um número da Vonage; portanto, o código usa o número rastreado como identificador de chamadas para a chamada efetuada. Verifique o Documentação da NCCO para o connect ação para obter mais detalhes sobre o objeto de controle de chamadas.

Conclusão

Com essa abordagem, você conseguiu vincular alguns números da Vonage ao seu aplicativo node.js, registrar as chamadas recebidas nesses números e conectar os chamadores a um número de saída. Ao registrar a data e a hora, bem como os números de origem e de destino, você pode realizar qualquer análise necessária sobre esses dados para obter os melhores resultados para o seu negócio.

E agora, para onde vamos?

Aqui estão mais algumas sugestões de recursos que você pode achar interessantes como próximo passo após este guia: