会社のお客さまにIoTデバイスを配布して、100%の顧客満足度を達成したというお話を書きます。
今日の主役
SORACOM LTE-M Button for Enterprise
製品説明(HPから抜粋)
SORACOM LTE-M Button for Enterprise はIoT SIM(plan-KM1)内蔵のボタンデバイスです。
plan-KM1による LTE-M 通信を使用し、乾電池(交換可能)で駆動します。
SORACOM Beam,SORACOM Funnel,SORACOM Harvestを使用することができます。
このIoTボタンはソラコム社から販売されていて、クリックするとソラコムのサーバー経由でAWSなりAzureなりにリクエストを飛ばすことができるというものです。
私は別にソラコム社の回し者はないですが、今回はこれを業務(サービス)で利用してみたよ、というお話です。
何に使おう
お客さまにお配りして、弊社と連絡したいときにクリックしていただくという形にしました。
つ…つかえるのか??
業務での使用のため、いくつか懸念点はありました。
- そもそもボタン押したらちゃんとリクエストが飛ぶのか
- どのリクエストがどのボタンから送信されたものなのか判別できるのか
- (乾電池で動くので)電池切れたらどうする?
- ボタンと社内システムをどう連携させる?
色々検証してみたので、さっと見ていきます。
懸念1.そもそもボタン押したらちゃんとリクエストが飛ぶのか
(いちおう)大丈夫でした。
ボタンの表面にLEDランプがあって、
- クリック→リクエスト送信完了→緑のランプ点灯
- クリック→リクエスト送信失敗→赤のランプ点灯
となります。
ただ、ボタンを押してから緑ランプ点灯するまでに5秒くらいのラグがあって、その間(ドキドキしながら)見守らないといけないので、若干めんどくさくはあります。
懸念2. どのリクエストがどのボタンから送信されたものなのか判別できるのか
各ボタンからのリクエストにはIMSI(端末識別番号)が含まれているので、これで突合できます。
どのボタン(IMSI)をどの顧客に渡したかの紐付けは、社内システム(Salesforce)側に持たせました。
懸念3. (乾電池で動くので)電池切れたらどうする?
電池が切れたらボタンのランプがつかないので当然わかるけど、
お客さまに渡す以上、そこはケアしたいですよね。
しらべたらリクエストのJSONには、「batteryLevel(バッテリーレベル)」というのがあり、これで残量をキャッチできるようです。(ちなみに値は0.25 / 0.5 / 0.75 / 1.0の4つで若干大味)
リクエストが来たことを社内メール通知するときに、この値も含めれると、「もうそろそろバッテリー切れそうですよ」という連絡もできるようになります。
懸念4. ボタンと社内システムをどう連携させる?
ここからが本題です。
アーキテクチャはこんな感じにしました。
ボタンクリックしたときにどのクラウドサービスへ接続するかは、「ソラコム管理コンソール」というソラコム側の設定から行います。
今回はAWS IoTに接続させ、さらにlambdaで、社内システム(Salesforce)とコネクションします。
Salesforceでは、リクエスト受信するとその履歴を残しつつ、顧客毎の営業担当をしらべ、メール通知する寸法です。
ボタンとAWSを連携
詳細は公式ドキュメントに譲りますが、SORACOM Funnel + AWS IoT Core パターンで連携させます。
SORACOM Funnelは、ボタンリクエストを任意のクラウドサービスに転送する設定が楽にできるよ、というもので、一回設定を作成すれば他のボタンでも使い回せるので、大量にボタンを設定するときには大変便利でした(ここはポイントたかめ)
会社のSalesforceとボタンを連携
AWS IoTからLambdaへ飛ばし、LambdaからSalesforceへ送信します。
認証は何でもいいと思いますが、今回は普通にOAuth 2.0 JWT べアラートークンフローを使いました。
(CF:https://help.salesforce.com/articleView?id=remoteaccess_oauth_jwt_flow.htm&type=5)
ボタンリクエストからIMSIを抜き出して、Lambdaから送信するリクエストに転記しておけば、後ほどIMSIからボタン名を抜き出すことができます。
Salesforceでリクエスト受信履歴作成&メール通知
AWSからのリクエストは、「RestResource アノテーション」をつけたApexクラスで受信します。
受信さえできればコッチのもので、Apexクラスではレコード作成やメール送信などはだいたいヨロシクできます。
実際、お客さまからの反応はどうだったのか?
それなりの数の顧客にボタンを配りましたが、反応は上々でした。
「このボタン、どうやって使うの?」みたいなことを言われることを覚悟していたんですが、お叱り系の言葉は一つもなかったのが驚きでした。
「距離が近くなったと感じる」「電話しなくて便利」みたいな声ばかりだったので、やってよかったかなという感触。
「作っておわり」のエンジニアではなく、その後の顧客体験まで意識して、プロダクトを作っていきたいですね。