
Compartilhar:
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.
Traduzir mensagens SMS usando o Amazon Translate
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 Translateexpress- framework web para hospedar o webhookdotenv- um pacote para carregar variáveis de ambientebody-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.
Após a instalação, crie um index.js e .env arquivo.
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.
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 User
Dê um nome ao novo usuário e marque a caixa de seleção Programmable Access.
Set 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 Permissions
Verifique as configurações do usuário e, em seguida, clique em Create.
Review 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 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).
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:
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 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.
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:
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.