SMS bidirectionnels pour l'engagement des clients

Les SMS programmables ne sont pas seulement utiles pour les notifications à sens unique. Lorsque vous combinez des notifications sortantes avec des messages entrants, vous créez des interactions de type "chat" entre votre entreprise et vos clients.

Dans ce tutoriel

Vous voyez à quel point il est rapide d'intégrer une communication bidirectionnelle à votre appli ; vous envoyez une notification de livraison au numéro de téléphone de votre client et gérez sa réponse lorsqu'il souhaite modifier un créneau de livraison.

Le flux de travail pour votre application est le suivant :

Phone numberVonageAppPhone numberVonageAppRequest acceptedRequest acceptedRequest to SMS APIResponse from SMS APISend delivery notification SMSReply to delivery notificationSend reply to webhook endpointRequest to SMS APIResponse from SMS APISend acknowledgement in SMS

Pour ce faire :

  1. Configurer un numéro virtuel Vonage - louer un numéro virtuel et définir les points de terminaison webhook pour les messages entrants
  2. Créer une application Web de base - créer une application Web pour collecter le numéro de téléphone de vos clients.
  3. Envoyer une notification par SMS - envoyer à votre client un avis de livraison par SMS et demander une réponse.
  4. Traitement du SMS de réponse - traiter et accuser réception de la réponse du SMS.

Conditions préalables

Pour suivre ce tutoriel, vous avez besoin des éléments suivants

  • A Account Vonage
  • Un serveur Web accessible au public pour que Vonage puisse faire des demandes de crochets Web à votre application. Si vous développez localement, vous devez devez utiliser un outil tel que ngrok
  • Le code source de ce tutoriel provient de https://github.com/Nexmo/ruby-customer-engagement/.
  • Tous les clients basés aux États-Unis doivent enregistrer une marque et une campagne afin de se conformer à la législation européenne. 10 lignes directrices DLC.

Configurer un numéro virtuel Vonage

Vonage transmet les messages entrants au point de terminaison webhook associé à votre numéro virtuel Vonage.

Vous gérez les numéros virtuels à l'aide de la fonction API pour les développeurs ou le CLI Vonage. Les exemples suivants utilisent la CLI de Vonage pour louer un numéro 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 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

Associez ensuite le numéro virtuel à votre point de terminaison webhook qui traite les SMS entrants:

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

Note: assurez-vous que votre serveur fonctionne et qu'il est accessible au public avant d'associer le point de terminaison du webhook à votre numéro virtuel. numéro virtuel. Vonage doit recevoir une réponse 200 OK de votre point de terminaison webhook pour que la configuration soit réussie. Si vous développez localement, utilisez un outil tel que ngrok pour exposer votre serveur web local à l'Internet.

Maintenant que vous avez configuré votre numéro virtuel, vous pouvez envoyer des notifications de livraison par SMS.

Créer une application Web de base

Utilisation Sinatra pour créer une application Web à page unique :

Fichier de gemmes

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

Ajoutez un formulaire HTML pour recueillir le numéro de téléphone auquel vous enverrez un SMS de notification :

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>

Le formulaire saisit le numéro de téléphone dans le champ E.164 attendu par l'API SMS :

Envoyer une notification par SMS

Dans ce tutoriel, pour envoyer un SMS, vous ajoutez l'élément SDK du serveur Vonage pour Ruby à votre l'application :

Fichier de gemmes

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

Utilisez votre API Vonage clé et secret pour initialiser le client :

app.rb

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

Note: ne stockez pas vos identifiants d'API dans votre code, utilisez des variables d'environnement.

Pour recevoir des réponses à vos SMS de notification, vous définissez votre numéro virtuel comme SenderID pour les messages sortants lorsque vous faites une demande à 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

Pour vérifier que ce SMS a bien été reçu par le client, vérifiez l'icône récépissé de livraison. Ce tutoriel ne vérifie pas les récépissés de livraison.

Traitement du SMS de réponse

Lorsque votre client répond à votre SMS de notification, Vonage transmet le SMS de notification à votre client. message entrant vers le point de terminaison webhook associé au numéro virtuel.

Dans cette application tutorielle, vous traitez le webhook entrant, vous extrayez le texte et le numéro, et vous envoyez un message de confirmation au client.

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

Le stockage et la validation des données des clients dépassent le cadre de ce tutoriel.

Répondez maintenant au SMS que vous avez reçu précédemment. Vous devriez le voir traité par votre application et recevoir une confirmation de votre choix en quelques secondes. de votre choix dans les secondes qui suivent.

Conclusion

C'est la rapidité avec laquelle il est possible d'envoyer et de recevoir des SMS dans votre application. En quelques lignes de code, vous avez envoyé un SMS au téléphone d'un client avec l'API SMS. avec l'API SMS, géré une réponse et répondu avec une confirmation.

Obtenir le code

Tout le code de ce tutoriel est disponible dans le fichier SMS bidirectionnels pour l'engagement des clients GitHub repo.

Ressources