Como enviar SMS a partir de F#

A maneira mais simples de enviar SMS a partir de F# é utilizar a API HTTP/Rest de SMS integrada do Ozeki SMS Gateway. Ao usar esta API, você enviará mensagens SMS através de uma requisição HTTP Post para o gateway de SMS. A requisição HTTP Post irá conter uma mensagem formatada em JSON. O gateway de SMS irá enviar este SMS para o telefone do destinatário e retornará uma resposta HTTP 200 OK para a sua requisição.

como enviar um sms a partir de f
Figura 1 - Como enviar um SMS a partir de F#

Exemplo de código para enviar SMS em F# Program.fs
open System
open Ozeki.Libs.Rest

[]
let main argv =
    let configuration = new Configuration (
        Username = "http_user",
        Password = "qwe123",
        ApiUrl = "http://127.0.0.1:9509/api")

    let msg = new Message(
        ToAddress = "+36201111111", 
        Text = "Olá, Mundo!")

    let api = new MessageApi(configuration)

    let result = api.Send(msg)

    printfn $"{result.ToString()}"
    0
Baixar SendSms.fs

O código-fonte explicado neste artigo pode ser baixado, utilizado e modificado gratuitamente.
Download: SendSms.fs.zip (59.4Kb)

O que está no arquivo SendSms.fs.zip?

O arquivo SendSms.fs.zip contém a biblioteca Ozeki.Libs.Rest, que fornece todas as ferramentas necessárias para enviar e receber mensagens SMS. Você também encontrará o projeto SendSms no zip, que contém o código de exemplo para mostrar como enviar um SMS. Este código de exemplo está listado abaixo.

Figura 2 - O que está dentro de SendSms.fs.zip

Como enviar SMS a partir de F# (Passos rápidos)

Para enviar SMS a partir de F#:

  1. Instale o Ozeki SMS Gateway
  2. Conecte o Ozeki SMS Gateway à rede móvel
  3. Envie um SMS de teste a partir da interface gráfica do Ozeki
  4. Crie um usuário de API HTTP para SMS
  5. Inicie o Visual Studio
  6. Crie uma solução chamada SendSms.sln
  7. Adicione um projeto de console em F#: SendSms.fsproj
  8. Insira o código em Program.fs ou SendSms.fs
  9. Leia a resposta HTTP
  10. Verifique os logs no gateway de SMS
Como escrever seu primeiro programa em F# (Comandos rápidos)

Para escrever seu primeiro programa em F#:

  1. Configure o Visual Studio
  2. Baixe o arquivo SendSms.fs.zip
  3. Extraia o arquivo .zip da pasta de Downloads
  4. Abra o arquivo SendSms.sln no Visual Studio
  5. Inicie o aplicativo Ozeki SMS Gateway
  6. Clique em usuário HTTP na aba Usuários e aplicativos
  7. Execute SendSMS.fs no Visual Studio
  8. Verifique a caixa Enviados no Ozeki SMS Gateway
  9. Selecione a conexão do cliente SMPP na página inicial
  10. Marque todas as caixas de nível de Log na aba Avançado do menu Configurar
  11. Execute Program.fs novamente no Visual Studio
  12. Encontre o evento se o destinatário recebeu sua mensagem
Instale o Ozeki SMS Gateway e crie um usuário de API HTTP

Para poder enviar SMS a partir de F#, primeiro você precisa instalar o Ozeki SMS Gateway. O gateway de SMS pode ser instalado no mesmo computador onde você desenvolve seu código em F# no Visual Studio. Após a instalação, o próximo passo é conectar o Ozeki SMS Gateway à rede móvel. Você pode enviar um SMS de teste a partir da interface gráfica do Ozeki para verificar se sua conexão com a rede móvel está funcionando. O passo final para preparar seu ambiente é criar um usuário de API HTTP para SMS. Crie um usuário com o nome "http_user" e senha "qwe123" para fazer o exemplo funcionar sem modificações.

Após a configuração do ambiente, você pode executar seu código em F#.

URL da API HTTP para enviar SMS a partir de F#

Para enviar SMS a partir de F#, seu código em F# terá que fazer uma requisição HTTP para o gateway de SMS. A URL da API é mostrada abaixo. Observe que o endereço IP (127.0.0.1) deve ser substituído pelo endereço IP do seu gateway de SMS. Se o Ozeki SMS Gateway estiver instalado no mesmo computador onde o aplicativo de SMS em F# está sendo executado, pode ser 127.0.0.1. Se estiver instalado em um computador diferente, deve ser o endereço IP desse computador.

http://127.0.0.1:9509/api?action=rest
Autenticação HTTP para enviar SMS a partir de F#

Para autenticar o cliente de SMS em F#, você precisa enviar o nome de usuário e senha em uma string codificada em base64 para o servidor em uma requisição HTTP. O formato utilizado é: base64(nome de usuário+":"+senha). Em C#, você pode usar o seguinte código para fazer essa codificação:

var encoding = Encoding.GetEncoding("iso-8859-1");
var usernamePassword = username + ":" + password;
var usernamePasswordEncoded = Convert.ToBase64String(encoding.GetBytes(usernamePassword));

Por exemplo, se você codificar o nome de usuário 'http_user' e a senha 'qwe123', você obterá a seguinte string codificada em base64: aHR0cF91c2VyOnF3ZTEyMw==. Para enviar

Cabeçalho da requisição HTTP para enviar SMS a partir de F#

Para enviar as mensagens SMS, você precisa incluir as seguintes linhas como cabeçalhos na requisição HTTP. Observe que incluímos um tipo de conteúdo e um cabeçalho de Autorização.

Content-Type: application/json
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Solicitação HTTP para enviar SMS a partir de F#

Para enviar o SMS, sua aplicação em F# enviará uma solicitação HTTP semelhante à mostrada abaixo. Observe que esta solicitação contém uma parte de cabeçalho HTTP e uma parte de corpo HTTP. O corpo HTTP é uma string de dados codificada em JSON. Ela contém o número do destinatário e o texto da mensagem.

POST /api?action=sendmsg HTTP/1.1
Connection: Keep-Alive
Content-Length: 336
Content-Type: application/json
Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
Host: 127.0.0.1:9511

{
  "messages": [
    {
      "message_id": "9380ab2d-a185-4cc1-abad-c18ec459e40f",
      "to_address": "+36201111111",
      "text": "Olá, Mundo!",
      "create_date": "2021-06-11 13:45:30",
      "valid_until": "2021-06-18 13:45:30",
      "time_to_send": "2021-06-11 13:45:30",
      "submit_report_requested": true,
      "delivery_report_requested": true,
      "view_report_requested": true,
      "tags": []
    }
  ]
}

Resposta HTTP recebida pelo exemplo de SMS em F#

Assim que o gateway de SMS receber esta solicitação, ele gerará uma resposta HTTP. A resposta HTTP conterá um código de status para indicar se a solicitação de envio de SMS foi bem-sucedida ou não. Ela também retornará uma estrutura codificada em JSON para fornecer detalhes úteis sobre o envio da mensagem.

HTTP/1.1 200 OK
User-Agent: OZEKI 10.3.116 (www.myozeki.com)
Content-Type: application/json; charset=utf8
Last-Modified: Fri, 11 Jun 2021 13:06:37 GMT
Server: 10/10.3.116
Transfer-Encoding: chunked

{
  "http_code": 200,
  "response_code": "SUCCESS",
  "response_msg": "Mensagens enfileiradas para entrega.",
  "data": {
    "total_count": 1,
    "success_count": 1,
    "failed_count": 0,
    "messages": [
      {
        "message_id": "9380ab2d-a185-4cc1-abad-c18ec459e40f",
        "from_station": "%",
        "to_address": "+36201111111",
        "to_station": "%",
        "text": "Olá, Mundo!",
        "create_date": "2021-06-11 13:45:30",
        "valid_until": "2021-06-18 13:45:30",
        "time_to_send": "2021-06-11 13:45:30",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": false,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ],
        "status": "SUCCESS"
      }
    ]
  }
}

Como enviar SMS a partir de F# (Tutorial em vídeo)

Este vídeo mostra como criar um novo projeto de console .Net Core no Visual Studio, como nomeá-lo para SendSms.sln. Uma vez que a solução é criada, você pode notar que um SendSms.fsproj é adicionado à solução, e por padrão o arquivo Program.cs é aberto. Você pode renomear o Program.fs para SendSms.fs se desejar. Você também verá no vídeo como o código de exemplo abaixo pode ser copiado para o arquivo Program.fs, e como ele pode ser compilado e executado.

Vídeo 1 - Como baixar e abrir a solução (Tutorial em vídeo)

SendSms.sln

O código de exemplo abaixo faz parte da solução do Visual Studio SendSms.sln. Uma solução do Visual Studio pode conter vários projetos e vários arquivos. Nesta solução há apenas dois projetos: SendSms.fsproj, Ozeki.Libs.Rest.csproj, e um arquivo: Program.fs.

Figura 3 - SendSms.sln

Como verificar se o SMS foi aceito pelo usuário HTTP

Depois que o SMS for enviado, é uma boa ideia verificar seu gateway de SMS, para ver o que foi recebido. Você pode verificar o log abrindo os detalhes do usuário HTTP a partir do console de gerenciamento do Ozeki SMS Gateway. O vídeo a seguir mostra o que procurar.

Vídeo 2 - Como enviar SMS com o código F# acima (Tutorial em vídeo)

Como verificar se o SMS foi enviado para a rede móvel

O passo final para verificar o procedimento é dar uma olhada nos logs da conexão com a rede móvel. Você pode precisar ativar o registro na configuração da conexão antes de enviar a mensagem para ver os logs. Se o registro estiver ativado, você verá o número de telefone e o texto da mensagem que você enviou.

Vídeo 3 - Como ativar o registro no Ozeki SMS Gateway (Tutorial em vídeo)

Executando o exemplo de SMS em F# no Windows

Quando você usa o Windows para executar este exemplo de SMS escrito em F#, você notará que obtém um desempenho ligeiramente melhor do que quando o executa no Linux. Para entender por que isso acontece, você deve lembrar que o F# usa o framework .NET para execução de código. Isso ocorre porque a implementação do .NET no Windows é otimizada para desempenho, enquanto o mono, a implementação do .NET no Linux, ainda tem alguns avanços a fazer nesse campo.

Conclusão

O artigo acima mostrou os passos para envio de SMS em F#. Com as instruções fornecidas, o envio de mensagens com F# e Ozeki SMS Gateway é rápido e simples. O Ozeki SMS Gateway oferece excelentes capacidades de registro, permitindo que erros sejam rastreados facilmente. Você ou sua organização podem alcançar os clientes de forma rápida com esta solução e, como foi possível ver, não é necessário ser um especialista em F#.

Para continuar estudando, visite a página de tutoriais da Ozeki, onde há mais informações sobre como trabalhar com F#, como agendamento de SMS.

Agora, a única coisa que você precisa fazer é baixar o Ozeki SMS Gateway e começar a trabalhar!

More information