Olá pessoal,
Boa tarde!!
Neste post, quero lhes mostrar uma novidade que consegui desenvolver essa semana e que achei muito bacana, que é o envio de torpedos SMS a partir de praticamente qualquer linguagem de programação atual (C#, VB.NET, Java, PHP, etc) e inclusive, pelo próprio banco de dados SQL Server utilizando o SQL CLR (também pode ser feito utilizando a xp_cmdshell).
Isso é especialmente útil para criar alertar e monitoramentos em ambientes de produção, onde em caso de qualquer problema grave, você possa ser notificado, onde quer que você esteja, até se estiver sem sinal do 3G ou Wi-FI na hora.
Pode-se utilizar isso para enviar um SMS para o setor comercial de uma empresa quando um cliente enviar uma solicitação de orçamento. Se você tem uma loja virtual, pode enviar torpedos para seus clientes com as alterações de status de um pedido, por exemplo. As possibilidades são muitas!
O que é o Pushbullet?
O Pushbullet é um aplicativo simples com um objetivo principal: transferir coisas do seu smartphone para o computador e vice-versa. É possÃvel enviar arquivos e links para o celular, e receber notificações de qualquer smartphone associado a sua conta no PC, como por exemplo, quando um amigo faz check-in no Swarm, quando alguém está te ligando ou quando a sua agenda te lembra sobre algum compromisso.
Você também pode enviar e receber SMS e responder mensagens do WhatsApp, Facebook Messager, Hangouts e outros sem tocar no smartphone. É fácil: quando alguém enviar uma mensagem pelo WhatsApp, vai aparecer uma notificação interativa no seu computador. Clique em Responder, digite sua mensagem e clique em Enviar.
O Pushbullet também tem alguns truques bem bacanas, como sincronizar a área de transferência entre dispositivos, para que você possa recortar um texto no computador e colar no smartphone
Como funciona essa solução? Como o torpedo é enviado?
O funcionando básico dessa funcionalidade é a seguinte:
- Através de uma linguagem de programação à sua escolha, você irá enviar a requisição para a API do Pushbullet, solicitando o envio do SMS e informando o número do destinatário e a mensagem
- O servidor do Pushbullet irá receber essa requisição e direcionar para o aplicativo associado ao dispositivo solicitado na sua requisição
- O aplicativo do seu celular selecionado irá receber a requisição do servidor e utilizar o recurso de envio de SMS do seu celular
- Torpedo SMS enviado com sucesso para o destinatário!
Quais os requisitos para que essa API funcione?
Como o envio é feito realmente pelo seu celular, as mensagens enviadas pela API ficam disponÃveis na tela de SMS do seu smartphone. Além disso, você precisará ter créditos para realizar o envio do SMS, assim como qualquer envio de SMS normal, ou ter um pacote junto à sua operadora móvel que permita o envio desses torpedos.
Nos meus testes, eu utilizei o meu celular, onde tenho um plano controle da Vivo de 1 GB e torpedos ilimitados para qualquer operadora, em qualquer DDD, então esse plano me atende perfeitamente. Tem até alguns pacotes exclusivos de SMS que permitem envios de torpedos ilimitados por um custo ainda menor.
Como vocês devem ter notado, para que esse recurso funcione, o aparelho celular que será o responsável por enviar os torpedos precisará estar sempre ligado e com acesso à internet.
Qual o custo dessa solução? Existe algum limite de envio?
Um ponto importante que devo comentar, é que a conta Free do Pushbullet só permite o envio de 500 requisições (pushes) por mês. Para remover esse limite e transformá-lo em envios ilimitados, você precisará atualizar sua conta do Pushbullet para a versão PRO (https://www.pushbullet.com/pro), com um custo de $ 4,99 (dólares) ao mês ou $ 3,33 (dólares) ao mês, caso você opte pelo plano anual. Acho o valor bem justo e acessÃvel.
Acredito que é uma solução bem interessante e com um custo ZERO, para quem precisa de poucos envios por mês e já tenha um pacote de dados com suporte a torpedos ilimitados em seu celular.
Mesmo que você tenha uma necessidade de enviar muitos torpedos SMS e precise adquirir um pacote de dados com torpedos ilimitados + 1 GB de internet 4G (40 reais por mês) e atualizar a sua conta do Pushbullet para a versão PRO (10 reais por mês), o custo mensal por essa solução é bem pequeno (52 reais por mês) e muito inferior às soluções empresariais que as operadoras e outras empresas disponibilizam no mercado (e com limite de quantidade de torpedos enviados).
Fiz uma pesquisa rápida na internet e vi que algumas empresas cobram 100 reais por mês para ter direito a enviar 1.000 torpedos/mês e algumas cobram R$ 0,16 por torpedo (500 torpedos por mês = 80 reais).
Criando sua conta e adicionando os dispositivos
Para realizar essa atividade, vou utilizar a API do Pushbullet, que é bem documentada de fácil utilização (https://docs.pushbullet.com/) de utilizar para acessar todos esses recursos utilizando sua linguagem de programação favorita.
O primeiro passo é criar a sua conta no site do aplicativo (https://www.pushbullet.com/). Ele suporta integração com Facebook e Google, permitindo que o serviço leia seus dados de um desses dois serviços e você economize tempo digitando os dados cadastrais.
Uma vez cadastrado, adicione os seus dispositivos móveis baixando e instalando o aplicativo do Pushbullet neles. Uma vez instalado e logado no Pushbullet pelo app no seu celular, ele será adicionado à sua lista de dispositivos da sua conta.
Recuperando o Access Token, ID do Usuário e ID do Dispositivo
Uma vez que você criou sua conta e adicionou os dispositivos, vá na tela de Preferências (Settings – https://www.pushbullet.com/#settings) e na sessão “Access Tokens” clique no botão “Create Access Tokens”
Após clicar no botão, um código será mostrado na sua tela. Anote esse código, pois ele será o código de acesso para autenticar as requisições que iremos enviar.
Agora que você já tem a sua conta no Pushbullet e já tem o seu Access Token, precisamos recuperar o seu ID de usuário e o ID do seu dispositivo celular que será utilizado para enviar os torpedos.
Para recuperar essas informações, indico o download do binário do cURL, disponÃvel neste link (Windows) ou neste link (Qualquer SO) ou a utilização da extensão Postman, do Google Chrome (mais prático e melhor visualização dos resultados)
Uma vez baixado e instalado (no Windows, copie o executável para o diretório C:\Windows), vamos utilizar o cURL para recuperar o ID da nossa conta, utilizando o comando abaixo:
1 |
curl --header "Access-Token: <seu_access_token>" https://api.pushbullet.com/v2/users/me -k |
ou realizando a mesma requisição com o Postman:
Com isso, anote o código do iden retornado. Esse é o seu ID de usuário, uma vez que você pode ter vários usuários associados a sua conta.
Agora vamos recuperar o ID do nosso dispositivo celular, que fará o envio do SMS, utilizando o comando abaixo no cURL:
1 |
curl --header "Access-Token: <seu_access_token>" https://api.pushbullet.com/v2/devices -k |
Anote o código iden retornado do seu dispositivo. Esse é o ID do dispositivo.
Desenvolvendo a solução de envio SMS com a API do Pushbullet
Agora que já temos os ID’s necessários para realizar o envio do torpedo, podemos iniciar a nossa rotina de envio de SMS.
Solução escrita na linguagem de programação C#, para ser utilizada no SQL Server pelo CLR Solução escrita na linguagem de programação Web PHP Solução genérica utilizando o binário cURL.exeAnd that's it, folks!
Espero que tenham gostado desse post.
Qualquer dúvida, deixem aqui nos comentários!
sql sql server enviar torpedo send sms php java c# clr .net csharp ruby curl command line code script snipplet script
sql sql server enviar torpedo send sms php java c# clr .net csharp ruby curl command line code script snipplet script
Bom dia Dirceu,
tenho múltiplos bancos de dados Linkados a uma aplicação com vários acessos, com a API todas os bancos conseguiriam enviar sms. a duvida é se preciso ter varias contas para atender a todos?
Dirceu Boa Noite, fiz tudo conforme seu post, estou recebendo o retorno “{}” do HttpWebRequest porém o SMS não é disparado. Estou fazendo o disparo direto da minha aplicação C#. Essa solução funciona apenas no CLR ?
Boa tarde, Dirceu!
Estava com uma necessidade semelhante e esse seu artigo foi realmente um achado!
Não sei se você passou por algum problema, mas eu estou com uma situação estranha: em minha máquina, num banco local, deu tudo certo; porém ao publicar a mesma solução de CLR em outros 2 servidores diferentes, quando executo a procedure ela fica rodando sem parar e só envia a mensagem quando cancelo a sua execução; e se tendo executá-la por um aplicativo em C# no Visual Studio ela dá erro de timeout e não manda nada.
Sabe o que poderia estar causando isso? Sem querer abusar…
Boa tarde Dirceu,
Tentei testar o exemplo acima e recebi a resposta {} mas o sms não foi enviado, tenho que por o indicativo do paÃs?
Alberto, boa tarde. O número deve estar no formato +55DDDNumero.
Bom dia estou tentando criar a classe Retorno como informando” SQL Server – Como enviar avisos e mensagens de erro para o banco pelo CLR (C#). ” porem esta dando um erro em
using (var Conexao = new SqlConnection(Servidor.Localhost))
poderia me auxiliar
Gustavo, bom dia.
Editei o post e adicionei o código-fonte do arquivo Servidor.cs, que é utilizado pela classe Retorno.
Obrigado!