
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.
Traduza mensagens SMS com o IBM Watson e a Vonage
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 Watsonexpress- 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 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.
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 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 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).
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 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 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.
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:
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.