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:
- Configurar um número virtual da Vonage - alugar um número virtual e configurar os endpoints do webhook para mensagens recebidas
- Criar um aplicativo web básico - crie um aplicativo da Web para coletar o número de telefone do seu cliente.
- Enviar uma notificação por SMS - envie ao seu cliente uma notificação de entrega por SMS e solicite uma resposta.
- Processar a mensagem de resposta - processar e confirmar o recebimento da resposta por SMS.
Pré-requisitos
Para seguir este tutorial, você precisará de:
- A Account da Vonage
- Um servidor Web acessível ao público para que a Vonage possa enviar solicitações de webhook para seu aplicativo. Se você estiver desenvolvendo localmente, deve usar uma ferramenta como ngrok
- O código-fonte deste tutorial, disponível em https://github.com/Nexmo/ruby-customer-engagement/.
- Todos os clientes sediados nos EUA devem registrar uma marca e uma campanha para cumprir as exigências de 10 diretrizes para DLCs.
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.90 €0.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 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
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
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.