セールスフォースのサービス機能(Service Cloud)の進化は凄い! -第二回目- ~実際にSOSを設定してみる編(後編)~

はじめに

さて、前回はSOSのSalesforce側の設定につき順を追っていきService Cloud Console画面にオムニチャネルとSOSのウィジットが起動するまでをご紹介しました。今回後編では、モバイル(スマホ/iOS)側での設定・開発をセールスフォース社のDevelopment Guideに沿ってサンプルコードをダウンロードしてMacBook Air及びXcode上のシミュレーター経由で動かし、実際にService Cloud Consoleを操作しているエージェントに繋げるイメージまでをまとめてみたいと思います。

事前準備

と、書きましたが、自分はコンサル/ビジネスアナリスト/ソリューションアーキテクト系の出なので開発特にモバイル系の開発は一切したことがありません。何から準備すればよいのかという所から始めました。そのため、今回の記事は、あまり開発に馴染みのない開発初心者の方にもわかる内容にしたいと思います。逆に中級者以上の方にとっては何を当たり前の話をしているの?と思われそうですが何卒ご容赦下さい。

(英語版しかありませんが、SOS Development Guideに沿って進めれば何とかなると思います:https://developer.salesforce.com/docs/atlas.en-us.sos.meta/sos/

1. Macの手配

 思わずバリューセットでも注文するのかと思う掲題ですが、今回自分の持っているスマホがiPhoneで且つ使っているPCがWindowマシンなのでMacの調達から始めました。丁度タイミング良く社内の共用・開発用MacBook Airが空いていましたのでITから借りることができました。

2. OSのアップグレード

 先ずCocoaPodsをインストールして下さい、と始まりましたので、それ何っ?とは思いつつもサイトからダウンロードしてインストールすることにしました。因みにCocoaPodsとはiOSライブラリ管理の神ツールと呼ばれているようです。iOS向けのライブラリには、様々ものがありアプリを開発する際にはその様々な外部ライブラリを使用して開発することになるため、ライブラリの管理も大変になってきます。以前はGitHubなどから必要なライブラリをダウンロードして、プロジェクトに手作業で追加することが必要でしたが、CocoaPodsを使えば一連の作業を簡単な記述とコマンドだけで完了できるそうです。(受け売りです)

なるほどっ!と納得しつつインスールしようとしましたが最新のCocoaPodsをインストールするためにはiOS自体をアップグレードしないといけないことが判明しました。えっー?と思いつつも少し時間がかかりましたがMac OSを最新のSierraにアップグレードしました。

3. CocoaPodsとXcodeをインストール

さてCocoaPodsをインストール、実行するところまで来ました。Mac上でコマンドラインを使ってインストールするのでターミナルを立ち上げ以下を実行します。ユーティリティからターミナル.appを起動、sudoコマンドでCocoaPodsをインストールします。

> sudo gem install cocoapods

次にGitHubからSOS Guides projectをコピーします。 ⇒ https://github.com/goinstant/sos-guides

ターミナルでプロジェクトのルートディレクトリーに移動してpodをインストールします。

> pod install

/Applications/Xcode.app が無い、というエラーが出ました。後ほどプロジェクトをXcodeで操作するためXcodeをインストールします。これも因みにですが、Xcodeとは、Appleが無料で提供している開発ツールで、iOSはもちろんOS XやwatchOSなど、Apple製品のアプリケーション開発を中心に様々なソフトウェアを開発できる統合環境のことです。(続・受け売りです)

さらに補足しますと、pod installを実行すると、Podfile内に「pod 'ライブラリ名', '指定バージョン'」の形式で記載されたライブラリを、自身のプロジェクトに組み込むことが出来ます。

今回は
pod 'ServiceSDK/SOS', '1.1.0'
pod 'SCLAlertView-Objective-C', '1.0.3'
pod 'MMDrawerController', '~> 0.5.7'
の3つのライブラリがSOSのサンプルプロジェクトに組み込まれます。

やはり便利ですね!

これでようやく開発環境的に整う所まで来ました。

4. SOSサンプル開発プロジェクトを使う

今回せっかくMac上に開発環境を構築しましたので初めて自分でも簡単なアプリケーションを作ってみようということで、巷にある記事を検索して「10分でできるiOSアプリケーション」とか「誰でもできるiOSアプリケーション」的な所からカウントアプリ、タイマーストップウオッチアプリ等いくつか作ってみました。本論とは外れますのでここでは詳述しませんが、Xcode自体の操作に慣れていませんでしたので、プロジェクトの構成や基本操作から入りました。「Main.Storyboardからコントロールキーを押してViewController.swiftにドラックできるはずなのですがなぜかできない」という超基本的な部分にもひっかかりましたが、社内の識者に教えてもらい「ViewControllerとクラスが対応付けされてないとドラッグできない。Storyboard上のViewControllerに対応するViewControllerのClass設定が必要。最初からStoryboard上にあるものは設定済みの状態だが、新しくViewControllerを作るときは自分で設定が必要。」ということがわかり前に進めました。

さてかなり本論から外れてしまいましたが、SOSのサンプルコードは先程GitHubからコピーしましたので実際にプロジェクトを開いてみましょう。CocoaPodsは SOSExamples.xcworkspace fileを作成、更新するので、これを使ってプロジェクトをビルドします。SOSExamples.xcodeproj自体からだとうまく動かないようです。

Xcode上で実際にサンプルプロジェクトを開いた際の画面は以下になります。

前編の終わりの方にも記載しましたがplistにSalesforce側のSOS Deployment設定情報3つを反映させる必要があります。自分は単純にコピペしたのですが、実はこれが仇になりました。詳細後述します。

5. シミュレーターで動かしてみる

実際にソースコードを確認し、plistも設定しましたので実際にシミュレーターを起動してみます。するとビルドは成功し、シミュレーター上にサンプルのSOSアプリ、画面も出てくるのですが、Salesforce組織側のService Cloud Consoleのオムニチャネルウィジット画面でSOSのセッションをオンラインにしても何も反応がありません。やはり、サンプルをそのまま利用と言っても開発初心者が動かして繋げるには敷居が高いのかな?と思いつつ、再度インストールからやり直したり、設定、コード内容をチェックしたりしました。

NGケース:左から、SOSボタンをが出るのでクリック→セッションを確立のために再度クリック→SOSに接続の流れで動かします。(iPhone側)

  

ところがService Cloud ConsoleでオムニチャネルのSOSセッションをオンにしているのに何も動きがありません。(Salesforce側)

6. SOSが動いた!

これはもしかしたら長期戦になるかもしれないと思いつつもセールスフォース社のService Cloud Specialist SEの方と別件で打合せする機会があり、確認させて頂いたところ、SOSExamples Projectを作成するところまでいっていれば接続はできるはずとのことで、設定を見直していたところ、SOSSetting.plistのLive Agent Podの値はSalesforce側のLive Agent EndpointのURLをそのままコピペするのではなく、https://以下のdで始まるドメイン名だけ(.comまで)を登録すれば良いということがわかりました。修正して再度、Xcode上でシミュレーターを起動してみたところ・・・動きました!!

OKケース:先程のSOS開始リクエスト以降の画面が、以下のように左から、先ずキューに接続しにいき(iPhone側)→Service Cloud Console エージェントであるユーザ:テラテラで受け入れのリンクをクリックすると(Salesforce側)→セッションが確立されiPhone及び顧客側にエージェント情報(ユーザ:テラテラ)が表示される(iPhone側)流れが確認できます。

  

以下は、Service Cloud Console側でエージェントが描画機能を使ってiPhone側から共有されている画面に描画したイメージです。iPhone側の画面にも描画が反映されています。実際には手元にPCを2台並べて見ていますが、実際に動くとおおっ!という感じになりますね。このサンプルではアプリ画面共有、描画共有、音声が機能にありますが、実際にはスマホ側のカメラの映像を共有することもできます。これら双方向によるコミュニケーションを直感的にサポートエージェントと顧客/エンドユーザとの間で実現することにより、サポート/サービス効率と顧客満足度を高めることが期待できます。また顧客だけでなく社内や関連会社のフィールドサービス要員の現地での保守作業などにも威力を発揮すると思われます。「百聞は一見に如かず」ですね。

左:Service Cloud Console(エージェント)側  右:iPhone(顧客)側

    

ここまでくれば実機でも動くと思いますので今回のブログ上では割愛しますが、自分のiPhoneにもアプリをインストールして試してみたいと思います。plistの設定情報を変えることで接続したいSalesforce組織に接続することができます。

またSalesforceのService Cloud ConsoleにもSOSセッションの詳細内容がSOSセッション画面の後ろでオブジェクト内レコード情報として保存されているのがわかります。

おわりに

今回はiOSを利用したSOSでしたが、Androidでも同様に動かすことができます。ご興味があり且つAndroid開発に明るい方でしたら同様に動かすところまでは比較的容易にできると思います。但し、実際の本番業務・アプリとして運用する場合には、SOSのどこまでの機能をオンにするのか、エージェントのスキルやリソース(数)にも制約があるでしょうから同時にどの程度まで受け入れるようにするのか、運用時間をどう設定するか、モバイル側のアプリケーションのブランディングやUIデザインをどうするのか等々については、お試し的な利用であってもしっかりと定義、設計しておく必要があることは言うまでもありません。今後事例も増えてくると思いますが、テラスカイとしてもSOSを活用した事例を是非増やしていければと思います。皆、開発スキル・経験も豊富で私のような開発初心者は唯一例外ですのでご安心下さい。

本記事はSalesforce App Cloud Advent Calendar 2016の14日目の記事となっています。