https://a.storyblok.com/f/270183/48594/4963478af5/blog_translate-sms-messages_1200x600.png

Traduza mensagens SMS com o IBM Watson e a Vonage

Publicado em May 11, 2021

Tempo de leitura: 10 minutos

Em meus posts anteriores, mostrei como é possível traduzir mensagens de texto com a API de Tradução do Google e AWS Translate.

Visão geral

Nesta postagem, vou mostrar como criar um webhook de SMS de entrada da Vonage e traduzir a mensagem para o inglês usando o IBM Watson Language Translator.

Para começar, você precisará ter os seguintes itens configurados:

Crie seu projeto

A configuração para este exemplo é mínima, e você só precisa de alguns pacotes para começar.

  • ibm-watson - este é o SDK oficial do IBM Watson

  • express - framework web para hospedar o webhook

  • dotenv - um pacote para carregar variáveis de ambiente

  • body-parser - middleware para o Express destinado a processar o objeto webhook recebido

Inicialize o projeto e, em seguida, instale os pré-requisitos acima usando npm ou yarn.

npm init && npm install ibm-watson express dotenv body-parser # or yarn init && yarn add ibm-watson express dotenv body-parser

Após a instalação, crie um index.js e .env arquivo.

touch index.js .env

Em seguida, abra o index.js arquivo e insira o seguinte código nele:

'use strict';
require('dotenv').config();

const express = require('express');
const bodyParser = require('body-parser');
const LanguageTranslatorV3 = require('ibm-watson/language-translator/v3');
const { IamAuthenticator } = require('ibm-watson/auth');

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

Isso configurará o servidor para executar o exemplo.

Instalando o Ngrok

Os webhooks precisam estar disponíveis publicamente para que o serviço da Vonage possa acessar o aplicativo quando forem recebidas mensagens SMS. Você pode enviar seu código para um servidor disponível publicamente ou pode usar ngrok para permitir que o tráfego público alcance seu aplicativo local.

Você pode saber mais sobre como instalar ngrok nesta este post. Depois de ter tudo pronto, você pode iniciar o ngrok usando o comando a seguir para criar seu túnel.

ngrok http 3000

Anote o ngrok endereço, pois você precisará dele em uma etapa posterior.

Configurando o IBM Watson Language Translator

Depois de configurar os itens iniciais, você pode adicionar o IBM Watson Language Translator à sua Account e obter as credenciais necessárias para executar o exemplo. Acesse este link para habilitar a API do Language Translator. Selecione um projeto e, em seguida, clique no Enable botão para ativar a API nesse projeto.

Create Language Translator ServiceCreate Language Translator Service

Após a criação, será exibido um tutorial de “Introdução”. Na barra de navegação à esquerda, clique Manage para acessar a seguinte tela:

IBM Watson Language Translator Manage ScreenIBM Watson Language Translator Manage Screen

Abra o .env arquivo primeiro e copie e cole o seguinte:

TRANSLATE_IAM_APIKEY=
TRANSLATE_URL=

Usando a função “Copiar o API Key e URL disponível na página IBM Watson Translation Manage, preencha os .env detalhes do arquivo, salve e prossiga para criar o número de telefone da Vonage.

Configurando mensagens SMS recebidas do Vonage

Este exemplo requer um número de telefone da Vonage para receber mensagens recebidas. Podemos fazer isso usando o CLI da Vonage diretamente em um terminal.

Adquira um número de telefone virtual

O primeiro passo será adquirir um número (fique à vontade para usar um diferente código de país ISO 3166 alfa-2 , conforme necessário).

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

Embora a rota a ser usada no aplicativo ainda não esteja configurada, você deve nomeá-la /message. O número de telefone precisa estar vinculado a essa rota para que as mensagens recebidas saibam para onde devem ser encaminhadas. Obtenha o ngrok nome do host da configuração anterior e use-o aqui:

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

Agora, já temos o webhook configurado para receber as mensagens SMS recebidas.

Concluir a inscrição

Tudo o que resta neste tutorial é criar a rota do Express para processar os dados recebidos e algumas pequenas funções para, de fato, realizar a tradução.

Criar o Webhook

Primeiro, precisamos criar o código do webhook. A Vonage possui um recurso integrado para definir o comportamento padrão das mensagens SMS. No painel de configurações , você pode alterar o HTTP utilizado. O meu está definido como POST-JSON. Recomendo usar essa configuração, se possível; no entanto, o código usado neste exemplo irá lidar com todas as três opções, caso você não consiga modificar essa configuração.

Default Vonage SMS HTTP MethodDefault Vonage SMS HTTP Method

Abra o index.js arquivo e, na parte inferior, cole o seguinte 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();
  }

};

O trecho acima é o método que passaremos para as rotas. Se a mensagem recebida estiver usando POST , ele utilizará req.body, e utilizará req.query para a GET opção. Desde que a carga útil recebida esteja configurada corretamente, o objeto será encaminhado ao translateText método para exibir a tradução.

Agora você pode adicionar a rota e os HTTP métodos à aplicação.

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

O código acima criará o GET e POST para lidar com qualquer uma das opções da mensagem de webhook de SMS recebida. Se qualquer outro método for usado, uma 405 - Method Not Allowed resposta será retornada.

O webhook já está pronto para uso e a única coisa que falta são as traduções propriamente ditas.

Método de tradução

Na etapa anterior, chamamos translateText. Esta etapa criará esse método.

Ao usar o ibm-watson pacote, primeiro instanciamos a LanguageTranslatorV3 classe, o que nos fornecerá o translate método. Ele é chamado dentro do translateText método e utiliza o text campo do objeto da mensagem SMS recebida. A modelId entrada é qualquer código de duas letras do idioma para o qual se deseja traduzir.

const languageTranslator = new LanguageTranslatorV3({
  version: '2017-09-21',
  authenticator: new IamAuthenticator({
    apikey: process.env.TRANSLATE_IAM_APIKEY,
  }),
  url: process.env.TRANSLATE_URL,
});

function translateText(params) {
  const translateParams = {
    text: params.text,
    modelId: 'en-es',
  };

  languageTranslator.translate(translateParams)
    .then(data => {
      console.log(`Original Text ${params.text}`);
      console.dir(`Translation ${data.result.translations[0].translation}`)
    })
    .catch(err => {
      console.log('error:', err);
    });
}

Agora você pode testar a funcionalidade iniciando o servidor e enviando uma mensagem de texto para o número que você adquiriu anteriormente.

node index.js # Text "Hola" to your phone number # expected response Original Text: Hola Translation: Hello

O objeto de resposta completa do IBM Watson Language Translator também contém muitos detalhes; portanto, você poderia alterar a resposta para incluir console.dir(translationResult, {depth: null}) para visualizar a carga útil completa.

Resumo

O exemplo acima é apenas uma breve introdução à tradução usando o serviço IBM Watson Translation. A partir daqui, você pode traduzir a mensagem recebida e, em seguida, traduzir também a mensagem enviada para o idioma correto (assunto para um futuro post no blog, com certeza).

Você pode encontrar uma versão completa deste tutorial na GitHub da Comunidade Vonage.

Se você quiser saber mais sobre os projetos do Extend que temos, pode acessar https://developer.vonage.com/extend.

Compartilhar:

https://a.storyblok.com/f/270183/384x384/444c073b5e/kellyjandrews.png
Kelly J AndrewsEx-membro da equipe

Kelly J Andrews é defensora de desenvolvedores da Nexmo e vem se dedicando à informática há mais de 30 anos, tendo usado BASIC pela primeira vez aos 5 anos de idade.

Foi só ao criar sua primeira página da web, em 1997, e ao experimentar o JavaScript pela primeira vez que ele descobriu sua verdadeira vocação. Hoje, Kelly luta pelo JavaScript, pelo código testável e pela entrega rápida.

É possível encontrá-lo cantando no karaokê, fazendo truques de mágica ou torcendo pelos Cubs e pelos Fighting Irish.