タスク1: DA (エージェント)デジタル・アシスタントの構築
DA (エージェント)デジタル・アシスタントに必要なスキルを構築して、オプションで公開し、デジタル・アシスタント・エージェントとして機能するデジタル・アシスタントに追加します。通常、必要なスキルは1つのみですが、複数のスキルを使用することもできます。
デジタル・アシスタントを最初から構築することも、Oracle Digital Assistant CXSの概要のパワー・ポイント・スライドの説明に従ってCX Serviceテンプレートをクローニングすることもできます。
デジタル・アシスタントを構築する際には、次のシナリオを考慮してください:
-
顧客が自動アシスタントで何ができるかをわかっていない: ヘルプ・スキルを作成するか、ヘルプ状態を既存のスキルに追加します。その後、次のいずれかを行います:
-
単一スキルのデジタル・アシスタント: スキルで、「設定」→「デジタル・アシスタント」に移動し、「ヘルプ状態」をスキルのヘルプ状態の名前に設定します。自動エージェント会話サンプルでは、これが「ようこそ」に設定されていることに注意してください。
-
複数スキルのデジタル・アシスタント: デジタル・アシスタントで、「設定」→「構成」に移動し、ヘルプ・スキル内の適切な状態を指すように次の会話パラメータを設定します。
-
デジタル・アシスタント・カスタム・ヘルプ・スキル
-
デジタル・アシスタント・カスタム・ヘルプ状態
-
-
-
デジタル・アシスタントでは処理するように設定されていない何かを顧客が要求する: 次のいずれかを実行します:
-
単一スキルのデジタル・アシスタント:「エージェント転送」ダイアログ・フローの状態に転送するインテントおよびアクションを追加します。自動エージェント会話スキルのクローンを使用している場合は、ダイアログ・フローですでにこれが行われます。
ノート
スキルがYAMLダイアログ・フロー・モードで開発されている場合は、スキルのSystem.Intent
状態にunresolvedIntent
アクション遷移を追加して、スキルの範囲外のリクエストを処理します。 -
複数スキルのデジタル・アシスタント:デジタル・アシスタントで、「設定」→「構成」に移動し、スコープ外のリクエストを処理するためのフローを開始する状態を指すように次の会話パラメータを設定します。
-
デジタル・アシスタントのカスタムUnresolvedIntentスキル
-
デジタル・アシスタントのカスタムUnresolvedIntent状態
-
-
スキルの構築
DA (エージェント)スキルを構築するには、ここで説明するように、DA (エージェント)テンプレートをクローニングするか、最初から作成できます。次に、スキルを構成し、必要に応じてインテントとエンティティを追加して、ダイアログ・フローに必要な変更を加えます。最後に、スキルをトレーニングし、オプションで公開します。
インテントおよびエンティティの追加
スキルに必要なインテントとエンティティを追加します。
ヒント:
デジタル・アシスタント・エージェントで世間話を処理するようにしたい場合は、スキル・ストアからデジタル・アシスタント・テンプレートをプルして、共通スキル・テンプレートという名前のスキルを確認してください。これには、「ボットですか」、「デートに誘ってもいいですか」、「時間がわかりますか」、「サッカーに熱中していますか」、「冗談を言いますか」といった質問を処理するインテントとダイアログ・フローが含まれます。DA (エージェント)スキルが基本的な質問と回答のスキルである場合は、回答インテントを使用して質問と回答を処理できます。Oracle B2C Serviceでは、ナレッジ検索ダイアログ・フロー・コンポーネントを使用して、質問と回答に対処することもできます。ナレッジ検索の例は、ナレッジ検索コンポーネントの使用を参照してください。このコンポーネントを使用するには、ナレッジ検索統合を作成する必要があります。
インテントを作成したら、「トレイン」をクリックします。スキルをトレーニングしていない場合、テストまたは公開できません。
インテントをテストするには、「発話のテスト」をクリックし、「クイック・テスト」セクションにテスト発話を入力して、モデルが適切なインテントに解決されることを確認します。インテントに含まれている発話に加えて、どのインテントにも含まれていない発話も入力する必要があります。一致した各インテントの信頼度レベルがダイアログに表示されます。解決が意図したとおりでない場合は、その発話を目的のインテントに追加したり、誤って一致したインテントを修正することを検討してください。「テスト・ケースに移動」をクリックして、バッチ・テストを作成またはインポートすることもできます。さらに学習するには、インテントのトレーニングとテストを参照してください。
担当者およびチャット開始ページ情報へのアクセス
ユーザーがサービスにサインインするか、チャット起動ページで名、姓および電子メール・アドレスを指定すると、profile.firstName
、profile.lastName
およびprofile.email
変数にユーザー情報が含まれます。Oracle B2C Serviceの場合、profile.locale
変数がインタフェース言語コードに設定されます。Oracle Fusion Serviceの場合、ロケールは、ユーザーがチャット起動サイトで選択した言語に基づきます。何も選択されなかった場合は、ブラウザのロケールに基づきます。
また、profile.contactInfo
変数には、顧客の質問(主題)、製品IDとカテゴリID (該当する場合)など、チャット・リクエスト情報が含まれます。また、チャット起動ページにカスタム・フィールドが含まれている場合、顧客がそれらのフィールドに入力した値は、profile.contactInfo.customFields
配列でデジタル・アシスタントに渡されます。Oracle B2C Serviceのチャット起動ページにあるフィールドのカスタマイズについて学習するには、Oracle B2C Serviceの使用のカスタマ・ポータルでのチャットの概要を参照してください。
Oracle B2C Serviceのprofile.contactInfo
の構造を次に示します:
{
"question": <string>,
"productId": <number>,
"orgId": <number>,
"categoryId": <number>,
"browser": <string>,
"ipAddress": <string>,
"userAgent": <string>,
"sessionId": <string>,
"operatingSystem": <string>,
"customFields": [
{
"name": <string-name-of-custom-field>,
"id": <ID-of-custom-field>,
"value": <field-value>
},
...
]
}
次に、サンプル・データを示します:
{
"question":"Do you deliver",
"productId":7,
"customFields":[
{
"name":"ODA Text",
"id":44,
"value":"N/A"
},
{
"name":"ODA YN",
"id":45,
"value":"1"
},
{
"name":"ODA Nbr",
"id":46,
"value":"1"
},
{
"name":"ODA Date",
"id":47,
"value":"2020,2,17"
},
{
"name":"ODA Menu",
"id":48,
"value":"12"
},
{
"name":"ODA DateTime",
"id":49,
"value":"2004,11,18,17,18"
}
],
"browser":"FireFox 68.0",
"ipAddress":"123.45.67.89",
"userAgent":"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0",
"sessionId":"HI6unnBo",
"operatingSystem":"Windows 10",
"orgId":-1,
"categoryId":-1
}
profile.contactInfo
の値にアクセスするためのFreeMarker式を次に示します:
${profile.contactInfo.value}
profile.contactInfo
の特定の部分にアクセスするためのFreeMarker式を次に示します。
${profile.contactInfo.value.question}
${profile.contactInfo.value.customFields}
Oracle Fusion Serviceのprofile.contactInfo
の構造は次のとおりです。
{
"question": <string>,
"productId": <number>,
"orgId": <number>,
"categoryId": <number>,
"browser": <string>,
"ipAddress": <string>,
"userAgent": <string>,
"sessionId": <string>,
"operatingSystem": <string>,
"customFields": [
{
"name": "<custom-field-name>",
"type": "<data-type>",
"value": "<field-value>",
"menuItemLabel": "<label-string>"
},
...
]
}
人間のエージェントへの転送の有効化
スキルが処理するように構築されていない何かをユーザーが要求したときなどに、スキルから人間のエージェントにチャット・セッションを転送するには、「エージェント転送」ダイアログ・フロー・コンポーネントを使用する状態を追加します。
エージェント転送コンポーネントでは、スキルをヒューマン・エージェントに戻す最大待機時間や条件を指定できます。このコンポーネントには、組込みの遷移アクションaccepted
、rejected
およびerror
があります。これらの各アクションを状態またはフローにマップして、そのアクションを処理する必要があります。例:
accepted
は、メッセージを出力するメッセージの表示コンポーネントにマップできます。I'm transferring you to a human agent. Hold tight.
rejected
は、メッセージを出力するメッセージの表示コンポーネントにマップできます。I wasn't able to transfer you to a human agent. Please try again later. Meanwhile, let me know if there's anything else I can help you with.
error
は、メッセージを出力するメッセージの表示コンポーネントにマップできます。We're unable to transfer you to a human agent because there was a system error. You can ask me another question if there's something else that I can help you with.
フローが無限ループにならないように、エージェント転送状態への転送方法には注意してください。たとえば、ダイアログ・エラー・システム・イベントをマップしないか、フロー遷移がエージェント転送状態に移行します。
コンポーネントのプロパティおよびアクションの詳細は、エージェント転送を参照してください。ダイアログ・フローがYAMLモードの場合は、System.AgentTransferを参照してください。
ヒント:
エージェントが必要になった回数とその理由をスキルで追跡する場合は、スキル使用状況を追跡するディメンションの作成を参照してください。サービスへの情報の受渡し
デジタル・アシスタントからライブ・エージェントに会話を転送する際に、多くの場合、エスカレーション・ルールの値などの情報をサービスに渡す必要が生じます。この情報を渡すには、エージェント転送コンポーネントのカスタム・プロパティを使用します。
For Oracle B2C Service, the name
can be FIRST_NAME
, LAST_NAME
, EMAIL
, QUESTION
, PRODUCT_ID
, CATEGORY_ID
, CONTACT_ID
, INCIDENT_ID
, and any custom field of type Incident that has Chat Display enabled in the Visibility settings.
カスタム・フィールドの場合、フィールドの列名(小文字)の先頭にc$
を付けたものが使用されます。型には、BOOLEAN
、DATE
、DATETIME
、INTEGER
、LONG
、STRING
、DECIMAL
を使用できます。デフォルトはSTRING
です。DATE
およびDATETIME
には、yyyy-MM-dd'T'HH:mm:ssXXX
のフォーマットを使用します。BOOLEAN
では、trueに1を、falseに0を使用します。
Oracle Fusion Serviceの場合、name
として、FIRST_NAME
、LAST_NAME
、EMAIL
、QUESTION
、PRODUCT_ID
、CATEGORY_ID
、CONTACT_ID
、INCIDENT_ID
、およびOracle Fusion Cloud Applications (Fusion)オブジェクトの任意のフィールドがあります。アプリケーション・コンポーザを使用してOracle Fusion Serviceオブジェクトにカスタム・フィールドを追加すると、_c
接尾辞が名前に自動的に追加されることに注意してください。
ヒント:
Oracle Fusion Serviceでは、ルール評価は、すべての条件が満たされる最初のルールまでしか行われません。ルールを構成する際は、転送された会話がデジタル・アシスタント・エージェントにルーティングで戻されないことを確認します。(Oracle B2C Serviceでは、「状態を移行して停止」構成によってルーティングが決まります。)Oracle B2C Serviceのカスタム・フィールドについて学習するには、Oracle B2C Serviceの使用のカスタム・フィールドの概要を参照してください。Oracle Fusion Serviceのカスタム・プロパティ・フィールドの詳細は、アプリケーション・コンポーザを使用したアプリケーションの構成の「フィールド」を参照してください。
エージェント転送を試行する時期の構成
「エージェント転送」ダイアログ・フロー・コンポーネントには、エージェントへの転送をいつ試行するかを構成できる2つのプロパティ(キュー内の最大エンゲージメントおよび次の場合に転送を許可)があります。
「キューの最大エンゲージメント」プロパティを使用すると、宛先キューで待機するエンゲージメントの最大許容数を設定できます。チャット・リクエストが送信されると、サービスは、キュー内で待機している現在のエンゲージメント数を使用して応答します。この値が「キュー内の最大エンゲージメント」値を超えると、rejected
アクションが発生します。このプロパティを含めない場合、エンゲージメント制限はありません。
「次の場合に転送を許可」プロパティを使用して、使用可能なエージェントに基づいて転送するタイミングを指定します。オプションは:
- エージェントが新しいエンゲージメントをリクエストしています: (デフォルト)チャットをプルする(新しいエンゲージメントをリクエストする)必要があるOracle B2C Serviceエージェントにとって、これは最も限定的な条件セットです。ユーザーはあまり待たずにエージェントと話すことができます。スキルが会話を転送しようとするのは、新しいエンゲージメントをリクエストしたエージェントが存在する場合のみです。他のすべてのケースで、このオプションの動作は「エージェント・セッションが使用可能です」と同じです。
- エージェント・セッションが使用可能: スキルは、使用可能なエージェントのいずれかが一度に保持できるチャットの最大数に達していない場合、会話を転送しようとします。エージェントが長時間実行中の会話に関与している場合またはチャット後のフォローアップを実行している場合、ユーザーは待機が必要になる場合があります。
- 使用可能なエージェント: スキルは、チャットの最大数に達しているか、新しいエンゲージメントをリクエストしているかに関係なく、オンラインのエージェントが存在する場合、会話を転送しようとします。このオプションでは、ユーザーが長時間待機する可能性があります。
指定した条件が満たされない場合、rejected
アクションが発生します。
エージェントの可用性および待機時間の取得
「エージェントの転送条件」ダイアログ・フロー・コンポーネントを使用して、推定待機時間を確認し、その時間を表示して、ユーザーに転送要求を取り消す機会を与えることができます。
このコンポーネントは、ユーザーがエージェントと会話し、長時間待機する場合に使用可能なすべてのエージェントがビジー状態になる状況に対処します。
コンポーネントのプロパティを使用して、ステータス情報を格納する転送条件と変数の名前を指定します。コンポーネントは、条件が満たされたかどうかを示すアクションを返します。組込みの遷移アクションは、conditionsMet
、conditionsNotMet
およびerror
です。これらの各アクションを状態またはフローにマップして、そのアクションを処理します。
例:
conditionsNotMet
の場合、次のようなテキストを含む「メッセージの送信」状態にマッピングできます。Unfortunately, none of my colleagues are currently available to assist with this. Still, we’d love to see this through for you. Please feel free to contact us at email@example.com.
error
の場合、次のようなメッセージを出力するメッセージの表示コンポーネントにマップできます。We're unable to transfer you to a human agent because there was a system error. You can ask me another question if there's something else that I can help you with.
conditionsMet
の場合、ユーザーに待機するかどうかを尋ねるフローにマップでき、待機する場合は、実際の転送を実行するためにエージェント転送状態に遷移します。このフローには、次のものが含まれます。- 待機するかどうかをユーザーに尋ねる共通レスポンス・コンポーネント。そのコンポーネントの「メタデータ」プロパティは次のようになります:
responseItems: - type: "text" text: "${rb('promptTextForTransferDecision','minutes,seconds',agentStatus.value.expectedWaitMinutes,agentStatus.value.expectedWaitSeconds)}" separateBubbles: true actions: - label: "Yes, I'll wait" type: "postback" keyword: "yes" payload: action: "yes" name: "Yes" - label: "No, nevermind" keyword: "no" type: "postback" payload: action: "no" name: "No"
-
待機時間メッセージを形成する前述のテキスト・レスポンス項目のリソース・バンドル・エントリで、時間が1分以上かどうか、および数が0、1以上かどうかがメッセージにわかるようにします。次のようになります。
There are some experts online. But it might take {minutes, plural, =-1 {} =0 {} =1 {1 minute and } other {# minutes and } }{seconds, plural, =-1 {a while} =0 {{minutes, plural, =0 {a very short wait time} other {0 seconds} }} =1 {1 second} other {# seconds} } for one to join. Are you willing to wait?
- ユーザーがエージェントを待機する場合に転送を実行するエージェント転送状態。
- ユーザーが待機しないレスポンスのある状態。
- 待機するかどうかをユーザーに尋ねる共通レスポンス・コンポーネント。そのコンポーネントの「メタデータ」プロパティは次のようになります:
ステータス情報およびアクションの詳細は、エージェント転送条件を参照してください。
ダイアログ・フローがYAMLモードの場合は、System.AgentTransferConditionを参照してください。
添付の有効化
DA (エージェント)チャネルは、Oracle Fusion Serviceエージェントとユーザーの両方が、会話にイメージ、オーディオ、ビデオおよびファイルを添付する機能をサポートします。
これを機能させるには、Web Chat for Serviceまたは添付をサポートする別のメッセージング・プラットフォームを使用する必要があります。
インシデント・レポートの作成
Oracle B2C ServiceまたはOracle Fusion Serviceのインシデント・レポート(またはサービス・リクエスト)は、任意のスキルから作成できます。
スキルからインシデント・レポートを作成するには:
-
「設定」→「追加サービス」→「カスタマ・サービス統合」に移動し、必要なサービスとの統合を作成します。
これは、インスタンスごとに1回のみ実行する必要があります。
-
インシデント作成コンポーネントをフローに追加します。ビジュアル・フロー・デザイナについては、インシデントの作成を参照してください。YAMLについては、System.IncidentCreationを参照してください。
Oracle Fusion Service統合を作成し、認証タイプとして「サインイン・ユーザーのみサービス・リクエストの作成を許可」を選択した場合は、次の操作も行う必要があります。
- インシデント作成コンポーネントの「認証が必要」設定を
True
に設定します。 - ユーザー認証を処理するために、ダイアログ・フローにOAuthアカウント・リンク・コンポーネントを追加します。ビジュアル・フロー・デザイナについては、OAuth「アカウント・リンク」を参照してください。YAMLについては、System.OAuthAccountLinkを参照してください。
- インシデント作成コンポーネントの「認証が必要」設定を
ヒント:
インシデント作成コンポーネントを作成および構成した後、ページのバナーで「検証」をクリックしてスキルを検証します。特に、この検証では、インシデント作成コンポーネントに、作成したカスタマ・サービス統合に指定した名前と一致するサービス名を入力したことが確認されます。サービス・チャットでのUIコンポーネントの表示方法
サービスの顧客ポータルを介してアクセスされるデフォルトのチャットは、テキストおよびイメージに制限されます。たとえば、カードやボタンのかわりにテキストのみが表示され、ユーザーは選択やボタンのラベルをクリックするのではなく、入力する必要があります。
ダイアログ・フロー内のUIコンポーネントのテキストのみでなく、次のオプションのいずれかを表示できます。
- Web Chat for Service (WCFS)。この機能を使用すると、SDK for Oracle Webユーザー・チャネルに存在する機能を使用してチャット・ウィジェットをカスタマイズできます。WCFSを構成するには、Oracle Engagement Engineの管理のWeb Chat for Service (WCFS)の項を参照してください。
- Oracle Inlay Toolkitインレー。インレーについて学習するには、Oracle Inlay Toolkitのドキュメントを参照してください。
チャット・クライアントがサービスの顧客ポータルを介してアクセスされるデフォルトのチャットである場合は、デジタル・アシスタントの「設定」→「構成」ページで「ポストバック・アクションでの自動採番の有効化」をtrue
に設定し、ユーザーが正確なテキストではなく数字を入力することでUIコンポーネントに応答できるようにします。true
に設定しない場合は、レスポンス・アイテムにキーワードを使用して、ユーザーが入力する必要がある内容を最小限に抑えます。この例では、クライアントがTwilioまたはOracle B2C Serviceチャットの場合は常に自動採番がtrue
に設定されます。
${(system.channelType=='twilio'||system.channelType=='osvc' )?then('true','false')}
ヒント:
デジタル・アシスタント・プレビューまたはスキル・プレビューを使用するとき、チャネルをTwilio SMSに設定すると、会話がデフォルト・チャットと同様にレンダリングされます。ここでは、様々なクライアントに対するUIコンポーネントの表示方法の比較を示します。
コンポーネント/プロパティ | サービスのWebチャット | インレー | デフォルトのチャット |
---|---|---|---|
HTMLタグ | サポート | サポート | サポート |
ポストバック・アクション | サポート | クリック可能なボタンとして表示されます。share アクションは無視されます。
|
クリックできないテキストとして表示されます。location 、call およびshare アクションは無視されます。
|
共通レスポンス(YAMLダイアログSystem.CommonResponse )
|
サポート | サポートされていますが、ユーザーは添付ファイルをアップロードできません。 | サポートされていますが、アイテムおよびアクションのラベルは常に垂直に表示されます。選択肢およびボタンは、クリックできないテキストとして表示されます。
|
System.List (YAMLダイアログでのみ使用可能ですが、非推奨)
|
サポート | サポート | サポートされていますが、オプションはクリックできないテキストとして表示され、footerText 値は表示されません。
|
この表では、デフォルトのチャットおよびインレーで様々なコンポーネント構成がどのように表示されるかを示します。
コンポーネント構成の例 | インレー | デフォルトのチャット |
---|---|---|
ノート:この例では、非推奨であり、YAMLダイアログ・モードでのみ使用可能な |
![]() 図rich-text-list-inlay.pngの説明 |
![]() 図rich-text-list-default.pngの説明 |
|
![]() 図rich-text-card-inlay.pngの説明 |
![]() 図rich-text-card-default.pngの説明 |
|
![]() 図rich-text-actions-inlay.pngの説明 |
![]() 図rich-text-actions-default.pngの説明 ペイロードURLはHTMLタグでラップできることに注意してください。たとえば、 |
DA (エージェント)デジタル・アシスタントの構成
CXサービス・テンプレートを使用していない場合は、次のステップに従って、自動化されたOracle B2C ServiceエージェントまたはOracle Fusion Serviceエージェントとして機能するデジタル・アシスタントを作成します。
-
をクリックしてサイド・メニューを開き、「開発」→「デジタル・アシスタント」をクリックします。
-
「新規デジタル・アシスタント」をクリックします。
-
ダイアログに入力し、「作成」をクリックします。
-
デジタル・アシスタントが開くと、「スキル」の
ページが表示されます。
-
「+スキルの追加」をクリックし、このデジタル・アシスタント用に構築したスキルを選択して、「閉じる」をクリックします。
-
「設定」
をクリックし、「一般」をクリックします。
-
「インサイトの有効化」を「オン」に切り替えます。
-
デジタル・アシスタントの「トレーニング・モデル」を「Trainer Tm」に設定します。
-
(オプション)「設定」→「構成」タブで、デジタル・アシスタントにこれらの変更を加えます。
-
選択内のフロー情報:
${system.routingToIntent}
-
プロンプトを終了するものがありません:
Goodbye. Let me know if there's anything else I can help you with.
-
-
(オプション)デジタル・アシスタントに複数のスキルがある場合、ユーザーの発話がデジタル・アシスタントの
help
インテントおよびunresolvedIntent
インテントと一致したときのデジタル・アシスタントの動作をカスタマイズできます。「設定」ページの「構成」タブに移動し、helpまたはunresolvedIntent (あるいはその両方)についてナビゲート先となるカスタム・スキルおよび状態を指定します。デジタル・アシスタントのシステム・インテントの状態の指定を参照してください。 - 「トレイン」をクリックして、デジタル・アシスタントをトレーニングします。
-
(オプション)デジタル・アシスタントをテストするには、「プレビュー」
をクリックします。
スキルからエージェントに転送する状態にダイアログ・フローが遷移すると、プレビューは応答を停止します。その場合は、「リセット」をクリックします。
デジタル・アシスタントを本番環境に配置したら、定期的にリトレーナ・レポートを実行して、インテント解決を向上させる必要があるインテントがあるかどうかを確認することをお薦めします。リトレーナの適用を参照してください。