Conectar una llamada entrante
En este fragmento de código se muestra cómo conectar una llamada entrante con otra persona realizando una llamada saliente.
Ejemplo
Sustituye las siguientes variables en el código de ejemplo:
| Clave | Descripción |
|---|---|
VONAGE_VIRTUAL_NUMBER | Your Vonage Number. E.g. |
VOICE_TO_NUMBER | The recipient number to call, e.g. |
Requisitos previos
npm install expressEscriba el código
Añada lo siguiente a 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}`);
});Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
Requisitos previos
Añada lo siguiente a build.gradle:
implementation 'com.vonage:server-sdk-kotlin:2.1.1'
implementation 'io.ktor:ktor-server-netty'
implementation 'io.ktor:ktor-serialization-jackson'Escriba el código
Añada lo siguiente al método main del archivo 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)Ejecute su código
Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:
apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.kt.voice por el paquete que contiene ConnectInboundCall:
Requisitos previos
Añada lo siguiente a build.gradle:
implementation 'com.vonage:server-sdk:9.3.1'
implementation 'com.sparkjava:spark-core:2.9.4'Escriba el código
Añada lo siguiente al método main del archivo 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);Ejecute su código
Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:
apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.voice por el paquete que contiene ConnectInboundCall:
Requisitos previos
Install-Package VonageEscriba el código
Añada lo siguiente a 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();
}Requisitos previos
composer require slim/slim:^3.8 vonage/clientEscriba el código
Añada lo siguiente a 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();Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
Requisitos previos
pip install vonage python-dotenv fastapi[standard]Escriba el código
Añada lo siguiente a 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 nccoEjecute su código
Guarde este archivo en su máquina y ejecútelo:
Requisitos previos
gem install sinatra sinatra-contribEscriba el código
Añada lo siguiente a 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, 3000Ejecute su código
Guarde este archivo en su máquina y ejecútelo:
Pruébalo
Tendrás que conectar tu servidor a Internet. Durante la fase de desarrollo, puedes utilizar una herramienta como Ngrok para hacerlo.
Cuando llames a tu número de Vonage, se te conectará automáticamente con el
número que hayas indicado en lugar de VOICE_TO_NUMBER.
Lecturas complementarias
- Respuesta de voz interactiva (IVR) - Crear un sistema telefónico automatizado que permita a los usuarios introducir información mediante el teclado y escuchar una respuesta de voz.
- Bot de voz con Google Dialogflow - Esta guía le ayudará a empezar con un bot Dialogflow de ejemplo e interactuar con él desde llamadas telefónicas utilizando los códigos de referencia de ejemplo proporcionados utilizando Vonage Voice API.
- Llamada enmascarada - Permite que los usuarios se llamen entre sí, manteniendo en privado sus números reales.
- Conferencias telefónicas - En esta guía se explican los dos conceptos que Vonage asocia a una llamada: «tramo» y «conversación».
- Seguimiento de llamadas - Haz un seguimiento de las campañas que están dando buenos resultados utilizando números diferentes para cada una de ellas y registrando las llamadas entrantes. Esta guía te explica cómo gestionar las llamadas entrantes, desviarlas a otro número y realizar un seguimiento de los números de teléfono que han llamado a cada uno de tus números de Vonage.