https://a.storyblok.com/f/270183/139315/e0e4adb096/nexmo-typeform-sms.png

Enviar SMS quando um formulário do Typeform for enviado usando Node.js e a Messages API

Publicado em May 4, 2021

Tempo de leitura: 8 minutos

Neste tutorial, vamos aprender como enviar um SMS quando seu Typeform for enviado usando a Messages API do Nexmo e a estrutura Node.js Hapi.

Este exemplo vai criar um webhook que você poderá conectar ao seu Typeform e que irá notificá-lo sempre que alguém preencher o formulário. Usaremos a Messages API da Nexmo para enviar uma mensagem SMS com a data e o link para visualizar a resposta.

Você pode baixar e executar esse código por conta própria no nexmo-community/nexmo-typeform-SMS no GitHub.

Pré-requisitos

Você precisará criar contas para executar isso por conta própria; portanto, certifique-se de ter os seguintes itens configurados:

O código deste exemplo foi desenvolvido usando Node.js e a framework hapi. Ele funcionará no Node.js versão 8.9.0 ou superior.

Você pode verificar a versão do Node executando node -v na linha de comando. Se o número for 8.9.0 ou superior, está tudo certo. Caso contrário, use uma versão mais antiga do hapi.

Criar o aplicativo básico

Para receber um webhook do Typeform, é necessário ter um aplicativo configurado com pelo menos uma POST rota. Começaremos criando um aplicativo básico com uma POST rota.

Em uma nova pasta, inicialize um novo aplicativo Node.js executando

npm init -y

Em seguida, instale as dependências do projeto:

npm i hapi nexmo@beta

Criar o servidor Hapi

Hapi é um framework simples de usar e centrado na configuração. Ele permite que os desenvolvedores se concentrem em escrever lógica de aplicativo reutilizável, em vez de perder tempo construindo infraestrutura. Gosto dele porque oferece suporte integrado para validação de entrada, cache, autenticação e outros recursos essenciais para a criação de aplicativos web e de serviços.

Vamos criar o arquivo principal do aplicativo adicionando um novo arquivo no diretório raiz chamado index.js. Esse será o nosso servidor de webhooks.

Neste novo arquivo, adicione o seguinte código:

const Hapi = require('hapi');

// create the hapi server and listen on port 3000
const server = Hapi.server({
  port: 3000,
  host: 'localhost'
});

// create a POST route for http://localhost:3000/
server.route({
  method: 'POST',
  path: '/',
  handler: (request, h) => {

    // return a 200 OK HTTP status code
    return h.response().code(200)
  }
});

// initialize the server using async/await
const init = async () => {
  await server.start();
  console.log(`Server running at: ${server.info.uri}`);
};

// log any error and exit
process.on('unhandledRejection', (err) => {
  console.log(err);
  process.exit(1);
});

// run the server
init();

Criar um aplicativo de mensagens e despacho

Configure um novo aplicativo de Mensagens e Despacho por meio do Painel do Nexmo.

Para os fins desta postagem no blog, você não precisa de um webhook de entrada ou de status; portanto, pode usar http://example.com nesses campos.

Create an applicationCreate Application

Lembre-se de clicar também no link “Gerar par de chaves pública/privada” . Isso fará o download de um arquivo chamado private.key.

Localize o private.key arquivo no seu sistema e mova-o para a pasta raiz do seu aplicativo.

Conclua a configuração do aplicativo clicando no botão Criar aplicativo e pronto, a configuração está concluída.

Anote o seu ID de inscrição; você precisará dele na próxima etapa.

Enviar o SMS usando a Messages API

A parte final desta postagem no blog consiste em pegar a solicitação enviada pelo Typeform e enviar uma mensagem SMS com os dados nela contidos.

A Messages API Nexmo cuidará de tudo isso para nós. Usaremos a Biblioteca Cliente Nexmo para Node.js para enviar o SMS.

Se você está acompanhando, instalou a biblioteca quando criamos o esqueleto do aplicativo; agora precisa incluí-la no index.js arquivo e inicializar a Nexmo instância com sua chave e seu segredo da API, o ID do aplicativo das etapas anteriores e o caminho para o private.key que você baixou ao criar seu aplicativo Messages & Dispatch.

No início de index.js , adicione o código a seguir, certificando-se de substituir NEXMO_API_KEY, NEXMO_API_SECRET, NEXMO_APPLICATION_ID e NEXMO_APPLICATION_PRIVATE_KEY_PATH pelas suas próprias credenciais:

const Nexmo = require('nexmo')

const nexmo = new Nexmo({
  apiKey: "NEXMO_API_KEY",
  apiSecret: "NEXMO_API_SECRET",
  applicationId: "NEXMO_APPLICATION_ID",
  privateKey: "NEXMO_APPLICATION_PRIVATE_KEY_PATH"
})

Também precisaremos atualizar o manipulador de rota que criamos para que ele envie uma mensagem de SMS para você quando o Typeform for enviado. Não se esqueça de substituir YOUR_NUMBER pelo seu número de telefone. Não use um + ou 00 ao digitar o número de telefone, comece com o código do país, por exemplo, 447700900000.:

server.route({
  method: 'POST',
  path: '/',
  handler: (request, h) => {
    nexmo.channel.send(
      { "type": "sms", "number": "YOUR_NUMBER" },
      { "type": "sms", "number": "NEXMO" },
      {
        "content": {
          "type": "text",
          "text": `New submission in Typeform ${request.payload.form_response.definition.title} on ${new Date(request.payload.form_response.submitted_at).toDateString()}. You can view it at https://admin.typeform.com/form/${request.payload.form_response.form_id}/results#responses`
        }
      },
      (err, data) => { console.log(data.message_uuid); }
    );

    return h.response().code(200)
  }
});

Com tudo isso configurado, execute o seguinte comando para iniciar o servidor:

node index.js

O aplicativo será lançado na porta 3000.

Use o Ngrok para abrir essa porta para o mundo e anote as URLs que ele gerar para você.

Ngrok outputngrok output

Aqui está um guia prático para trabalhar com o Ngrok , caso você ainda não tenha usado antes.

Resumo? Você pode iniciar o Ngrok (se estiver instalado) executando este comando:

ngrok http 3000

Conecte o webhook ao Typeform

Já concluímos nosso webhook, então agora é hora de conectá-lo a um Typeform. Se precisar de ajuda para fazer isso, há um artigo muito bom na seção de ajuda deles que mostra como conectar um webhook ao seu Typeform. Use a URL do ngrok que você acabou de obter com o comando acima, em vez do pastebin, como URL de destino no guia do Typeform.

Assim que você clicar Test Webhook para verificar se está funcionando, você receberá uma mensagem de SMS com os detalhes.

typeform webhookWebhook

Conclusão

Utilizamos um servidor Hapi para configurar um webhook conectado a um Typeform, que envia uma mensagem SMS usando a Messages API do Nexmo sempre que um usuário preenche o formulário. Você poderia fazer ainda mais, por exemplo, enviar cada resposta do formulário por SMS ou até mesmo usar o Facebook Messenger para preencher o Typeform.

Se você quiser explorar mais as APIs da Nexmo, aqui estão algumas leituras essenciais para você começar:

Compartilhar:

https://a.storyblok.com/f/270183/384x384/dabe7c5397/laka.png
Alex LakatosEx-funcionários da Vonage

Alex Lakatos é um Developer Advocate de JavaScript na Nexmo. Em seu tempo livre, ele atua como voluntário na Mozilla como palestrante técnico e mentor do programa Reps. Como desenvolvedor de JavaScript que trabalha na web aberta, ele vem ampliando seus limites a cada dia. Quando não está programando em Londres, ele gosta de viajar pelo mundo; por isso, é provável que você o encontre em um lounge de aeroporto.