Agentforce から有人チャットへのエスカレーションを行う

こんにちは。エンジニアの山下です。

昨今の AI 技術の進歩には目を見張るものがあり、特に AI Agent のビジネス活用への期待は日に日に大きくなっているように感じられます。

しかし、AI がいくら賢くなってきているとはいえ、AI Agent だけで全ての問い合わせに対処するのは難しいでしょう。AI Agent に可能なのは高々文章による回答と事前定義されたツールの使用のみであり、現実世界の複雑な要望に応えるにはやや心許ないと言わざるを得ません。また、ユースケースによっては問題の重要な決定を AI に任せるのは不安という心理的障壁も発生しそうです。

AI Agent では対処できない要望が寄せられた場合、単に謝って済ますというのも1つの手ですが、そのような対応が許されない環境も多いでしょう。そういった環境では AI Agent から必要に応じて有人チャットへのエスカレーションを行えると便利です。

特にカスタマーサービスの文脈ではこのような機能の需要は非常に高いため、当然ながら Agentforce の Service Agent にもエスカレーション機能が標準で用意されています。その機能は Omni-Channel によって提供されるのですが、過去投稿でも何度も述べている通り、Omni-Channel のドキュメントは混沌としているため、いざ実装しようとすると情報整理のためにそれなりの時間がかかります。

そのような虚無の時間は少なければ少ないほどよいので、今回は筆者が人柱となって調査した Service Agent から有人チャットへのエスカレーションを行う方法についてまとめておきたいと思います。

概要

有人チャットへのエスカレーションは Service Agent と Omni-Channel の連携によって実現されるのですが、実は Service Agent 側の設定方法については珍しく 公式ドキュメント にその方法がちゃんと書かれています。ざっくり述べると、以下の2つの設定を行えば OK です。

  1. Service Agent に Omni-Channel Flow を設定する
  2. Service Agent に Escalation トピックを付与する

要するに、取り次ぎ先の決定ロジックにあたる Omni-Channel Flow を Service Agent に設定しておき、その上で Escalation という標準トピックを呼び出すことで Flow がトリガーされて有人チャットに取り次がれるという仕組みです。

Service Agent 側の設定は以上で、後は Omni-Channel 側で人間のエージェントがエスカレーションの待ち受けをするための設定が必要です。これは以下を行えばよいようです。

  1. Service Agent を Omni-Channel 経由で呼び出すための設定を行う
  2. Service Console に Omni-Channel を追加する
  3. 人間のエージェントに Presence Status を設定する
  4. 人間のエージェントに必要な権限を設定する
  5. Service Console にチャット欄を表示する

大まかに述べると、人間のエージェントは Salesforce の Service Console というアプリ上でエスカレーションによる呼び出しを待ち、Presence Status というログイン状態を表すラベルを使って呼び出し待機中であることをシステムに伝える、といったような構成になっています。より具体的な内容については実際の設定手順の中で述べたいと思います。

というわけで、さっそく実装していきましょう。

Service Agent 側の設定

まずは Service Agent 側の設定からです。なお、この記事ではエスカレーション機能それ自体の実装に注力するため、Service Agent の作成方法については特に述べず、単に Service Agent は既に作成済みであると仮定します。

Service Agent に Omni-Channel Flow を設定する

まずはエスカレーション先の決定ロジックにあたる Omni-Channel Flow を作成する必要があります。今回は以下のように極めてシンプルな Omni-Channel Flow を作成しました。

route の中では Route to Agent を使って人間のエージェントにエスカレーションするように設定しています。

作成した Flow は Service Agent の Outbound Omni-Channel Flow として設定します。これは Agent Builder の Connections タブから設定できます。

この設定欄ではエスカレーション時に AI Agent が残すメッセージも設定できるので、必要に応じて変更しましょう。

Service Agent に Escalation トピックを付与する

Flow を設定したら、後は Escalation トピックを付与すれば Service Agent 側の準備は完了です。単に Agent Builder で Asset Library からトピックを付与するだけで大丈夫です。

なお、定義済みの Escalation トピックには特に何のアクションも設定されておらず、Omni-Channel Flow の呼び出しの仕組みはブラックボックスになっています。実際の定義は以下になります。

単にプロンプト中の指示に「エスカレーションしてください」と書かれているだけなので、他のトピックでも同様の指示でエスカレーションができるのか試してみたのですが、結果として Escalation 以外のトピックでは Flow の起動は行われず、この標準トピックにのみ組み込まれた特別な機能という扱いのようです。

ただし、Agent Builder で Escalation トピックを選択して New Version を選択することで、Omni-Channel Flow を起動する機能を継承したトピックを自作することができるようです。エスカレーションの動作のカスタマイズしたい場合はこちらを利用するのがよさそうですね。


以上で Service Agent 側の設定は完了で、この時点で Agent Builder のチャット窓から「人間のエージェントに繋いでください」とお願いするとエスカレーション時のメッセージが返ってくることを確認できます。

上の図では英語で問い合わせていますが、日本語でももちろん問題ありません。

ただし、このチャット窓はあくまでテスト用の Playground という扱いのため、実際の Omni-Channel Flow の起動は行われません。人間のエージェントによるエスカレーションの待ち受けを確認する際は、別途フロントエンドを用意する必要があるため注意が必要です。

Omni-Channel 側の設定

というわけで、本丸の Omni-Channel を設定していきます。

なお、Omni-Channel 側の設定方法を調べるにあたって参考になったドキュメントを紹介しておくと、一番よくまとまっていたのは以下の Trailhead です。

trailhead.salesforce.com

基本的にこちらの Trailhead を上から順に読んでいくのが Omni-Channel を理解する近道ではあるのですが、記述がやや冗長で読みづらく、また細部の説明が微妙に足りていない箇所があったりするので、これだけで全ての設定を適切に行うことはできません。結局はこの内容を足場に Salesforce の公式ドキュメントを探し回るしかないというのが現状です。

というわけで、探し回った結果について書いていきます。

Service Agent を Omni-Channel 経由で呼び出すための設定を行う

Messaging for In-App and Web を通じて Service Agent の呼び出しを行えるようになっていれば OK です。こちらの手順は過去に書いた以下の記事で説明しているので、ここでは説明しません。必要であればそちらを参照願います。

cloud.flect.co.jp

Service Console に Omni-Channel を追加する

人間のエージェントは Service Console アプリでエスカレーションの待ち受けを行いますが、初期状態では Service Console に Omni-Channel 用のメニューが表示されないため、まずはそれを表示するための設定を行う必要があります。

Setup > App Manager から Service Console の Edit を選択し、Utility Item (Desktop Only) で Omni-Channel を追加します。

この設定によって Service Console アプリの左下に Omni-Channel というメニューが表示され、エスカレーションの待ち受けに必要なポップアップが表示できるようになります。

人間のエージェントに Presence Status を設定する

Omni-Channel のポップアップが表示できるようになりましたが、初期状態では Offline 以外の状態を選択できません。この状態は Presence Status と呼ばれるもので、初期状態では定義済みの Presence Status がないため、このような状況になっています。

Offline 以外の Presence Status を選択するには以下の手順が必要になります。

  1. 新規に Presence Status を定義する
  2. 新規に定義した Presence Status を Profile に設定する

というわけで、上から順に実施していきます。

Presence Status の定義は Setup > Presence Statuses から行えます。単に New を押下して作成するだけです。

エスカレーションの待ち受けをしたいので、Status Option は Online を選択します。また、Service Channels の Selected Channel には Messaging を追加しておきます。

あとは Save を押せば作成完了なのですが、Presence Status は一度作成すると削除できないので注意が必要です。特に実害はないのですが、テスト用に作成した項目も残存し続けることになるので気になりますね ... 。

これで定義は完了ですが、定義した Presence Status をどのユーザが利用できるかを規定するために、作成した Presence Status を Profile へ設定する必要があります。Setup > Profiles から任意の Profile を選択し、Enabled Service Presence Status Access で先ほど作成した Presence Status を追加すれば OK です。

これで先ほど定義した Presence Status を Service Console で選択可能になりました。Omni-Channel のポップアップの以下のドロップダウンリストから変更できます。

人間のエージェントに必要な権限を設定する

人間のエージェントは適切な権限を持っていないとエスカレーションを受けることができません。この権限については こちら の公式ドキュメントに書かれています。

具体的には以下の権限が必要になります。

  1. Messaging for In-App and Web User Permission Set License
  2. Messaging for In-App and Web Agent

1 は Permission Set License を直接付与し、2 は Permission Set を定義して該当の権限を付与する形になります。

この設定を完了することで、晴れて AI Agent からのエスカレーションを受けることができるようになります。やったぜ。

Service Console にチャット欄を表示する

エスカレーションを受けること自体はできるようになったのですが、初期状態ではエスカレーションを受けた後、画面に何も表示されず、チャットを読むことも返すこともできない状態になります。これはチャットを管理する Messaging Session オブジェクトに設定されている画面に要素が何も配置されていないことに起因します。

これを解消するには Setup > Object Manager から Messaging Session を選択し、Lightning Record Pages から Record Page を新規に作成します。作成した画面に Conversation というコンポーネントを配置すればチャットが表示されるようになります。

作成した画面は忘れずに Activate & Apply しておきましょう。

これで Omni-Channel 側の準備も完了です。

テストしてみる

これで有人チャットへのエスカレーションを行う準備が整ったので、テストしてみましょう。

エスカレーション機能をテストするには Agent Builder の Playground 以外のフロントエンドが必要ですが、今回は(も)Salesforce が用意している サンプルアプリ を利用します。

チャット窓で Service Agent に「人間のエージェントに接続して」と依頼すると、人間のエージェントへのエスカレーションが行われます。実際の画面が以下になります。

Service Agent が立ち去り、代わりに人間のエージェントが参加した旨が書かれています。エスカレーションに際して別のチャット窓が開いたりはせず、現在会話中のチャット窓でそのまま引き継ぎが行われる形式ですね。

Service Console 側の画面は以下になります。

ちゃんと先ほどのチャットと同じ内容が表示されていますね。善哉善哉。

まとめ

というわけで、今回は Service Agent から有人チャットへのエスカレーションを行う方法についてまとめました。

有人チャットへのエスカレーションは Salesforce のコアビジネスに絡む機能のため、さすがに充実しているという感がありました。Service Agent に統合されており、かつカスタマイズも可能なので、それなりに使い勝手はよさそうです。

一方で、過去にも再三述べていますが、Omni-Channel のドキュメントは精査に非常に苦労するため、もう少し整理されると嬉しいですね。特に現状では Service Agent と Omni-Channel のそれぞれの設定方法が書かれた資料が分断しているので、ワンストップで完結できるドキュメントがあると嬉しいと思いました。もうそろそろドキュメントを探すという苦役から解放してくれないか。

以上です。最後までお読みいただき、ありがとうございました。