SMS bidirecional para engajamento do cliente

O SMS programável não serve apenas para notificações unidirecionais. Ao combinar notificações enviadas com mensagens recebidas, você cria interações semelhantes a um chat entre sua empresa e seus clientes.

Neste tutorial

Veja como é rápido integrar a comunicação bidirecional ao seu aplicativo: você envia uma notificação de entrega para o número de telefone do cliente e lida com a resposta dele quando ele quiser alterar o horário de entrega.

O fluxo de trabalho do seu aplicativo é o seguinte:

Para fazer isso:

  1. Configurar um número virtual da Vonage - alugar um número virtual e configurar os endpoints do webhook para mensagens recebidas
  2. Criar um aplicativo web básico - crie um aplicativo da Web para coletar o número de telefone do seu cliente.
  3. Enviar uma notificação por SMS - envie ao seu cliente uma notificação de entrega por SMS e solicite uma resposta.
  4. Processar a mensagem de resposta - processar e confirmar o recebimento da resposta por SMS.

Pré-requisitos

Para seguir este tutorial, você precisará de:

Configurar um número virtual da Vonage

A Vonage encaminha as mensagens recebidas para o endpoint do webhook associado ao seu número virtual da Vonage.

Você gerencia números virtuais usando o API para desenvolvedores ou o CLI da Vonage. Os exemplos a seguir utilizam a CLI da Vonage para alugar um número da Vonage:

vonage numbers search US

✅ Searching for numbers

There is 1 number available for purchase in United States

Number       Type    Features         Monthly Cost  Setup Cost
-----------  ------  ---------------  ------------  ----------
16127779311  Mobile  MMS, SMS, VOICE  €0.900.00

Use vonage numbers buy to purchase.
vonage numbers search US

✅ Searching for numbers

There is 1 number available for purchase in United States

Number       Type    Features         Monthly Cost  Setup Cost
-----------  ------  ---------------  ------------  ----------
16127779311  Mobile  MMS, SMS, VOICE0.900.00

Use vonage numbers buy to purchase.
vonage numbers search US ✅ Searching for numbers There is 1 number available for purchase in United States Number Type Features Monthly Cost Setup Cost ----------- ------ --------------- ------------ ---------- 16127779311 Mobile MMS, SMS, VOICE €0.90 €0.00 Use vonage numbers buy to purchase.
vonage numbers buy US 16127779311 
✅ Searching for numbers
Are you sure you want to purchase the number 16127779311 for0.90? [y/n] y

✅ Purchasing number
Number 16127779311 purchased

Number: 16127779311 
Country: 🇺🇸 United States
Type: Mobile
Features: MMS, SMS, VOICE
Monthly Cost: €0.90
Setup Cost: €0.00
Linked Application ID: Not linked to any application
Voice Callback: Not Set
Voice Callback Value: Not Set
Voice Status Callback: Not Set
vonage numbers buy US 16127779311 
✅ Searching for numbers
Are you sure you want to purchase the number 16127779311 for0.90? [y/n] y

✅ Purchasing number
Number 16127779311 purchased

Number: 16127779311 
Country: 🇺🇸 United States
Type: Mobile
Features: MMS, SMS, VOICE
Monthly Cost: €0.90
Setup Cost: €0.00
Linked Application ID: Not linked to any application
Voice Callback: Not Set
Voice Callback Value: Not Set
Voice Status Callback: Not Set
vonage numbers buy US 16127779311 ✅ Searching for numbers Are you sure you want to purchase the number 16127779311 for €0.90? [y/n] y ✅ Purchasing number Number 16127779311 purchased Number: 16127779311 Country: 🇺🇸 United States Type: Mobile Features: MMS, SMS, VOICE Monthly Cost: €0.90 Setup Cost: €0.00 Linked Application ID: Not linked to any application Voice Callback: Not Set Voice Callback Value: Not Set Voice Status Callback: Not Set

Em seguida, associe o número virtual ao seu endpoint de webhook que processa SMS recebidas:

vonage numbers update US 16127779311 `
  --voice-status-callback='https://example.com/voice/status' `
  --voice-callback-value='https://example.com/voice/callback' `
  --voice-callback-type='sip'
  
Searching for number to update [======================================] 1/1 100%

Number updated successfully

Number: 16127779311 
Country: 🇺🇸 United States
Type: Mobile
Features: MMS, SMS, VOICE
Monthly Cost: €0.90
Setup Cost: €0.00
Linked Application ID: Not linked to any application
Voice Callback: sip
Voice Callback Value: https://example.com/voice/callback
Voice Status Callback:https://example.com/voice/status
vonage numbers update US 16127779311 ^
  --voice-status-callback='https://example.com/voice/status' ^
  --voice-callback-value='https://example.com/voice/callback' ^
  --voice-callback-type='sip'
  
Searching for number to update [======================================] 1/1 100%

Number updated successfully

Number: 16127779311 
Country: 🇺🇸 United States
Type: Mobile
Features: MMS, SMS, VOICE
Monthly Cost: €0.90
Setup Cost: €0.00
Linked Application ID: Not linked to any application
Voice Callback: sip
Voice Callback Value: https://example.com/voice/callback
Voice Status Callback:https://example.com/voice/status
vonage numbers update US 16127779311 \ --voice-status-callback='https://example.com/voice/status' \ --voice-callback-value='https://example.com/voice/callback' \ --voice-callback-type='sip' Searching for number to update [======================================] 1/1 100% Number updated successfully Number: 16127779311 Country: 🇺🇸 United States Type: Mobile Features: MMS, SMS, VOICE Monthly Cost: €0.90 Setup Cost: €0.00 Linked Application ID: Not linked to any application Voice Callback: sip Voice Callback Value: https://example.com/voice/callback Voice Status Callback:https://example.com/voice/status

Nota: certifique-se de que seu servidor esteja em funcionamento e disponível publicamente antes de associar o endpoint do webhook ao seu número virtual. A Vonage precisa receber uma resposta 200 OK do seu endpoint do webhook para que a configuração seja bem-sucedida. Se você estiver desenvolvendo localmente, use uma ferramenta como ngrok para expor seu servidor web local à Internet.

Agora que você configurou seu número virtual, pode enviar notificações de entrega de SMS.

Criar um aplicativo web básico

Uso Sinatra para criar um aplicativo web de página única:

Gemfile

source 'https://rubygems.org'

# our web server
gem 'sinatra'

app.rb

# web server and flash messages
require 'sinatra'

# load environment variables
# from .env file
require 'dotenv'
Dotenv.load

# Index
# - collects a phone number
#
get '/' do
  erb :index
end

Adicione um formulário HTML para coletar o número de telefone para o qual você enviará uma notificação por SMS:

views/index.erb

<form action="/notify" method="post">
  <div class="field">
    <label for="number">
      Phone number
    </label>
    <input type="text" name="number">
  </div>

  <div class="actions">
    <input type="submit" value="Notify">
  </div>
</form>

O formulário captura o número de telefone no E.164 formato esperado pela SMS API:

Enviar uma notificação por SMS

Neste tutorial, para enviar um SMS, você deve adicionar o SDK do servidor Vonage para Ruby para o seu aplicativo:

Gemfile

# the nexmo library
gem 'vonage'
# a way to load environment
# variables
gem 'dotenv'

Use sua API da Vonage chave e segredo para inicializar o cliente:

app.rb

# Vonage library
require 'vonage'
vonage = Vonage::Client.new(
  api_key: ENV['VONAGE_API_KEY'],
  api_secret: ENV['VONAGE_API_SECRET']
)

Nota: não armazene suas credenciais de API no código; use variáveis de ambiente.

Para receber respostas às suas mensagens SMS de notificação, você deve definir seu número virtual como o ID do remetente para as mensagens enviadas ao fazer uma solicitação para SMS API:

app.rb

# Notify
# - Send the user their delivery
#   notification, asking them
#   to respond back if they
#   want to make any changes
#
post '/notify' do
  notification = "Your delivery is scheduled for tomorrow between " +
                 "8am and 2pm. If you wish to change the delivery date please " +
                 "reply by typing 1 (tomorrow), 2 (Thursday) or 3 (deliver to"
                 "post office) below.<br/><br/>";

  vonage.sms.send(
    from: ENV['VONAGE_NUMBER'],
    to: params['number'],
    text: notification
  )

  "Notification sent to #{params['number']}"
end

Para verificar se essa mensagem SMS foi recebida pelo cliente, verifique o recibo de entrega. Este tutorial não Verify os comprovantes de entrega.

Processar a mensagem de resposta

Quando seu cliente responder à sua mensagem de notificação por SMS, a Vonage encaminha a mensagem recebida para o endpoint do webhook associado ao número virtual.

Neste aplicativo tutorial, você processa o webhook recebido, extrai o texto e o número e envia uma mensagem de confirmação de volta ao cliente.

app.rb

# Receive incoming message
#
# - Receives incoming SMS
#   message, stores it, and
#   notifies sender
#
get '/update' do
  choice = params['text']
  number = params['msisdn']

  # You can store or validate
  # the choice made here

  message = "Thank you for picking option #{choice}. " +
            "Your delivery is now fully scheduled in."

  vonage.sms.send(
    from: ENV['VONAGE_NUMBER'],
    to: number,
    text: message
  )

  body ''
end

O armazenamento e a validação das entradas dos clientes estão fora do escopo deste tutorial.

Agora responda à mensagem de texto que você recebeu anteriormente. Você deverá ver que ela foi processada pelo seu aplicativo e receberá uma confirmação da sua escolha em questão de segundos.

Conclusão

É assim que rápido é enviar e receber SMS no seu aplicativo. Com apenas algumas linhas de código, você enviou um SMS para o celular de um cliente usando a SMS API, processou uma resposta e respondeu com uma confirmação.

Obter o código

Todo o código deste tutorial está disponível no Repositório do GitHub sobre SMS bidirecional para engajamento do cliente.

Recursos