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:
| Chave | Descrição |
|---|---|
VONAGE_VIRTUAL_NUMBER | Your Vonage Number. E.g. |
VOICE_TO_NUMBER | The recipient number to call, e.g. |
Pré-requisitos
npm install expressEscreva 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}`);
});Execute seu código
Salve este arquivo no seu computador e execute-o:
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)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`:
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);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`:
Pré-requisitos
Install-Package VonageEscreva 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();
}Pré-requisitos
composer require slim/slim:^3.8 vonage/clientEscreva 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();Execute seu código
Salve este arquivo no seu computador e execute-o:
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 nccoExecute seu código
Salve este arquivo no seu computador e execute-o:
Pré-requisitos
gem install sinatra sinatra-contribEscreva 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, 3000Execute seu código
Salve este arquivo no seu computador e execute-o:
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.