ボットの作成と実装
学習の目的
この単元を完了すると、次のことができるようになります。
- リリースのタイムラインを作成する。
- ボットの会話を定義する。
- ボット内のフローと状態をマッピングする。
- ボットを作成する。
リリースのタイムラインを作成する
ボットの機能と誰がそれを実現するかを確認しました。次はプロセスの各ステップをいつまでに完了しなければならないかがわかるようにタイムラインを作成します。成功するボットを作成するには時間とリソースが必要です。タイムラインを作成すると、最適な配分方法を決めるのに役立ちます。
Harryette Randall は Bloomington ボットのリリースのタイミングに関する期待を定義するときに、次の重要な点について考えます。
- ボットの稼働をいつ開始するか?
Bloomington Caregivers では、インフルエンザシーズンのピーク前後に新しい患者が急増する傾向があります。Harryette と上司たちは、それまでにボットを稼働させたいと考えているため、チームは目標稼働日を秋にします。
- 段階的に (特定の順序で) 行う必要があるステップはどれか?
段階的ステップは次のようになります。まず、承認を得るために上司たちにアイデアを売り込む必要があります。次に予算をまとめ、前の単元で特定したチームメンバーをオンボーディングする必要があります。この依存ステップを解決したら、タスクの委任と、プロジェクトの各フェーズにかかる時間の計画に取りかかることができます。
- 同時進行で行えるステップはどれか?
提案された予算を承認するために Harryette の上司が時間をかけている間、どのような会話をボットで処理することになるかについて理解を深めるために、彼女はカスタマーサポートエージェントとのミーティングをスケジュールします。ボットを作成する段になれば、ボットのコンテンツを入力するときに専門分野のエキスパート (この場合はカスタマーサービスエージェント) からの生のフィードバックを取り入れるつもりです。
- ボットに必要なデータをどうやって入手するか?
Bloomington Caregivers は Salesforce Health Cloud を使用しているため、Harryette はデータがどこにあるか正確に把握しています。彼女は、プロセスを自動化してデータにアクセスするために、場合によっては自分のようなシステム管理者が Salesforce のツールや言語を使用しなければならないことを理解しています。そこで、ボット内でデータを利用するときにこうしたスキルを磨く必要がある場合に備えて、フローと Apex に関するトレイルをブックマークします。
上記の概要を決めた後、Harryette は各タスクの期限を設定し、プロジェクトに関与する主要なステークホルダーとタイムラインを共有します。プロジェクトを導くための概要が決まり、ボットの実現に向けて作業を開始する準備ができました。
上位のユースケースの会話を定義する
Harryette はボットのユースケースを特定しました。カスタマーサポートエージェントと話をして、そのユースケースでいいかを確認し、会話のインサイトを収集しました。また、タイムラインも作成しました。これで、ボットの作成を開始するために必要なほぼすべてのものが揃いました。
Harryette は、チームの誰かがボットのコピーを作成する前に、ボットが Bloomington Caregivers のブランドを反映する一貫した語調で会話をするようにしたいと考えています。それには、マーケティング部門の協力が必要です。幸い、マーケティング部門はすでに会社のすべてのコンテンツ用に語調ガイドラインを作成しており、チャットボットの会話も含まれています。
このガイドラインをチームと共有し、ベストプラクティスを理解してもらうために Trailhead の「Conversation Design (会話の設計)」モジュールを紹介します。顧客が調べるだろうと思われる各トピックの会話パスを一緒に作成していきます。トピックごとに「ハッピーパス」を作成します。これは、チャット内で問題を解決できる、またはより適切なリソースにリダイレクトされるなど、顧客にとって快適なエクスペリエンスとなる会話フローです。
フローと状態をマッピングして主要なダイアログを特定する
各会話内で、Harryette はさまざまなボットサブプロセスを特定します。ボットに実装されると、これが実質的にダイアログとなります。ダイアログは、ボットができることを制御する会話スニペットです。
ダイアログには、ボットの紹介、メインメニュー、エージェントへの転送、顧客の識別の他に、区分化して再利用できる一般的なトピックなどがあります。ボットの効果を最大化するために、Harryette はどのダイアログをいつ表示すべきかをじっくりと考えます。
このサブプロセスを整理するために、サブプロセス間の関係をマッピングします。彼女はプロセスのペアまたはグループがカプセル化されているのか、接続されているのか、または独立しているのかを考えます。
- カプセル化されたサブプロセスは、より大きなプロセスの一部です。
- 接続されたサブプロセスは、相互に関連していますが依存していません。
- 独立したサブプロセスは、互いにまったく関連していません。
このフレームワークを使用して、Harryette は複数の場所で使用されるプロセスを探します。そうすることで、繰り返されるプロセスを個別のダイアログに組み込んで会話で再利用できます。最終的には、すべてのプロセスをダイアログに組み込む予定です。
Harryette が上位のすべてのユースケースでこれらの関係をマッピングすると、会話マップにボット全体のプロセスが追加されていきます。このマップは、すべてのサブプロセスがどのように連携して一貫性のあるカスタマーエクスペリエンスを創出しているかを視覚化できるため、会話の設計で頼りになるリソースとなります。
ボットのエンティティと変数を特定して作成する
Harryette は会話フローを設計してボットの基盤を構築しました。次は、細部に目を向けます。
ボット作成の用語を理解するために、Salesforce で使われる重要な用語を確認します。
用語 |
説明 |
エンティティ |
エンティティは、お客様から収集するデータの種類です。Salesforce が提供するシステムエンティティには、テキスト、日付時刻、日付、金額、数値、人、場所、組織、パーセント、Boolean、オブジェクト (標準 Salesforce またはカスタム) があります。必要に応じてカスタムエンティティを作成できます。 |
変数 |
変数とは、お客様から収集した特定のデータを保存するコンテナのことです。 Einstein ボットを使用してユーザー情報を収集する場合は、各変数をエンティティに関連付ける必要があります。これは、適切な情報を保存し、Salesforce のトランスクリプトとデータをクリーンに保つために、ボットは固有表現抽出 (NER) を使用してチャット訪問者の回答の関連部分 (エンティティ) のみを取得するからです。 変数は情報のコンテナであるため、ダイアログアクション内で入力と出力の両方として使用することができ、メッセージにテキストとして挿入できます。 |
Harryette は、顧客の ID 番号やケース番号などの変数を使用すれば、オブジェクト検索などの内部ボット機能を構築できることにすぐに気づきました。そうなると、レコードを検索するために適切な変数が必要です。
ボット内ですべての機能を使用可能にするために、Harryette はフローとボットビルダーの両方で変数を作成し、それらが一致することを確認します。適切に定義された変数は、ユーザーレコードの更新やケースの作成など、フローまたは Apex を必要とするアクションの前提条件であるため、Harryette は目的のプロセスすべてを念頭に置きながら変数を割り当てます。目的を達成する方法がわからないときは、フロー要素のヘルプドキュメントを参照できます。
自然言語処理の実装方法
Harryette は、チャットボットで人工知能を可能にするうえで NLP の重要性について多く聞いています。チームと会った後、Harryette は NLP 機能はボット稼働のフェーズ 2 で検討することにしました。そのときに、顧客のニーズを満たすためにメニューベースの機能からさらに拡張する必要があるかどうかを評価します。
フェーズ 2 に備えて、彼女は NLP を実装するために必要なすべてのステップとリソースをまとめます。事前のリサーチから、NLP はどの発言 (ユーザー入力) がどのインテント (要求) に対応するかをボットに教えるインテントモデルから構築されるということを覚えています。インテントは適切なダイアログに対応付けられており、そのダイアログがクエリに対する応答としてユーザーに表示されます。
ボットビルダーで、Einstein ボットには最初に 3 ~ 5 個のインテントとインテントごとに最低 20 個の発言が必要であることがわかりましたが、その数がもっと多ければ精度が上がります。ベストプラクティスをさらに詳しく調べると、特定の方向にモデルを歪めないように、インテントは関連付けられた発言の数でバランスを取る必要があることがわかりました。同じ理由で、各発言は一意であり、単語の長さに多少のバリエーションを持たせる必要があります。
これは知っておくべき大切ことですが、それはそうとしてインテントモデルの発言はどこから取得するのでしょうか? Salesforce をいろいろ調べた後、Harryette は発言を取得する方法を書き留めました。
- カスタマーサービスデータからクラウドソーシング
- ボットビルダーで入力のおすすめを有効化
- AppExchange からインテントセットをダウンロード
- テンプレートボットインテントセットのデータを使用
フェーズ 2 で NLP を使用してボットを作成するために、Harryette はまず発言とインテントの準備を整える必要があります。データがボットにアップロードされたら、インテントモデルの構築とトレーニングを開始できます。このプロセスは、ボットビルダー内の [Bot Training (ボットトレーニング)] で開始できます。最大 7 日前のデータを表示して分類を確認し、後で新しいデータを使用してモデルを再構築できます。
ボットは初めは完全一致しか識別できない可能性がありますが、間違いから学び、経験とデータを重ねることで改善されていきます。NLP が有効になっているボットの稼働を開始した後、Harryette は [Model Management (モデル管理)] タブで月に 2 回パフォーマンスを確認するつもりです。