
Compartir:
Kelly J Andrews es desarrolladora de Nexmo y lleva más de 30 años jugando con los ordenadores. Utilizó BASIC por primera vez a los 5 años.
No fue hasta que creó su primera página web en 1997 y probó JavaScript por primera vez cuando encontró su verdadera vocación. Kelly lucha ahora por JavaScript, el código comprobable y la entrega rápida.
Se le puede encontrar cantando karaoke, haciendo magia o animando a los Cubs y a los Fighting Irish.
Traducción de mensajes SMS con la API de traducción de Google Cloud
Tiempo de lectura: 10 minutos
Los mensajes de texto se han convertido en parte de nuestra vida cotidiana. La integramos en múltiples aspectos como la banca, las alertas, el marketing y la asistencia. Se ha convertido en algo sencillo de implementar, y Vonage no es diferente.
Como parte del equipo de Extend, integrar mensajes de texto con API de traducción tiene mucho sentido. La traducción de los mensajes de texto entrantes puede ayudar a romper las barreras de comunicación y ayudarle a llegar a un público más amplio.
Visión general
En este post, te muestro cómo crear un SMS entrante de Vonage y traducir el mensaje al inglés utilizando la API de traducción de Google Cloud.
Para empezar, necesitarás configurar los siguientes elementos:
Vonage API Account
To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
Cree su proyecto
La configuración de este ejemplo es mínima y sólo necesitas un par de paquetes para ponerte en marcha.
@google-cloud/translate- este es el SDK oficial de Cloud Translationexpress- web framework para servir el webhookdotenv- un paquete para cargar variables de entornobody-parser- middleware para que Express gestione el objeto webhook entrante
Inicialice el proyecto y luego instale los requisitos anteriores utilizando npm o yarn.
Una vez instalado, cree una cuenta index.js y .env archivo.
Abra primero el archivo .env y copia y pega lo siguiente:
GOOGLE_APPLICATION_CREDENTIALS=./google_creds.json
TARGET_LANGUAGE='en'A continuación, abra el archivo index.js y pon el siguiente código dentro:
'use strict';
require('dotenv').config();
const express = require('express');
const bodyParser = require('body-parser');
const { Translate } = require('@google-cloud/translate');
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
const server = app.listen(3000, () => {
console.log(`Express server listening on port ${server.address().port} in ${app.settings.env} mode`);
});
Esto configurará el servidor para ejecutar el ejemplo.
Instalación de Ngrok
Los webhooks deben estar disponibles públicamente para que el servicio de Vonage pueda llegar a la aplicación cuando se reciban mensajes SMS entrantes. Podrías enviar tu código a un servidor disponible públicamente, o puedes usar ngrok para permitir que el tráfico público llegue a tu aplicación local.
Puede obtener más información sobre la instalación ngrok con este post. Después de que tengas todo listo puedes iniciar ngrok usando el siguiente comando para crear tu túnel.
Anote la dirección ngrok dirección, ya que la necesitará en un paso posterior.
Configuración de la API de traducción de Google Cloud
Una vez configurados los elementos iniciales, ya puedes añadir Google Cloud Translation API a tu Account. Siga este enlace para habilitar la API de traducción. Seleccione un proyecto y, a continuación, haga clic en el botón Enable para activar la API en ese proyecto.
Enable Google Cloud Translation API
Se recomienda crear un service user que tenga acceso a la API de traducción. Haga clic aquí y haga clic en + Create Service Account.
Add New Service Account
Dé a la Account el nombre que desee y pulse el botón Create . Una vez creada la Account, añada el rol Cloud Translation API User y pulsa Continue.
Add Cloud Translation API User Role
Necesitará crear claves para este usuario. Haga clic en el botón + Create Key y, a continuación, seleccione JSON y haga clic en crear. Esto descargará un JSON que necesitará para utilizar la Account. Cuando se haya completado, haga clic en Done para completar el proceso de creación.
Create Service Account Key
Create Service Account Key - Select Type
Copie el archivo de credenciales en la carpeta de su proyecto:
La API de traducción de Google Cloud ya está configurada y lista para su uso.
A continuación, podemos configurar el número de teléfono.
Cómo configurar los mensajes SMS entrantes de Vonage
Este ejemplo requiere un número de teléfono de Vonage para recibir mensajes entrantes. Podemos hacerlo utilizando la CLI de Vonage desde una terminal.
Comprar un número de teléfono virtual
El primer paso será adquirir un número (siéntase libre de utilizar un ISO 3166 alfa-2 según sea necesario).
Aunque la ruta real a utilizar en la aplicación no está configurada, le darás un nombre /message. Es necesario vincular el número de teléfono a esta ruta para que los mensajes entrantes sepan a dónde dirigirse. Obtenga el ngrok nombre de host de la configuración anterior y utilícelo aquí:
Ahora tenemos el webhook configurado como un lugar para que los mensajes SMS entrantes sean enrutados.
Finalizar la solicitud
Todo lo que queda para este tutorial es crear la ruta Express para manejar los datos entrantes y un par de pequeñas funciones para realizar realmente la traducción.
Crear el Webhook
Primero, debemos crear el código del webhook. Vonage tiene una función integrada para configurar el comportamiento predeterminado de los SMS. En el panel de configuración puedes cambiar el método HTTP por defecto. El mío es POST-JSON. Yo recomendaría usar esta configuración si es posible, sin embargo el código usado en este ejemplo manejará las tres opciones en caso de que no puedas modificar esta configuración.
Default Vonage SMS HTTP Method
Abra el archivo index.js y, en la parte inferior, pegue el siguiente código:
// Reading the inbound SMS messages
const handleRoute = (req, res) => {
let params = req.body;
if (req.method === "GET") {
params = req.query
}
if (!params.to || !params.msisdn) {
res.status(400).send({'error': 'This is not a valid inbound SMS message!'});
} else {
translateText(params);
res.status(200).end();
}
};
El fragmento anterior es el método que pasaremos a las rutas. Si el mensaje entrante utiliza POST utilizará req.bodyy utilizará req.query para la opción GET opción . Siempre que la carga útil de entrada esté configurada correctamente, el objeto se enviará junto con el método translateText para mostrar la traducción.
Ahora puede añadir la ruta y los métodos HTTP a la aplicación.
app.route('/message')
.get(handleRoute)
.post(handleRoute)
.all((req, res) => res.status(405).send());
El código anterior creará los archivos GET y POST para gestionar cualquiera de los mensajes SMS entrantes. Si se utiliza cualquier otro método, se devolverá una 405 - Method Not Allowed se devolverá una respuesta.
El webhook está listo y la pieza final son las traducciones propiamente dichas.
Método de traducción
En el paso anterior llamamos translateText. Este paso creará ese método.
Utilizar el paquete @google-cloud/translate es muy sencillo. Primero instanciamos la clase Translate que nos proporcionará el método translate método Éste se llama dentro del método translateText y utiliza el campo text del objeto de mensaje SMS entrante. El campo target es cualquier código de dos letras para el idioma a traducir.
const translationApi = new Translate();
function translateText(params) {
const target = process.env.TARGET_LANGUAGE || 'en';
translationApi.translate(params.text, target)
.then(results => {
console.log(`Original Text: ${params.text}`);
console.log(`Translation: ${results[0]}`);
})
.catch(err => {
console.log('error', err);
});
}
Ahora puedes probar la funcionalidad iniciando el servidor y enviando un mensaje de texto al número que compraste anteriormente.
node index.js
# Text "Hola" to your phone number
# expected response
Original Text: Hola
Translation: HelloLa API de traducción de Google Cloud hace un trabajo increíble detectando el idioma entrante y procesando la traducción rápidamente. Diviértete y pruébalo.
Recapitulemos
El ejemplo anterior es sólo una pequeña introducción a la traducción, pero debería ser un buen comienzo para ponerte en marcha. A partir de aquí, puedes traducir el mensaje entrante y, a continuación, traducir el mensaje saliente al idioma correcto también (futura entrada del blog, seguro).
Puede encontrar una versión completa de este tutorial en https://github.com/nexmo-community/sms-translate-google-js.
Si quieres saber más sobre los proyectos Extend que tenemos, puedes visitar https://developer.vonage.com/en/integration para obtener más información.
Compartir:
Kelly J Andrews es desarrolladora de Nexmo y lleva más de 30 años jugando con los ordenadores. Utilizó BASIC por primera vez a los 5 años.
No fue hasta que creó su primera página web en 1997 y probó JavaScript por primera vez cuando encontró su verdadera vocación. Kelly lucha ahora por JavaScript, el código comprobable y la entrega rápida.
Se le puede encontrar cantando karaoke, haciendo magia o animando a los Cubs y a los Fighting Irish.
