サービスのLightningフローとアクション＆おすすめコンポーネントでSalesforce上のプロセスを標準化しよう

Salesforceで同じ一連のタスクを実行する際、ユーザの習熟度にばらつきがあると、業務マニュアルで定義した手順がスキップされてしまったり、顧客対応に差が出てしまうことがしばしばあります(Salesforceに限らずですが)。Lightningの「アクション＆おすすめ」コンポーネントを利用すると、チャネルやレコードに紐づけて、事前定義した画面フローを一覧表示することができます。これによりユーザは表示されたアクション一覧に従って、迷うことなく処理を進めることができます。
<img width="1432" alt="Guided Flow" src="https://qiita-image-store.s3.amazonaws.com/0/184624/5e203936-fa92-d92c-96e9-e346d1a70c58.png">
一覧ではアクションを必須にしたり固定表示することで重要なアクションを強調したり、また、ユーザは随時、必要と判断したアクションを一覧に加えることも可能です。以下では、簡単な問い合わせ対応を例に、コンソールアプリケーションにおけるアクション＆おすすめコンポーネントの基本的な設定方法について説明します。[^1]
[^1]: アクション＆おすすめコンポーネントは、Einstein Next Best Action 戦略で絞り込まれたおすすめを表示することもできますが、この記事では扱いません。また、このコンポーネントはコンソールアプリケーションでなくても利用できます。ただしその場合、一覧から選択したアクションやフローはサブタブではなくモーダル表示となります。
## 1. 画面フローを作成する
まず、画面フローを作成します。開発が可能な場合はフロー内でLightning Componentを利用することもできますので、複雑な画面をLightning Componentで実装し、フローでラップこともできます。

<img src="https://qiita-image-store.s3.amazonaws.com/0/184624/a61b321d-1861-8a4f-6f82-bc71a4705d29.png" width="75%">

クイックアクションとは異なり自由に画面を設計できますので、入力フォームだけではなく、例えば電話対応用にトークスクリプトを含めても良いでしょう。

## 2. RecordActionを設定する
例えば「新規契約」の問い合わせと「返品・返金」の問い合わせを対応するのでは、ケースのレコード詳細ページで表示したいアクションの一覧は異なるでしょう。これは、**RecordAction**を用いることで振り分けできます。RecordActionは、**レコードとフローの連結オブジェクト**です。プロセスやApexトリガ、APIなどからRecordActionを作成することで、条件に基づいてレコードに紐づくアクションの一覧を制御します。RecordActionの主要な項目は以下の通りです。

| 項目名 | 型 |内容 |
:-------:|:-------:|:-------|
| ActionDefinition | picklist |フローのAPI参照名 |
| Order | number |アクションの順序|
| RecordId | string |フローに関連づけられたレコードのId |
| Pinned  | picklist |フローのリスト内の固定表示位置 |
| IsMandatory | boolean | アクションが必須かどうか |

プロセスビルダーの場合は、アクションで[レコードの作成]、レコードタイプに[RecordAction]を指定します。

![guideaction-02.png](https://qiita-image-store.s3.amazonaws.com/0/184624/eb672fd3-29ab-5139-a6e4-047f724bb4b2.png)


## 3. チャネルと選択可能なアクションを設定する
「アクション＆おすすめ」では、チャネルに応じて初期表示するアクションの一覧を設定することができます。対応しているチャネルは以下の3つです。

- **電話** : CTI連携でレコードが1件ポップしたとき
- **チャット** : Live Agentのチャット要求を受け入れたとき
- **その他** : 普通にレコード詳細を開いたとき

また、必要に応じて選択可能なアクションのサブセットも設定できます。「アクション＆おすすめ」コンポーネントでは、ユーザが自由に必要なアクションを一覧に追加できますが、サブセットを設定しておけば、ユーザがアクションを追加する際に、全ての画面フローから必要なアクションを絞り込む手間が省けます。例えば、チャットのチャネルでは、電話受付時にしか利用しない画面フローを省いた一覧を設定しておくなどです。

![guidedaction_new_setting.png](https://qiita-image-store.s3.amazonaws.com/0/184624/dfafc3ea-cd43-3f34-5218-2bab67f1ad14.png)

[設定] - [ユーザインタフェース] - [アクション＆おすすめ]で新しい設定を作成できます。

ウィザードに従ってチャネルや選択可能なアクションを設定します。ウィザード内に記載がありますが、[固定解除]の欄に配置されたアクションやフローは、一度完了すると再度レコードを開いた際には一覧に表示されません。これは、ケースや商談などのライフサイクルのあるレコードに対して1度だけ実施したいアクションやフローを設定しておくことを意図しているためです。

アクション＆おすすめコンポーネントをレコード詳細ページに配置し、作成したアクション＆おすすめのリリースを選択すれば完成です。

<img width="319" alt="スクリーンショット 2019-07-02 0.12.27.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184624/47ac4168-99aa-41b4-56a5-0b1522ecbce8.png">

## 4. 履歴を見る・分析する
<img width="335" alt="スクリーンショット 2019-07-02 0.15.48.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184624/e8bc847b-1fb9-3f57-b301-f95d34faa5b7.png">

アクション＆おすすめコンポーネントの[履歴]タブからアクションの履歴(開始、追加、完了)が確認できます。これは[RecordActionHistory](https://developer.salesforce.com/docs/atlas.ja-jp.216.0.object_reference.meta/object_reference/sforce_api_objects_recordactionhistory.htm)というオブジェクトで管理されていますが、RecordActionHistoryはBigObjectのためクエリする際は注意が必要です。

## おわりに
実際の導入にあたっては、業務プロセスをどれくらいの粒度で1つ1つの画面フローに分解するか、また、異なる業務プロセス間でどれだけ画面フローを共通化できるか等がポイントになると思います。一貫した手続きを提供することは、Salesforceユーザにとってもその先の顧客にとっても嬉しいものです。ぜひアクション＆おすすめコンポーネントを活用してみてください。

## 参考リンク
* [Help - サービスの Lightning フローとアクション & おすすめコンポーネント](https://help.salesforce.com/apex/HTViewHelpDoc?id=console_lex_guided_action_list_component.htm&language=ja)
* [Trailhead - サービスの Lightningフロー](https://trailhead.salesforce.com/ja/content/learn/modules/service_lightning_flow_for_service)
* [サービスのLightningフロー開発者ガイド(英語)](https://developer.salesforce.com/docs/atlas.en-us.salesforce_guided_engagement.meta/salesforce_guided_engagement/)
    * サービスのLightningフロー(Lightning Flow for Service)は、Lightningフローやガイド付きアクションリストを含む自動化ツールの総称です。
* [Summer '18リリースノート : Lightning のガイド付きエンゲージメントを使用したコンソールでのサービスプロセスの実施 (正式リリース)](https://releasenotes.docs.salesforce.com/ja-jp/summer18/release-notes/rn_salesforce_console_for_service_flows.htm)
    * アクション＆おすすめコンポーネントは以前、ガイド付きアクション・ガイド付きエンゲージメントという名称でした。古いドキュメントには旧名称が残っていますのでご注意ください。