第2章では、クレジット・カード会社のコール・センターにおける通話理由に関連する入力データを追跡して分析するインライン・サービスを作成しました。第3章では、Load Generatorを使用して、インライン・サービスへのクライアント・リクエスト(インフォーマントのコールを介したリクエスト)をシミュレートしました。
この章では、Tutorialインライン・サービスの機能を拡張し、抱合せ販売のアドバイス機能をCRMアプリケーションに対して追加します。これにより、機能が次のように拡張されます。エージェントによって顧客からの通話が通常の方法(Service Completeインフォーマントのコール)で処理された後に、抱合せ販売を顧客に対して提案する機会を設定します。第5章では、抱合せ販売に対する顧客のレスポンスを追跡し、レスポンスから学習した内容を別の顧客への抱合せ販売に反映します。
この章の内容は次のとおりです。
サービス・センターに通話を行う顧客に対して提案可能な抱合せ販売の選択肢グループを作成します。コストを最小化するパフォーマンス・メトリックをサポートできるように、選択肢に適用するスコアはコスト・ベースにします。次に、アドバイザを作成して抱合せ販売提案をCRMアプリケーションに渡します。これによって、コール・センター・エージェントが抱合せ販売を提案できるようになります。
選択肢グループを使用してオファー(抱合せ販売)インベントリを作成する手順は次のとおりです。
「Inline Service Explorer」で、「Choices」フォルダを右クリックし、「New Choice Group」を選択します。グループ名にCross Selling Offer
を指定し、「OK」をクリックします。
「Choices」を開き、新しく作成したグループを選択して開きます。説明を追加します。
「Choice Attributes」タブで、「Attributes」テーブルの横にある「Add」をクリックします。表4-1に示されている属性を追加し、「Send to client」と「Overridable」を選択します。
表4-1 「Choice Attributes」タブの属性
属性名 | Data Type | Send to client | Overridable |
---|---|---|---|
Offer Description |
String |
選択済 |
選択済 |
URL |
String |
選択済 |
選択済 |
Agent Script |
String |
選択済 |
選択済 |
注意: これらの属性はクライアント(コール・センター・エージェント)でのオファーの提案に必要なため、クライアントに送信されます。属性の値は実際のオファーごとに異なるため、これらの属性は上書き可能である必要があります。抱合せ販売のオファー内容は、この選択肢グループ内の選択肢によって表されます。 実際のインライン・サービスでは、具体的なオファーが提示される前に、レベル分けされた選択肢グループが表示される場合があります。各選択肢グループはオファーの論理グループを表し、グループ内のオファーに一様に適用される属性やビジネス・ルールが存在する場合があります。 |
「Inline Service Explorer」で、「Choices」の下の「Cross Selling Offer」選択肢グループを選択し、表4-2に示すように、属性を持つ選択肢を5つ追加します。各選択肢を追加する手順は次のとおりです。
「Inline Service Explorer」で「Cross Selling Offer」を右クリックし、「New Choice」を選択します。Credit Card、Savings Account、Life Insurance、Roth IRAおよびBrokerage Accountの5つの選択肢を追加します。
「Inline Service Explorer」で、「Choices」にある「Cross Selling Offer」グループを開き、各選択肢を表示します。各選択肢に対して、次の手順を実行して属性を追加します。
「Inline Service Explorer」で、「Choices」を選択します。選択肢用のエディタで、説明を追加します。
「Attribute Values」タブに、3つの属性「Agent Script」、「Offer Description」および「URL」が表示されます。「Attribute Value」を使用して、表4-2に示す属性値を追加します。
表4-2 選択肢の属性値
選択肢名 | Agent Script | Offer Description | URL |
---|---|---|---|
Brokerage Account |
Would you like to try our new brokerage account? |
Brokerage Account offer |
http://www.offer.com/offer1.html |
Credit Card |
Would you like to try our new credit card? |
Credit Card offer |
http://www.offer.com/offer2.html |
Life Insurance |
Would you like to try our new life insurance? |
Life Insurance offer |
http://www.offer.com/offer3.html |
Roth IRA |
Would you like to try our new Roth IRA? |
Roth IRA offer |
http://www.offer.com/offer4.html |
Savings Account |
Would you like to try our new savings account? |
Savings Account offer |
http://www.offer.com/offer5.html |
「File」→「Save All」を選択して構成を保存します。
パフォーマンス目標を構成する手順は次のとおりです。
「Inline Service Explorer」で、「Performance Goals」要素をダブルクリックし、エディタを起動します。「Add」をクリックして、パフォーマンス・メトリックを追加します。メトリック名をCost
にします。「OK」をクリックします。
「Optimization」で、「Minimize」を選択し、メトリックを「Required」にします。
注意: 複数のパフォーマンス・メトリックがある場合、「Normalization Factor」を使用して値を正規化する必要があります。たとえば、あるメトリック(Minimize hold timeという名前)が秒単位で測定される場合、この正規化ファクタでは、1ドルの売上を実現するのに要する最小時間が秒単位で測定されます。 |
「File」→「Save All」を選択して構成を保存します。
各製品には、その維持に必要な平均コスト(年ベース)があります。ドル単位のコストを、その製品のスコアに使用します。
選択肢をスコアリングする手順は次のとおりです。
「Inline Service Explorer」で、「Choices」にある「Cross Selling Offer」選択肢グループを選択し開きます。「Scores」タブで、「Select Metrics」をクリックし、パフォーマンス・メトリックの「Cost」を選択し、「OK」をクリックします。これによって、選択肢グループにコスト・スコアが設定されます。実際のスコア値は、選択肢ごとに設定されます。
スコア値は定数である必要はありません。多くの場合、顧客のタイプが異なるとスコア値が大きく異なります。こうした相違は、式(つまり、スコアリング・ルール)を使用して表現できます。たとえば、クレジット・カード・アカウントの維持に必要なコストは、40歳以下の顧客では低くなる場合があります。このロジックをスコアリング・ルールに定義してから、このルールをCredit Cardオファーのコスト・スコアに割り当てます。
「Inline Service Explorer」で、「Scoring Rules」フォルダを右クリックし、「New Scoring Rule」を選択します。スコアリング・ルールの名前をCredit Card Score
にします。この新しいスコアリング・ルール用のエディタが起動します。
「Add conditional value」アイコンをクリックし、デフォルト以外のルール条件を設定します。
これによって、新しい行が表示されます。その左側のセルに比較式によるルールを指定し、右側のセルにスコア値を指定します。このロジックは次のようになります。左側のセルが真の場合は、右側のセルの値が返されます。それ以外の場合は、2行目の値が使用されます。
ルールの左側をクリックし、省略記号をクリックします。「Edit Value」ダイアログが表示されます。「Attribute」を選択してから「session attributes」→「customer」を開き、「Age」を選択してから「OK」をクリックします。条件演算子アイコンをクリックし、その右下にある三角形をクリックします。
以下を表す記号(<=)を選択します。ルールの右側をクリックし、数値の40
を入力します。Thenセルに、数値の130を入力します。2行目では、右側のセルを選択し、値として数値の
147
を入力します。入力したルールは図4-2のようになります。
作成したCredit Card Scoreスコアリング・ルールを保存します。他のオファーについては、定数値をコスト・スコアに設定します。
「Cross Selling Offer」選択肢グループの選択肢ごとに、「Scores」タブを開きます。Costメトリックの「Score」列に、表4-3に示す値を入力します。クレジット・カード選択肢にコスト・スコアを設定するには、「Score」列の省略記号をクリックし、値ソースとして「Function or rule call」を選択します。「Function to Call」ドロップダウン・リストで、「Credit Card Score」を選択します。
表4-3 選択肢のコスト・スコア
選択肢 | コスト・スコア |
---|---|
Brokerage Account |
150 |
Credit Card |
Credit Card Scoreスコアリング・ルール: 40歳以下は130、それ以外は147 |
Life Insurance |
140 |
Roth IRA |
145 |
Savings Account |
135 |
今回のパフォーマンス目標はコストの最小化にあるため、顧客の年齢が40歳以下の場合はCredit Cardオファー(スコアは130)が選択され、それ以外の場合はSavings Accountオファー(スコアは135)が選択されます。このチュートリアルの後述の項では、別のパフォーマンス目標(売上最大化メトリック)を追加し、これらの競合する2つのパフォーマンス・メトリックがプラットフォームによって最適化される方法について説明します。
「File」→「Save All」を選択して構成を保存します。
外部システムで意思決定を行う必要があるとき、アドバイザがコールされます。この項では、特定の顧客用に選択されたオファーをCRMアプリケーションに返すアドバイザを作成します。
アドバイザの内部構造には、1つ以上の選択肢グループに関連付けるデシジョンが含まれます。これらの選択肢グループには、作成されるオファーが含まれます。デシジョンの結果は、アドバイザに送信される結果です。
アドバイザには2種類のデシジョンがあり、1つは通常の処理用で、もう1つは制御グループ用です。制御グループは、Oracle RTDによって実現されたパフォーマンス結果を示すベースラインとして機能します。
デシジョンを作成する手順は、次のとおりです。
「Inline Service Explorer」で、「Decisions」フォルダを右クリックし、「New Decision」を選択します。デシジョン名としてSelect Offer
を指定し、「OK」をクリックします。
Select Offerデシジョンの説明を追加します。「Decision」エディタの「Selection Criteria」タブで、「Select Choices from」を探します。「Select」をクリックし、リストから「Cross Selling Offer」を選択し、「OK」をクリックします。
制御グループには、オファーをランダムに選択するデシジョンを作成します。新しいデシジョンを作成し、その名前をRandom Choice
にします。
Random Choiceデシジョンの説明を追加します。「Decision」エディタの「Selection Criteria」タブで、「Select Choices from」を探します。「Select」をクリックし、リストから「Cross Selling Offer」を選択し、「OK」をクリックします。
「Select at random」チェック・ボックスを選択します。
注意: 制御グループは、予測モデルの結果を既存のビジネス・プロセスと比較可能にするベースラインとして機能します。制御グループのデシジョンは、Oracle RTDがインストールされていない場合にデシジョンが適切に反映されるように、適切に定義することが重要です。たとえば、コール・センター用の抱合せ販売アプリケーションで、Oracle RTDの導入前にランダムにオファーが選択されていた場合は、制御グループのデシジョンでランダムな選択が返されるように定義する必要があります。 |
「File」→「Save All」を選択して構成を保存します。
アドバイザを作成する手順は、次のとおりです。
「Inline Service Explorer」で、「Integration Points」の下の「Advisors」フォルダを右クリックし、「New Advisor」を選択します。アドバイザ名にGet Cross Sell Offer
を指定し、「OK」をクリックします。
セッション・キーをGet Cross Sell Offerアドバイザに追加するには、エディタで「Session Keys」の「Select」をクリックして、「customerId」を選択します。「OK」をクリックします。
「External System」で「CRM」を選択します。「Order」に「3
」を入力します。
Service Completeインフォーマントの「Order」を2
に設定したことを思い出してください。Get Cross Sell Offerアドバイザはこのインフォーマントの後にコールされるため、順序は3になります。この「Order」は、アプリケーション・プロセスを図示する目的でDecision Centerの統合マップでのみ使用され、統合点を特定の順序で実行するものでないことに注意してください。
「Response」タブで、通常処理と制御グループの両方に対してデシジョンを選択します。「Decision」にはSelect Offerデシジョンを選択し、「Control Group Decision」にはRandom Choiceデシジョンを選択します。
「Default Choices」セクションで、「Select」をクリックし、リストから「Life Insurance」を選択し、「OK」をクリックします。これによって、選択されたオファーがこのアドバイザのデフォルト・レスポンスになります。このデフォルトは、処理に問題(タイムアウトなど)が発生したときに使用されます。
「Asynchronous Logic」タブで、次のコードを入力します。
logInfo("Integration Point - Get Cross Sell Offer"); logInfo(" Customer age = " + session().getCustomer().getAge() ); // 'choices' is array returned by the 'Select Offer' decision if (choices.size() > 0) { //Get the first offer from array Choice offer = choices.get(0); logInfo(" Offer presented: '" + offer.getSDOLabel() + "'"); }
コードを「Logic」タブに入力すると、返されるオファーがデシジョンによって決定される前にコードが実行されるため、返されるオファー名を出力できなくなります。前述のコードでは、顧客の年齢と提示されたオファー名が出力されます。コストの最小化を目標としているため、顧客の年齢に基づいて、Savings AccountオファーおよびCredit Cardオファーのみが提示されることを思い出してください。
インライン・サービスを保存します。「Deploy」ボタンをクリックします。「Terminate Active Sessions (used for testing)」を選択して、その時点でアクティブなすべてのセッションを終了し、デプロイします。
図4-4に、パフォーマンス目標のCostに基づいてGet Cross Sell OfferアドバイザがCross Selling Offer選択肢グループからオファーを取得するフローを示します。
図4-4 Cross Selling Offer選択肢グループからオファーを取得するGet Cross Sell Offerアドバイザ
Decision Centerで統合マップを表示する手順は、次のとおりです。
Webブラウザを起動してURLにhttp://
server_name:
8080/ui
を指定して、Decision Centerを起動します。インストール時に作成したデフォルト管理者資格証明を使用してログインします。Decision Centerを実行するには、Real-Time Decision Serverが起動されている必要があります。
「Open an Inline Service」をクリックします。
Tutorialインライン・サービスを選択します。
左側のツリーで、ルート・ノードの「Tutorial」をクリックします。右側のペインで、「Definition」タブの「Integration Map」サブタブをクリックして表示します。図4-5のようなマップが表示されます。
統合マップでは表4-4の記号を使用して、統合点、データ処理、エンティティおよび情報フローが示されます。
アドバイザをテストする手順は、次のとおりです。
Decision Studioで、「Test」ビューを使用して、統合点リクエストを送信します。Service Completeインフォーマントを選択し、パラメータ値を入力します。たとえば、顧客IDに7
、エージェント名にJohn
、長さに21
、理由コードに18
(または17
、19
、20
)をそれぞれ入力します。
「Send」アイコンをクリックします。
「Log」サブタブでメッセージが送信されたことを確認します。このインフォーマント・コールによって、新しいセッションが顧客IDに基づいて作成され、顧客の通話理由、エージェント名およびコールの長さが登録されます。
Get Cross Sell Offerアドバイザを選択します。同一セッションで作業を続行するため、「customerId」はそのままにします。「Send」をクリックします。
選択されたオファーとその属性が返され、「Test」ビューの「Response」ペインに表示されます。
「Test」ビューの「Log」サブタブで「customerId」が7のエントリには、次のようなレスポンスが記録されます。
00:24:40,764 Integration Point - Get Cross Sell Offer 00:24:40,764 Customer age = 38 00:24:40,764 Offer presented: 'Credit Card'
「customerId」と他のパラメータで値をそれぞれ異なる値に変えて、手順1から3までを繰り返します。顧客の年齢が40歳以下のときはCredit Cardオファーが返され、40歳を超えるときはSavings Accountオファーが返されることを確認してください。このような結果となる理由は、アドバイザがCostパフォーマンス・メトリックに対してのみ最適化されており、最小コストのオファーが顧客の年齢に応じてSavings AccountまたはCredit Cardのどちらかになるためです(「選択肢のスコアリング」のCredit Card Scoreスコアリング・ルールを参照)。
「Test」ビューの「Trace」サブタブには、オファーが選択されるまでの一連のプロセス(つまり、各オファーのスコアが計算され最適なオファーが決定されるプロセスから、最終的にパフォーマンス目標(コストの最小化)を満足したオファーが選択されるまでのプロセス)の説明が記録されます。