Aviso:

Para brindarle información de soporte completa de manera más rápida, el contenido de esta página ha sido traducido al español mediante traducción automática. Para consultar la información de soporte más precisa, consulte la versión en inglés de este contenido.

Configurar la función Advanced I/O

Comencemos a codificar la aplicación Dialer configurando el componente de función.

El directorio de la función, functions/dialer contiene:

  • El archivo principal de la función index.js
  • El archivo de configuración catalyst-config.json
  • Módulos de Node
  • Archivos de dependencias package.json y package-lock.json

Instalar paquetes para Node.js

Necesitarás instalar dos paquetes adicionales en el directorio de funciones de tu aplicación antes de continuar.

Express

Para importar el paquete Express Node.js en el código, debes instalar las dependencias de Express en tu sistema. El framework express se usa para gestionar rutas y también responder a solicitudes HTTP.

Para instalar Express.js en tu máquina local, navega al directorio principal de la función (functions/dialer) en tu terminal y ejecuta el siguiente comando:

copy
$
npm install express --save

Esto instalará el módulo Express y guardará las dependencias.

install-express

Twilio

También necesitarás instalar el paquete de Twilio para este tutorial. La biblioteca de Twilio te permite hacer solicitudes HTTP a la API de Twilio. Ejecuta el siguiente comando para agregar las dependencias de Twilio.

copy
$
npm install twilio

install-twilio

Esta información también se actualizará en el archivo package.json.

package-json

A continuación, agreguemos el código en el archivo de la función. Copia el código de Node.js y pégalo en index.js en el directorio functions/dialer. Puedes usar cualquier IDE de tu preferencia para trabajar con los archivos de la aplicación.

Nota: Por favor, revisa el código proporcionado en esta sección para asegurarte de que lo comprendes completamente. Discutiremos la arquitectura de la función y el cliente en la siguiente sección.
index.js
copy
const express = require("express");
const app = express();
var twilio = require('twilio');
const VoiceResponse = require("twilio").twiml.VoiceResponse;
var catalyst = require('zcatalyst-sdk-node');
var YOUR_TWILIO_NUMBER = '+xxxxxxxxxx';
var accountSid = "xxxxxxxxxxxxxx";
var authToken = "7xxxxxxxxxxxxxxx8";
var twilioClient = twilio(accountSid, authToken);
var bodyParser = require('body-parser');
app.use(bodyParser.json()); // soportar cuerpos codificados en json
app.use(bodyParser.urlencoded({ extended: true })); // soportar cuerpos codificados

app.post("/makeCall", async (req, res) => { try { var salesNumber = req.body.salesNumber; console.log(req.body) const catalystApp = catalyst.initialize(req); let rowData = { fromNumber: req.body.phoneNumber, toNumber: req.body.salesNumber }; console.log(rowData) const catalystTable = catalystApp.datastore().table(‘CallLog’); const data = await catalystTable.insertRow(rowData); var url = ‘https://’ + req.headers.host + ‘/server/dialer/outbound/’ + encodeURIComponent(salesNumber);

var options = { to: req.body.phoneNumber, from: YOUR_TWILIO_NUMBER, url: url, method: ‘post’, statusCallbackEvent: [‘answered’, ‘completed’], statusCallback: ‘https://’ + req.headers.host + ‘/server/dialer/statusCheck?ROWID=’ + data.ROWID, statusCallbackMethod: ‘POST’ };

twilioClient.calls.create(options).then((call) => { res.status(200).send({ message: ‘Call Initiated’ }); }).catch((error) => { console.log(error); res.status(500).send({ “error”: error }); }); } catch (e) { console.log(“Exception while making a Call ::” + e); res.status(500).send({ “error”: ‘Internal Server Error Occured. Please Try again after sometime.’ }); } });

app.post(’/outbound/:salesNumber’, function (req, res) {

try { var salesNumber = req.params.salesNumber; var twimlResponse = new VoiceResponse(); twimlResponse.say(‘Thanks for trying out the Catalyst Dialer App. Please hold on so that we can connect with your Customer… ‘, { voice: ‘alice’ }); twimlResponse.dial(salesNumber); res.status(200).send(twimlResponse.toString()); } catch (e) { console.log(“Exception while making Outbound Call ::” + e); res.status(500).send({ “error”: ‘Internal Server Error Occured. Please Try again after sometime.’ }); } });

app.post(’/statusCheck’, async (req, res) => {

try { const catalystApp = catalyst.initialize(req); if (req.body.CallStatus === “completed”) { let updatedRowData = { callDuration: req.body.CallDuration, callStatus: req.body.CallStatus, calledCountry: req.body.CalledCountry, calledState: req.body.CalledState, timeOfCall: req.body.Timestamp, ROWID: req.body.ROWID }; console.log(updatedRowData) const catalystTable = catalystApp.datastore().table(‘CallLog’); await catalystTable.updateRow(updatedRowData); } res.status(200).send(’ StatusCheck Completed’); } catch (e) { console.log(“Exception while checking status :: " + e); res.status(500).send({ “error”: ‘Internal Server Error Occured. Please Try again after sometime.’ }); } });

app.get(’/getLogs’, async function (req, res) {

try { const catalystApp = catalyst.initialize(req); const query = ‘SELECT callDuration,callStatus,calledCountry,timeOfCall,fromNumber,toNumber FROM CallLog’; const queryResult = await catalystApp.zcql().executeZCQLQuery(query); res.status(200).send(queryResult); } catch (e) { console.log(“Exception while getting Call Logs ::” + e); res.status(500).send({ “error”: ‘Internal Server Error Occured. Please Try again after sometime.’ }); }

});

module.exports = app;

View more

Nota: Por favor, asegúrate de agregar tu accountID de Twilio, el número de teléfono de Twilio asociado y los valores de auth token en las líneas 6, 7 y 8.

El directorio de funciones está ahora configurado.

Última actualización 2026-03-20 21:51:56 +0530 IST