https://a.storyblok.com/f/270183/166974/c2d583f01a/tw_translate-sms_amazon_1200x675.png

Traduzir mensagens SMS usando o Amazon Translate

Publicado em May 11, 2021

Tempo de leitura: 10 minutos

No meu post anterior, mostrei como podemos configurar a tradução de mensagens de texto com a API do Google Translate. Vou dar continuidade a essa mesma ideia neste post, utilizando o 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 AWS Translate.

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.

  • aws-sdk - este é o SDK oficial do AWS Translate

  • 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 aws-sdk express dotenv body-parser # or yarn init && yarn add aws-sdk 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 AWS = require("aws-sdk");

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 AWS Translate

Depois de configurar os itens iniciais, você já pode criar um usuário do IAM com a função do AWS Translate associada.

Create New IAM UserCreate New IAM User

Dê um nome ao novo usuário e marque a caixa de seleção Programmable Access.

Set User DetailsSet User Details

Em seguida, o usuário do IAM precisará da TranslateFullAccess política anexada. Isso dará ao usuário do IAM acesso à funcionalidade do Translate.

Set User PermissionsSet User Permissions

Verifique as configurações do usuário e, em seguida, clique em Create.

Review and Create UserReview and Create User

Assim que o processo de criação estiver concluído, obtenha o Access Key ID e Secret Access Key.

Get the Access Key ID and SecretGet the Access Key ID and Secret

Crie um novo .env arquivo e copie e cole o seguinte:

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_REGION=

Usando as credenciais do usuário do IAM recém-criado, preencha os detalhes no .env arquivo, salve e continue 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 da Vonage configurado para que as mensagens SMS recebidas sejam encaminhadas para lá.

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á configurado para 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 o webhook de mensagens recebidas estiver usando POST , ele utilizará req.body, e usará req.query para a GET opção. Desde que a carga de dados de entrada esteja configurada corretamente, o objeto será encaminhado para o 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.

O uso do aws-sdk pacote é realmente muito simples. Primeiro, instanciamos a AWS.Translate classe, o que nos fornecerá o translate.translateText método. Ele é chamado dentro do translateText método e utiliza o text campo do objeto da mensagem SMS recebida. A SourceLanguageCode idioma é definido como auto, e a TargetLanguageCode entrada é qualquer código de duas letras para o idioma para o qual a tradução será feita.

function translateText(params) {
  var translate = new AWS.Translate({region: process.env.AWS_REGION})
  var opts = {
    SourceLanguageCode: 'auto',
    TargetLanguageCode: 'en',
    Text: params.text
  };
  translate.translateText(opts, function(err, data) {
    if (err) {
      console.log('error', err);
    }
    else{
      console.log(`Original Text: ${params.text}`);
      console.dir(`Translation: ${data.TranslatedText}`);
    }
  });
}

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 AWS Translate faz um trabalho incrível ao identificar o idioma de origem e processar a tradução rapidamente. Divirta-se e experimente.

Resumo

O exemplo acima é apenas uma breve introdução à tradução, mas deve ser um bom ponto de partida para você começar. A partir daí, você pode traduzir a mensagem recebida e, em seguida, traduzir também a mensagem enviada para o idioma correto (assunto para um próximo post no blog, com certeza).

Você pode encontrar uma versão completa deste tutorial em https://github.com/nexmo-community/sms-translate-aws-js.

Se você quiser saber mais sobre os projetos do Extend que temos, pode visitar integração para saber mais.

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.