
Compartilhar:
Software Developer who loves building awesome tools and products. I currently work with Laravel, PHP and Vue.
Encaminhar SMS da Nexmo para o Slack usando Express e Node
Introdução
Os números virtuais da Nexmo permitem que você envie ou receba mensagens de texto e chamadas telefônicas, o que pode servir como um meio eficaz de comunicação com seus usuários ou clientes.
Neste tutorial usando Node e Express, veremos como podemos notificar automaticamente um canal do Slack sempre que um número virtual da Nexmo receber uma mensagem de texto. A notificação conterá o conteúdo da mensagem de texto recebida. Isso pode ser muito útil, pois significa que sempre seremos notificados quando recebermos uma mensagem de texto, e o canal do Slack pode funcionar como um local central para acompanhar as mensagens de texto recebidas.
Pré-requisitos
ngrok que permite expor seu servidor web local à internet. Para saber mais sobre como configurar seu ambiente local com o ngrok, você pode conferir a documentação aqui.
Instalar dependências do Node
Na raiz do diretório do seu projeto, execute o seguinte comando para criar um package.json arquivo.
Isso exibirá uma série de perguntas para você responder; as configurações padrão funcionam bem para este tutorial. Para instalar todas as dependências do nosso projeto, execute o seguinte comando:
express é uma estrutura de aplicativos web para Node.js.
body-parser é um middleware do Express para analisar os corpos das solicitações recebidas.
slack-notify é um wrapper em Node.js para a API de Webhooks do Slack , que facilita o envio de notificações para o Slack a partir do seu aplicativo.
Em seguida, execute o comando a seguir para criar um index.js arquivo na raiz do diretório do seu projeto:
Adicione o código a seguir ao arquivo que acabamos de criar:
const express = require('express');
const app = express();
const bodyParser = require('body-parser')
const port = 3000;
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.listen(port, () => {
console.log(`Listening on ${port}`);
})
Isso cria um aplicativo Express com um servidor web que escuta na porta 3000. Também configuramos o aplicativo para utilizar o analisador JSON do body-parser pacote que instalamos anteriormente e definimos a urlencoded opção como true. Vamos adicionar um comando para executar esse servidor.
No package.json arquivo, adicione o seguinte código à scripts seção:
"scripts": {
"start": "node index.js"
},Agora podemos executar o aplicativo usando o seguinte comando
Criação de webhooks de entrada no Slack
Para poder enviar mensagens para o Slack, precisamos criar uma URL de webhook de entrada. Para começar, acesse Slack e crie um aplicativo, caso ainda não tenha um.

Escolha um nome para seu aplicativo e associe-o ao espaço de trabalho para o qual você deseja enviar notificações. Depois de criar o aplicativo, será exibida uma tela semelhante à que aparece abaixo:

Selecione a aba “Webhooks de entrada” e clique no Activate incoming webhooks botão de alternância para ativá-la. Em seguida, clique no Add New Webhook to Workspace botão. Selecione o canal no qual você deseja publicar as notificações e, em seguida, clique allow para autorizar o aplicativo. Você será redirecionado de volta à página de configurações com uma nova URL de webhook criada para você.

Anote a URL do Webhook, pois vamos precisar dela em breve.
Criar um webhook para mensagens recebidas
Precisamos definir um route em nosso aplicativo para onde a Nexmo enviará uma POST solicitação sempre que nosso número virtual receber uma mensagem de texto. Isso route será responsável por acionar as notificações no Slack. Antes de criarmos o route, precisamos require o slack-notify pacote que instalamos anteriormente.
Adicione o código a seguir ao index.js arquivo na require seção:
const webhookUrl = 'https://hooks.slack.com/services/xxxx/xxx';
const slack = require('slack-notify')(webhookUrl)Substitua webhookUrl pela URL do Webhook que o Slack gerou para você na seção anterior.

Sempre que recebermos uma mensagem, a Nexmo enviará uma carga útil semelhante à da captura de tela acima. A text chave contém o conteúdo da mensagem recebida.
Vamos adicionar a rota agora. Edite o index.js arquivo com o seguinte código:
app.post("/webhooks/inbound-message", (req, res) => {
const { text } = req.body
slack.alert({
text: 'New SMS message',
fields: {
'Message' : text
}
});
res.status(200).end();
})
A text chave do corpo da solicitação conterá o conteúdo da mensagem recebida. Usando a desestruturação, atribuímos a text chave a uma text const e, por sua vez, acionamos o envio da notificação para o Slack usando o alert() método. Você pode encontrar os diferentes métodos slack-notify suportados aqui.
A estrutura final do index.js arquivo deve ficar assim:
const express = require('express');
const app = express();
const bodyParser = require('body-parser')
const port = 3000;
const webhookUrl = 'https://hooks.slack.com/services/xxxx/xxx';
const slack = require('slack-notify')(webhookUrl)
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.post("/webhooks/inbound-message", (req, res) => {
const { text } = req.body
slack.alert({
text: 'New SMS message',
fields: {
'Message' : text
}
});
res.status(200).end();
})
app.listen(port, () => {
console.log(`Listening on ${port}`);
})
Configurando o ngrok
Para tornar nosso aplicativo acessível ao público pela web, precisaremos configurar o ngrok. Você pode aprender como configurar o ngrok aqui. Como nosso aplicativo está rodando atualmente na porta 3000, basta executar o seguinte comando:
Você deverá ver uma tela semelhante à que aparece abaixo:

Copie o primeiro URL de redirecionamento, pois vamos utilizá-lo em breve em nossa conta do Nexmo.
Adicionar a URL de entrada do Webhook ao Nexmo
Na Numbers seção no seu Painel do Nexmo, clique no ícone de engrenagem correspondente ao número para o qual você deseja receber notificações do Slack. Se você não tiver nenhum número virtual, precisará adquirir um.

Será exibida uma janela modal semelhante à que aparece abaixo:

Configure a URL do webhook de entrada com a ngrok URL que anotamos anteriormente. (http://1e389185.ngrok.io/webhooks/inbound-message)
Testes
Para verificar se nosso aplicativo funciona conforme o esperado, reinicie seu servidor Node.js e envie uma mensagem do seu celular para o seu número Nexmo.

Dê uma olhada no seu canal do Slack; você deve ver a notificação.

Conclusão
Neste tutorial, vimos como podemos receber notificações do Slack usando o Nexmo. Este tutorial pode servir como um ótimo guia inicial para a criação de Applications com o Nexmo e o Slack. Você pode encontrar o repositório deste tutorial aqui.