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
Sustituya 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-contribEjecute su código
Guarde este archivo en su máquina y ejecútelo:
Pruébalo
Tendrás que exponer tu servidor a Internet. Durante el desarrollo, puedes utilizar una herramienta como Ngrok para hacerlo.
Cuando llames a tu número de Vonage, se te conectará automáticamente al número
número que especificaste en lugar de VOICE_TO_NUMBER.
Lecturas complementarias
- Respuesta de voz interactiva (IVR) - Construye un sistema telefónico automatizado para que los usuarios introduzcan información con el teclado y escuchen una respuesta hablada.
- 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 - Esta guía explica los dos conceptos que Vonage asocia con una llamada, una etapa y una conversación.
- Seguimiento de llamadas - Mantén un registro de qué campañas están funcionando bien usando diferentes números para cada una y rastreando las llamadas entrantes. Esta guía te muestra cómo manejar las llamadas entrantes, conectarlas a otro número y rastrear los números de teléfono que llamaron a cada uno de tus números de Vonage.