
Compartilhar:
Aaron era um defensor de desenvolvedores na Nexmo. Engenheiro de software experiente e aspirante a artista digital, Aaron costuma ser visto criando coisas com código ou com eletrônica; às vezes, os dois. Geralmente, dá para perceber quando ele está trabalhando em algo novo pelo cheiro de componentes queimando no ar.
Conecte seu servidor de desenvolvimento local à API da Vonage usando um túnel Ngrok
Tempo de leitura: 7 minutos
Muitas vezes, ao desenvolver demonstrações para conferências, escrevendo posts de blog e “guias práticos” ou ao criar um guia para o nosso portal de desenvolvedores , precisamos expor nosso ambiente de desenvolvimento local à internet pública para que ele possa ser acessado pelas APIs da Vonage.
ngrok diagra
Por que usamos o ngrok?
Nossa equipe de relações com desenvolvedores trabalha remotamente e viaja com frequência; por isso, às vezes trabalhamos de casa, outras vezes estamos em nosso escritório em Londres ou em um café. Para receber webhooks de entrada, precisaríamos configurar um servidor local, redirecionar as portas corretas, garantir que o DNS tenha nosso novo IP público e que a alteração tenha sido propagada, configurar o SSL e assim por diante. Isso não é apenas impraticável, mas provavelmente impossível em certas situações. Mas com o ngrok , podemos expor nosso servidor local em seu próprio subdomínio com suporte a HTTPS por meio de um único comando.
ngrok in terminal
No entanto, observe que, caso você esteja em uma rede corporativa, não deve criar nenhum túnel remoto sem antes consultar o administrador de rede. Consulte a seção abaixo sobre questões de segurança para obter mais detalhes.
A outra opção é implantar nosso código em um servidor remoto. Com plataformas como Heroku e Digital Ocean, isso está ficando cada vez mais fácil, mas ainda há algumas configurações a serem feitas e, normalmente, algum custo envolvido. Mas se tudo o que eu quero fazer é hospedar um arquivo NCCO (Call Control Object) , é improvável que qualquer outro serviço seja mais fácil do que:
Começando a usar o ngrok
O site do ngrok disponibiliza downloads para a maioria dos principais sistemas operacionais; além disso, traz instruções sobre como instalar o ngrok, o que basicamente consiste em descompactá-lo. Costumo mover o arquivo binário do ngrok para /usr/local/bin (ou em outro diretório no meu $PATH) no Mac/Linux para poder chamá-lo facilmente pela linha de comando sem precisar especificar o caminho completo para o binário. O How-to Geek tem um ótimo artigo sobre como editar o PATH do sistema no Windows , caso você queira fazer algo semelhante em um computador com Windows.
Depois de instalado, executar o ngrok é tão fácil quanto digitar o seguinte comando, em que 8000 é o número da porta em que seu servidor local está rodando
Isso iniciará o ngrok no seu terminal.
Depois de iniciado, você deverá ver as URLs públicas que o ngrok criou para você, bem como outras informações, como a região em que seu túnel está em execução, quantas conexões há no momento e um registro das solicitações HTTP recebidas.
Como o ngrok é executado no seu terminal, provavelmente você precisará manter uma janela de terminal aberta para o seu servidor local e outra janela de terminal separada para o ngrok. Como alternativa, você pode usar o GNU Screen ou o tmux. A documentação de ambos é bastante densa. Você pode encontrar boas informações sobre os conceitos básicos do screen pesquisando por “quickstart GNU screen <operating system>”
Repetição de solicitações
Um dos recursos mais úteis do ngrok é a capacidade de reproduzir solicitações.
ngrok web console
Ao iniciar o ngrok, uma das URLs listadas é a da interface web. Essa interface web é executada localmente no seu computador, normalmente na porta 4040, e fornece uma grande variedade de informações sobre o túnel em execução, incluindo métricas sobre as solicitações.
Na guia “Inspecionar”, há também uma lista de todas as solicitações recebidas. Essa lista inclui o tipo de solicitação (GET, POST, HEAD etc.), qual URL foi solicitada e qual código de resposta HTTP foi enviado pelo seu servidor local (200, 404 etc.). Ao clicar em uma solicitação, serão exibidas mais informações, incluindo os cabeçalhos e até mesmo o texto bruto da solicitação/resposta. Isso pode ser de grande valor na depuração de interações com APIs.
Depois de selecionar uma solicitação da lista, você pode reproduzir essa solicitação. Isso reenviará a solicitação para o seu servidor local! Por exemplo, se você estiver desenvolvendo um aplicativo que utiliza a SMS API de Vonage para SMS recebidas, em vez de ter que enviar outro SMS para acionar o webhook, você pode simplesmente reproduzir a última solicitação de SMS recebida.
Recursos adicionais
ngrok tem muitos recursos adicionais, incluindo uma API, por isso recomendo fortemente que você leia a documentação deles para se familiarizar com tudo o que está disponível, já que vou abordar apenas alguns dos recursos mais comuns que usamos durante o desenvolvimento.
Somente HTTPS - Por padrão, o ngrok abre endpoints para tráfego HTTP e HTTPS.
-bind-tls=trueestará configurado para escutar apenas solicitações HTTPSAlterar região - Por padrão, o ngrok usa a região us - Estados Unidos (Ohio), mas você pode escolher entre várias regiões diferentes que possam estar mais próximas
Adicionando a autenticação HTTP básica - Esse recurso requer um Account no ngrok; portanto, você precisará se cadastrar e autorizar seu cliente ngrok primeiro
Recursos pagos
Tudo o que discutimos até agora está disponível sem um account no ngrok ou com um account gratuito. Os recursos só estão disponíveis com uma assinatura paga do ngrok, mas achamos que são superúteis, por isso as incluí.
Domínios personalizados e reservados. Por padrão, o ngrok atribui um nome hexadecimal aleatório ao túnel para você. Esse nome muda toda vez que você reinicia o ngrok (por exemplo, ao fechar acidentalmente o terminal). Ter que atualizar todas as suas URLs de webhook sempre que reiniciar o terminal é um incômodo. Ao usar um domínio personalizado ou reservado, sua URL permanecerá a mesma sempre que você executar o ngrok. Você pode ir um passo além usando seu próprio domínio personalizado.
Lista de endereços IP autorizados (configurada por meio do painel do ngrok). Criar um túnel para sua rede local traz algumas preocupações de segurança; você pode ajudar a mitigá-las colocando na lista de permissões apenas os endereços IP que devem ter acesso ao seu servidor local. Você pode encontrar uma lista dos intervalos de IPs da Vonage que você deve colocar na lista de permissões em nossa base de conhecimento.
Questões de segurança
Se você quiser estragar o dia de um administrador de rede, diga a ele que quer executar um proxy reverso aberto na rede local. O ngrok é um aplicativo fantástico que usamos diariamente aqui na Vonage, mas é importante estar ciente das implicações de segurança decorrentes do uso de um túnel através do firewall da sua rede. Converse com o seu administrador de rede antes de usar o ngrok na rede do trabalho.
Se você estiver trabalhando em casa, em uma cafeteria, em algum outro lugar onde não haja um administrador de rede com quem possa conversar, ou onde você mesmo seja o administrador de rede, recomendamos usar o ngrok com autenticação HTTP básica, lista de endereços IP autorizados e HTTPS forçado.
Você pode encontrar informações sobre como usar a autenticação HTTP Basic com a Vonage, bem como nossos endereços IP públicos em nossa base de conhecimento.
Alternativas
Compartilhar:
Aaron era um defensor de desenvolvedores na Nexmo. Engenheiro de software experiente e aspirante a artista digital, Aaron costuma ser visto criando coisas com código ou com eletrônica; às vezes, os dois. Geralmente, dá para perceber quando ele está trabalhando em algo novo pelo cheiro de componentes queimando no ar.