Atender uma chamada recebida

Neste trecho de código, você vê como transferir uma chamada recebida para outra pessoa, fazendo uma chamada de saída.

Exemplo

Substitua as seguintes variáveis no código de exemplo:

ChaveDescrição
VONAGE_VIRTUAL_NUMBER

Your Vonage Number. E.g. 447700900000

VOICE_TO_NUMBER

The recipient number to call, e.g. 447700900002.

Pré-requisitos

npm install express

Escreva o código

Adicione o seguinte ao arquivo ` connect-an-inbound-call.js`:

const Express = require('express');

const app = new Express();

const onInboundCall = (_, response) => {
  const ncco = [
    {
      action: 'connect',
      from: VONAGE_VIRTUAL_NUMBER,
      endpoint: [
        {
          type: 'phone',
          number: VOICE_TO_NUMBER,
        },
      ],
    },
  ];

  response.json(ncco);
};

app.get('/webhooks/answer', onInboundCall);

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`);
});

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

node connect-an-inbound-call.js

Pré-requisitos

Adicione o seguinte ao arquivo ` build.gradle`:

implementation 'com.vonage:server-sdk-kotlin:2.1.1'
implementation 'io.ktor:ktor-server-netty'
implementation 'io.ktor:ktor-serialization-jackson'

Escreva o código

Adicione o seguinte ao método ` main ` do arquivo ` ConnectInboundCall `:

embeddedServer(Netty, port = 8000) {
    routing {
        route("/webhooks/answer") {
            handle {
                call.response.header("Content-Type", "application/json")
                call.respond(
                    Ncco(
                        connectToPstn(VOICE_TO_NUMBER) {
                            from(VONAGE_VIRTUAL_NUMBER)
                        }
                    ).toJson()
                )
            }
        }
    }
}.start(wait = true)

Ver código-fonte completo

Execute seu código

Podemos usar o plugin “ aplicativo ” para o Gradle a fim de simplificar a execução do nosso aplicativo. Atualize seu arquivo ` build.gradle ` com o seguinte:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

Execute o seguinte comando ` gradle ` para rodar seu aplicativo, substituindo ` com.vonage.quickstart.kt.voice ` pelo pacote que contém ` ConnectInboundCall`:

gradle run -Pmain=com.vonage.quickstart.kt.voice.ConnectInboundCall

Pré-requisitos

Adicione o seguinte ao arquivo ` build.gradle`:

implementation 'com.vonage:server-sdk:9.3.1'
implementation 'com.sparkjava:spark-core:2.9.4'

Escreva o código

Adicione o seguinte ao método ` main ` do arquivo ` ConnectInboundCall `:

/*
 * Route to answer incoming calls with an NCCO response.
 */
Route answerRoute = (req, res) -> {
    ConnectAction connect = ConnectAction.builder()
            .endpoint(PhoneEndpoint.builder(VOICE_TO_NUMBER).build())
            .from(VONAGE_VIRTUAL_NUMBER)
            .build();

    res.type("application/json");

    return new Ncco(connect).toJson();
};

Spark.port(3000);
Spark.get("/webhooks/answer", answerRoute);
Spark.post("/webhooks/answer", answerRoute);

Ver código-fonte completo

Execute seu código

Podemos usar o plugin “ aplicativo ” para o Gradle a fim de simplificar a execução do nosso aplicativo. Atualize seu arquivo ` build.gradle ` com o seguinte:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

Execute o seguinte comando ` gradle ` para rodar seu aplicativo, substituindo ` com.vonage.quickstart.voice ` pelo pacote que contém ` ConnectInboundCall`:

gradle run -Pmain=com.vonage.quickstart.voice.ConnectInboundCall

Pré-requisitos

Install-Package Vonage

Escreva o código

Adicione o seguinte ao arquivo ` ConnectInboundCallController.cs`:

[Route("webhooks/answer")]
public string Answer()
{
    var VOICE_TO_NUMBER = Environment.GetEnvironmentVariable("VOICE_TO_NUMBER") ?? "VOICE_TO_NUMBER";
    var VONAGE_VIRTUAL_NUMBER = Environment.GetEnvironmentVariable("VONAGE_VIRTUAL_NUMBER") ?? "VONAGE_VIRTUAL_NUMBER";

    var talkAction = new TalkAction()
    {
        Text = "Thank you for calling",
        Language = "en-gb",
        Style = 2
    };

    var secondNumberEndpoint = new PhoneEndpoint() { Number=VOICE_TO_NUMBER};            
    var connectAction = new ConnectAction() { From=VONAGE_VIRTUAL_NUMBER, Endpoint= new[] { secondNumberEndpoint } };
    
    var ncco = new Ncco(talkAction,connectAction);
    return ncco.ToString();
}

Ver código-fonte completo

Pré-requisitos

composer require slim/slim:^3.8 vonage/client

Escreva o código

Adicione o seguinte ao arquivo ` index.php`:

require 'vendor/autoload.php';

$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();

define('VOICE_TO_NUMBER', getenv('VOICE_TO_NUMBER'));
define('VONAGE_VIRTUAL_NUMBER', getenv('VONAGE_VIRTUAL_NUMBER'));

$app = new \Slim\App();

$app->get('/webhooks/answer', function (Request $request, Response $response) {
    $numberToConnect = new \Vonage\Voice\Endpoint\Phone(VOICE_TO_NUMBER);

    $action = new \Vonage\Voice\NCCO\Action\Connect($numberToConnect);
    $action->setFrom(VONAGE_VIRTUAL_NUMBER);

    $ncco = new \Vonage\Voice\NCCO\NCCO();
    $ncco->addAction($action);

    return new JsonResponse($ncco->toArray());
});

$app->run();

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

php -S localhost:3000 -t .

Pré-requisitos

pip install vonage python-dotenv fastapi[standard]

Escreva o código

Adicione o seguinte ao arquivo ` connect-an-inbound-call.py`:

import os
from os.path import dirname, join

from dotenv import load_dotenv
from fastapi import FastAPI
from vonage_voice import Connect, PhoneEndpoint

dotenv_path = join(dirname(__file__), '../.env')
load_dotenv(dotenv_path)

VONAGE_VIRTUAL_NUMBER = os.environ.get('VONAGE_VIRTUAL_NUMBER')
VOICE_TO_NUMBER = os.environ.get('VOICE_TO_NUMBER')

app = FastAPI()


@app.get('/webhooks/answer')
async def inbound_call():
    ncco = [
        Connect(
            endpoint=[PhoneEndpoint(number=VOICE_TO_NUMBER)],
            from_=VONAGE_VIRTUAL_NUMBER,
        ).model_dump(by_alias=True, exclude_none=True)
    ]

    return ncco

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

fastapi dev voice/connect-an-inbound-call.py

Pré-requisitos

gem install sinatra sinatra-contrib

Escreva o código

Adicione o seguinte ao arquivo ` connect_an_inbound_call.rb`:

require 'sinatra'
require 'sinatra/multi_route'
require 'json'

VOICE_TO_NUMBER = ENV['VOICE_TO_NUMBER']
VONAGE_VIRTUAL_NUMBER = ENV['VONAGE_VIRTUAL_NUMBER']

before do
  content_type :json
end

route :get, :post, '/webhooks/answer' do
  [{
    action: 'connect',
    from: VONAGE_VIRTUAL_NUMBER,
    endpoint: [{
      type: 'phone',
      number: VOICE_TO_NUMBER
    }]
  }].to_json
end

set :port, 3000

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

ruby connect_an_inbound_call.rb

Experimente

Você precisará tornar seu servidor acessível à internet pública. Durante o desenvolvimento, você pode usar uma ferramenta como Ngrok para fazer isso.

Ao ligar para o seu número da Vonage, você será automaticamente conectado ao número que você especificou no lugar de VOICE_TO_NUMBER.

Leitura complementar

  • Resposta Interativa de Voz (IVR) - Criar um sistema telefônico automatizado para que os usuários possam inserir informações pelo teclado e ouvir uma resposta falada.
  • Bot de voz com o Google Dialogflow - Este guia vai ajudá-lo a dar os primeiros passos com um bot do Dialogflow de exemplo e a interagir com ele por meio de chamadas telefônicas, utilizando os códigos de referência de exemplo fornecidos e a Voice API da Vonage.
  • A Chamada do Mascarado - Permitir que os usuários liguem uns para os outros, mantendo seus números reais em sigilo.
  • Teleconferência - Este guia explica os dois Concepts que a Vonage associa a uma chamada: “leg” e “conversação”.
  • Rastreamento de chamadas - Acompanhe quais campanhas estão dando bons resultados usando números diferentes para cada uma delas e monitorando as chamadas recebidas. Este guia mostra como lidar com as chamadas recebidas, redirecioná-las para outro número e rastrear os números de telefone que ligaram para cada um dos seus números da Vonage.