https://d226lax1qjow5r.cloudfront.net/blog/blogposts/extending-nexmo-google-cloud-translation-api-dr/E_EN_Translate-SMS_1200x600.png

Traduire des SMS à l'aide de l'API de traduction de Google Cloud

Publié le May 13, 2021

Temps de lecture : 11 minutes

La messagerie textuelle fait désormais partie de notre vie quotidienne. Nous l'intégrons dans de multiples aspects tels que les opérations bancaires, les alertes, le marketing et l'assistance. Elle est devenue simple à mettre en œuvre, et Vonage ne fait pas exception à la règle.

En tant que membre de l'équipe Extend, l'intégration des messages texte avec les API de traduction est tout à fait logique. La traduction des messages texte entrants peut contribuer à faire tomber les barrières de la communication et vous aider à atteindre un public plus large.

Vue d'ensemble

Dans ce billet, je vous montre comment créer un SMS entrant de Vonage et traduire le message en anglais à l'aide de l'API de traduction de Google Cloud Translation API.

Pour commencer, vous aurez besoin des éléments suivants :

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.

Créez votre projet

L'installation pour cet exemple est minimale, et vous n'avez besoin que de quelques paquets pour commencer.

  • @google-cloud/translate - il s'agit du SDK officiel de traduction dans le nuage

  • express - cadre web pour servir le webhook

  • dotenv - un paquet pour charger les variables d'environnement

  • body-parser - middleware pour Express afin de gérer l'objet webhook entrant

Initialiser le projet et installer les exigences ci-dessus en utilisant npm ou yarn.

npm init && npm install @google-cloud/translate express dotenv body-parser # or yarn init && yarn add @google-cloud/translate express dotenv body-parser

Une fois installé, créez un index.js et .env fichier.

touch index.js .env

Ouvrez d'abord le fichier .env et copier-coller ce qui suit :

GOOGLE_APPLICATION_CREDENTIALS=./google_creds.json
TARGET_LANGUAGE='en'

Ensuite, ouvrez le fichier index.js et placez le code suivant à l'intérieur :

'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`);
});

Cela permet de configurer le serveur pour qu'il exécute l'exemple.

Installation de Ngrok

Les webhooks doivent être accessibles au public afin que le service Vonage puisse accéder à l'application lors de la réception de messages SMS entrants. Vous pouvez pousser votre code vers un serveur accessible au public, ou vous pouvez utiliser ngrok pour permettre au trafic public d'atteindre votre application locale.

Vous pouvez en savoir plus sur l'installation ngrok avec ce billet. Une fois que tout est prêt, vous pouvez démarrer ngrok en utilisant la commande suivante pour créer votre tunnel.

ngrok http 3000

Notez l'adresse, car vous en aurez besoin dans une étape ultérieure. ngrok car vous en aurez besoin dans une étape ultérieure.

Configuration de l'API Google Cloud Translation

Une fois les éléments initiaux configurés, vous pouvez maintenant ajouter Google Cloud Translation API à votre Account. Suivez le ce lien pour activer l'API de traduction. Sélectionnez un projet, puis cliquez sur le bouton Enable pour activer l'API sur ce projet.

Enable Google Cloud Translation APIEnable Google Cloud Translation API

Il est recommandé de créer un service user qui a accès à l'API de traduction. Cliquez ici et cliquez sur + Create Service Account.

Add New Service AccountAdd New Service Account

Donnez au Account le nom que vous souhaitez et appuyez sur la touche Create et appuyez sur le bouton . Une fois le compte créé, ajoutez le rôle Cloud Translation API User et cliquez sur Continue.

Add Cloud Translation API User RoleAdd Cloud Translation API User Role

Vous devrez créer des clés pour cet utilisateur. Cliquez sur le bouton + Create Key puis sélectionnez JSON et cliquez sur créer. Cela téléchargera sur votre machine un fichier dont vous aurez besoin pour utiliser le compte. JSON sur votre machine dont vous aurez besoin pour utiliser l'Account. Une fois le téléchargement terminé, cliquez sur Done pour terminer le processus de création.

Create Service Account KeyCreate Service Account Key

Create Service Account Key - Select TypeCreate Service Account Key - Select Type

Copiez le fichier d'identification dans le dossier de votre projet :

cp /path/to/file/project-name-id.json ./google_creds.json

L'API Google Cloud Translation est maintenant configurée et prête à être utilisée.

Ensuite, nous pouvons configurer le numéro de téléphone.

Configuration des messages SMS entrants de Vonage

Cet exemple nécessite un numéro de téléphone de Vonage pour recevoir les messages entrants. Nous pouvons le faire en utilisant le CLI de Vonage de Vonage à partir d'un terminal.

Acheter un numéro de téléphone virtuel

La première étape consistera à acheter un numéro (n'hésitez pas à utiliser un autre numéro ISO 3166 alpha-2 si nécessaire).

vonage numbers:search US Country Number Type Cost Features ─────── ─────────── ────────── ──── ───────── US 12017621343 mobile-lvn 0.90 VOICE,SMS US 12017782770 mobile-lvn 0.90 VOICE,SMS US 12018011956 mobile-lvn 0.90 VOICE,SMS US 12018099074 mobile-lvn 0.90 VOICE,SMS US 12018099756 mobile-lvn 0.90 VOICE,SMS vonage numbers:buy 12017621343 US

Bien que l'itinéraire à utiliser dans l'application ne soit pas encore défini, vous le nommerez /message. Le numéro de téléphone doit être lié à cet itinéraire pour que les messages entrants sachent où aller. Récupérez le ngrok nom d'hôte de la configuration précédente et utilisez-le ici :

vonage number:update 12017621343 US --url=https://my-ngrok-hostname/message

Le webhook est maintenant configuré pour l'acheminement des SMS entrants.

Terminer l'application

Pour ce tutoriel, il ne reste plus qu'à créer la route Express pour gérer les données entrantes et quelques petites fonctions pour effectuer la traduction.

Construire le Webhook

Tout d'abord, nous devons créer le code du webhook. Vonage dispose d'une fonction intégrée permettant de définir le comportement par défaut des SMS. Dans le panneau de configuration vous pouvez modifier la méthode HTTP utilisée par défaut. La mienne est réglée sur POST-JSON. Je vous recommande d'utiliser ce paramètre si possible, mais le code utilisé dans cet exemple traitera les trois options au cas où vous ne seriez pas en mesure de modifier ce paramètre.

Default Vonage SMS HTTP MethodDefault Vonage SMS HTTP Method

Ouvrez le fichier index.js et, en bas, collez le code suivant :

// 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();
  }

};

L'extrait ci-dessus est la méthode que nous passerons dans les routes. Si le message entrant utilise POST il utilisera req.bodyet il utilisera req.query pour l'option GET pour l'option Tant que la charge utile entrante est correctement configurée, l'objet sera envoyé à la méthode translateText pour afficher la traduction.

Vous pouvez maintenant ajouter l'itinéraire et les méthodes HTTP à l'application.

app.route('/message')
  .get(handleRoute)
  .post(handleRoute)
  .all((req, res) => res.status(405).send());

Le code ci-dessus créera les fichiers GET et POST pour traiter les messages entrants du webhook SMS. Si une autre méthode est utilisée, une réponse 405 - Method Not Allowed sera renvoyée.

Le webhook est prêt à être utilisé et la dernière étape est la traduction proprement dite.

Méthode de traduction

Dans l'étape précédente, nous appelons translateText. Cette étape créera cette méthode.

L'utilisation du paquet @google-cloud/translate est très simple. Nous commençons par instancier la classe Translate qui nous fournira la méthode translate ce qui nous donne la méthode Celle-ci est appelée à l'intérieur de la méthode translateText et utilise le champ text de l'objet SMS entrant. Le champ target est un code à deux lettres pour la langue de la langue à traduire.

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);
         });
}

Vous pouvez maintenant tester la fonctionnalité en démarrant le serveur et en envoyant un message texte au numéro que vous avez acheté précédemment.

node index.js
# Text "Hola" to your phone number

# expected response
Original Text: Hola
Translation: Hello

L'API Google Cloud Translation fait un travail remarquable en détectant la langue d'arrivée et en traitant rapidement la traduction. Amusez-vous et essayez.

Récapitulation

L'exemple ci-dessus n'est qu'une petite introduction à la traduction, mais il devrait constituer un bon point de départ. À partir de là, vous pouvez traduire le message entrant, puis le message sortant dans la bonne langue (un futur article de blog, bien sûr).

Vous trouverez une version complète de ce tutoriel à l'adresse suivante https://github.com/nexmo-community/sms-translate-google-js.

Si vous souhaitez en savoir plus sur les projets Extend que nous avons, vous pouvez consulter le site suivant https://developer.vonage.com/en/integration pour en savoir plus.

Partager:

https://a.storyblok.com/f/270183/384x384/444c073b5e/kellyjandrews.png
Kelly J AndrewsAncien membre de l'équipe

Kelly J. Andrews est un défenseur des développeurs pour Nexmo. Il bricole des ordinateurs depuis plus de 30 ans et a utilisé BASIC pour la première fois à l'âge de 5 ans.

Ce n'est que lorsqu'il a créé sa première page web en 1997 et qu'il a essayé JavaScript pour la première fois qu'il a trouvé sa véritable vocation. Kelly se bat désormais pour JavaScript, un code testable et une livraison rapide.

Vous pouvez le trouver en train de chanter au karaoké, de faire de la magie ou d'encourager les Cubs et les Fighting Irish.