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

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

このチュートリアルでは

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

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

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

そのためには

  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 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

次に、仮想番号を次の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は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.

リソース