双方向SMSによる顧客エンゲージメント

プログラム可能なSMSは、一方通行の通知だけに役立つわけではありません。アウトバウンド通知とインバウンドメッセージを組み合わせれば、企業と顧客の間にチャットのようなやり取りが生まれます。

このチュートリアルでは

顧客の電話番号に配達通知を送信し、配達枠を変更したいときに顧客が返信する。

あなたのアプリのワークフローはこうだ:

そのためには

  1. Vonageバーチャル番号を設定する - バーチャル・ナンバーをレンタルし、インバウンド・メッセージ用のウェブフック・エンドポイントを設定する。
  2. 基本的なウェブアプリを作成する - 顧客の電話番号を収集するWebアプリを作成します。
  3. SMS通知を送信する - 顧客にSMSで配達通知を送信し、返信を要求する。
  4. 返信SMSを処理する - SMSの返信を処理し、確認する。

前提条件

このチュートリアルに必要なものは以下の通り:

  • A Vonageアカウント
  • VonageがあなたのアプリにWebhookリクエストを出せるように、一般にアクセス可能なWebサーバー。ローカルで開発する場合は のようなツールを使用する必要があります。 ングロク
  • このチュートリアルのソースコード https://github.com/Nexmo/ruby-customer-engagement/.
  • 米国を拠点とするすべての顧客は、以下を遵守するためにブランドとキャンペーンを登録する必要があります。 10 DLCガイドライン.

Vonageバーチャル番号を設定する

Vonageは、受信メッセージをVonageバーチャル番号に関連付けられたWebhookエンドポイントに転送します。

バーチャルナンバーの管理には 開発者API または Vonage CLI.以下の例では、Vonage CLIを使って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

次に、仮想番号を次のWebhookエンドポイントに関連付けます。 インバウンドSMSを扱う:

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

ウェブフック・エンドポイントをバーチャル番号に関連付ける前に、サーバーが稼動しており、一般に利用可能であることを確認してください。 が公開されていることを確認してください。コンフィギュレーションが成功した場合、VonageはWebhookエンドポイントから200 OKレスポンスを受信する必要があります。もし ローカルで開発している場合は、次のようなツールを使用してください。 ングロク ローカル・ウェブ・サーバーをインターネットに公開する。

これでバーチャルナンバーの設定が完了し、SMS配信通知を送信できるようになりました。

基本的なウェブアプリを作成する

用途 シナトラ を使い、単一ページのウェブ・アプリを作成する:

ジェムファイル

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

通知SMSを送信する電話番号を収集するHTMLフォームを追加します:

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>

フォームは電話番号を E.164 SMS APIが期待するフォーマット:

SMS通知を送信する

このチュートリアルでは、SMSを送信するために Ruby用VonageサーバーSDK をあなたの アプリに

ジェムファイル

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

Vonage APIを使用する 鍵と秘密 でクライアントを初期化する:

app.rb

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

コード内にAPI認証情報を保存せず、環境変数を使用してください。

通知SMSへの返信を受け取るには、以下の手順でバーチャル・ナンバーを送信メッセージのSenderIDとして設定します。 にリクエストする。 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

このSMSが顧客に受信されたことを確認するには、以下の項目をチェックしてください。 納品書.このチュートリアルでは領収書のVerifyは行いません。

返信SMSを処理する

あなたの顧客があなたの通知SMSに返信すると、Vonageは次のように転送します。 インバウンドメッセージ を返します。 仮想番号に関連付けられたウェブフック・エンドポイントへ。

このチュートリアルアプリでは、受信した Webhook を処理し、テキストと Numbers を抽出して、確認メッセージを送信します。 を送信します。

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

顧客の入力を保存し、検証することは、このチュートリアルの範囲を超えています。

先ほど受信したSMSに返信してください。アプリによって処理され、数秒以内に以下のような確認メールが届くはずです。 数秒以内にあなたの選択した

結論

あなたのアプリでSMSを送受信するのはとても簡単です。数行のコードで、SMS APIを使って顧客の電話にSMSを送信し、返信を処理し、確認の返信をすることができます。 SMS APIで顧客の電話にSMSを送信し、返信を処理し、確認で応答しています。

コードを取得する

このチュートリアルのコードはすべて 顧客エンゲージメントのための双方向SMS GitHub Repo.

リソース