Omni-Channel 

[まとめページに戻る](https://qiita.com/Keiji_otsubo/items/60afc2a8d211b6f7d89f)
[まとめN～Z](https://qiita.com/Keiji_otsubo/items/92f92bb9f668ca9688be)
[OmniStudioに戻る](https://qiita.com/Keiji_otsubo/items/c1e3b177c56e87ff41f7)

+ [Prepare for Your Salesforce OmniStudio Developer Credential](https://trailhead.salesforce.com/users/strailhead/trailmixes/prepare-for-your-salesforce-omni-studio-developer-credential)
+ [Omni-Channel トレイルヘッド](https://qiita.com/Keiji_otsubo/items/04b36631a445e10bf861)

# 設定

+ [スーパーバイザーの設定](https://qiita.com/Keiji_otsubo/items/d9212eac59fb186ba695)
+ [オムニチャネルおよびスキルベースのルーティング](https://qiita.com/Keiji_otsubo/items/3e194d4419700c171515)
+ [コンソール ブラウザ タブを更新すると、チャット/オムニチャネルが切断される](https://help.salesforce.com/s/articleView?id=000319188&type=1)
+ [チャット エージェントは「オンライン」ステータスですが、チャット ボタンはオフラインと表示されます](https://help.salesforce.com/s/articleView?id=000316800&type=1)
+ [チャット ボタンがオフラインであるか、チャットがアクティブなチャット ユーザーにルーティングされていません](https://help.salesforce.com/s/articleView?id=000351438&type=1)
+ [OmniChannel Supervisor を介してエージェントにケースを割り当てることは可能ですか?](https://trailhead.salesforce.com/en/trailblazer-community/feed/0D54S00000JeXFD)

:::note
所有者をオムニ チャネル対応のキューに戻すと、ルーティングが再起動されます。
オムニ チャネル ルーティングの目的は、達成したいこのような手動による介入を回避することです。
さらに、スキルベースのルーティングを使用するだけでなく、リクエストを自動的に受け入れるようにオムニチャネルを設定することもできます.
:::

+ [CTI アダプターを使用せずにオムニチャネルを Amazon Connect と統合しました。エージェントが着信を受信したときに関連レコード画面がポップアップするようにしたいと考えています。](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007OY49l)

:::note
Use an omni-channel flow to achieve this as it's native/out-of-the-box, scalable, and no code is needed:

1. Leverage a get records element to find Contact records based on the dialer's phone number

2. Leverage a decision to determine if the contact was set (or not). This creates a known and unknown contact path in the decision. 

3. You can then leverage a screen pop element to pop the contact (if found) as a subtab of the voice call, or simply route the call without a screen pop if it is unknown. 

You could also do several other operations as flow is highly flexible (create a case for instance, load an existing open case, other operations).
:::

+ [Service Cloud オムニチャネル: プレゼンス ステータスは複数のアプリでは利用できませんか?](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007ahbmw)

:::note
標準のオムニチャネル ウィジェットは、コンソール アプリでのみ使用できます。
https://ideas.salesforce.com/s/idea/a0B8W00000GdWf2UAF/make-omni-channel-utility-available-in-apps-with-standard-navigation

ただし、拡張オムニチャネルは利用可能です。
https://help.salesforce.com/s/articleView?id=release-notes.rn_omnichannel_enhanced_omni_std_nav.htm&release=248&type=5
:::

+ [エージェントのログイン時に、omniToolkit API を使用してエージェントのサービス プレゼンス ステータスを変更しています。 setServicePresenceStatus({statusId}) を使用してステータスを変更しています。 Lightning レコード ページに aura コンポーネント (ステータスを変更するロジックがある) を配置すると、まったく問題なく動作します。しかし、ユーティリティ バーと同じコンポーネントを使用すると、「Error: Omni-Channel is not available.」というエラーが発生します。このエラーの原因を調べようとしましたが、うまくいきませんでした。誰かがそれが起こっている理由と、オーラが自動的にトリガーされるようにユーティリティバーと同じように使用する方法を知っていますか？](https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54V00007ajNSw)

:::note
 I have found one workaround. It was timing issue . What I did was I added delay for three seconds before updating the status and it worked. 

回避策を 1 つ見つけました。それはタイミングの問題でした。私がやったのは、ステータスを更新する前に 3 秒間の遅延を追加したことで、うまくいきました。 
:::

+ [| エージェントは、一度にオープン ステータスのチケットを 1 つだけ持つことができます。エージェントに新しいチケットを割り当てることができるのは、オープン チケットがなく、ステータスが利用可能な場合のみです。通話中の場合、ステータスは利用できません (したがって、通話中はチケットを割り当てることはできません)。](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007eqnzj)


# レポート

+ [設定したプレゼンス ステータス (ライブ エージェント オンライン、外出中、ランチ、トレーニングなど) でエージェントが費やした時間を示すレポートを作成したい](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000A7Vd5SAF)
+ [オムニ スーパーバイザ アプリでエージェントの 1 日または 1 週間のアクティビティを確認できるか](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007OZO8n)

# 最初に起動するのはどちらですか? ケース割り当てルールまたはオムニチャネルのキューベースのルーティング Salesforce?

>割り当て、自動応答、エスカレーション、ワークフロー ルールなどの自動化ルールは、オムニチャネルが作業項目をエージェントにルーティングし、エージェントが作業を受け入れる場合にはトリガーされません。

>エージェントが作業を受け入れ、作業項目レコードを編集して保存すると、自動化ルールがトリガーされます。

つまり、2 つの構成の間に競合はありません。オムニチャネル ルーティングが使用されている場合は、それが優先され、割り当てルールはまったく呼び出されません。

[What fires first - Case Assignment rules or Omni-channel Queue Based Routing Salesforce?](https://salesforce.stackexchange.com/questions/349849/what-fires-first-case-assignment-rules-or-omni-channel-queue-based-routing-sal)

+ [【未解決】オムニチャネルでルーティングを開始できません](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007RK6c5)

# トリガー

+ [オムニチャネルを通じて割り当てられたレコードは、ワークフロールール、エスカレーションルール、トリガーなどの自動化をトリガーしません](https://qiita.com/Keiji_otsubo/items/63338e1c061405f275fa)



# オムニフロー - null

+ [オムニフロー - null](https://trailhead.salesforce.com/en/trailblazer-community/feed/0D54S00000ITMpN)
+ [CTI アダプターを使用せずにオムニチャネルを Amazon Connect と統合しました。エージェントが着信を受信したときに関連レコード画面がポップアップするようにしたいと考えています。また、顧客がすでに存在する場合は、その顧客のレコードも画面にポップアップ表示されるようにしたいと考えています。どうすればこれを達成できますか? 誰かが解決策を提供できますか?](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007OY49l)

:::note
これを実現するには、ネイティブ/すぐに使えるスケーラブルでコードが不要なオムニチャネル フローを使用します。

1. レコードの取得要素を利用して、発信者の電話番号に基づいて連絡先レコードを検索します。

2. 決定を利用して、連絡先が設定されたかどうか (または設定されていないか) を判断します。これにより、決定において既知および未知の連絡先パスが作成されます。 

3. その後、スクリーン ポップ要素を利用して、連絡先 (見つかった場合) を音声通話のサブタブとしてポップしたり、連絡先が不明な場合はスクリーン ポップを表示せずに単純に通話をルーティングしたりできます。 

 

フローは非常に柔軟であるため、他のいくつかの操作を実行することもできます (たとえば、ケースの作成、既存のオープンケースの読み込み、その他の操作)。
:::

+ [オムニチャネル チャット ウィンドウで事前チャット フォームが入力され、ケースにメール フィールドがすでに存在する場合、チャットは同じメール アドレスに関連付けられた前のレコードにルーティングされるようにしたいと考えています。](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007PhOcm)

:::note
オムニチャネル フローを試してみることはできますか? ここでは、電子メール フィールドが IsBlank か古いケースの EmailField かをチェックする決定を追加できます。= 新しいフィールドの電子メールフィールド 

if the email field IsBlank or an old-case EmailField! = new filed EmailField 

参照: https://help.salesforce.com/s/articleView?id=sf.miaw_map_messaging_2.htm&type=5
:::

# 事前チャット フォームは、ドメインの前に余分なスペースがある電子メール アドレスを間違ったものとして認識しません。

[メールの事前チャットフォーム入力検証](https://trailhead.salesforce.com/en/trailblazer-community/feed/0D54S00000A8pz9)
フローで対応したようです。

# 数式

+ [Custom Date Formatting in OmniScript](https://help.salesforce.com/s/articleView?id=000365481&type=1)

# Flexcard

+ [Flexcard データ テーブルの selectrow イベントの処理方法](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000Jf2SW)

# エラー

+ [ステータスを「利用可能 - ケース」に設定すると、オムニチャネル ウィジェットでエラーが発生しました](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007FVFlR)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/e9e0ef22-a3a7-fb80-ee56-9317a99d0e67.png)

:::note
ケース所有者を何度か変更し、オムニチャネル ウィジェットを開いてオフラインに戻します。その後、「Available - Case」に設定します。それは修正されました。
:::

+ [メッセージング セッション オブジェクトがサービス チャネル [オムニチャネル] に表示されない](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007RJQZH)

:::note
I saw later that SF had created a service channel for messaging session by default, that is why I could not see in the list.

SF allows 1 service channel per object.

すでにメッセージングを有効にしていますが、後で確認すると、SF がデフォルトでメッセージング セッション用のサービス チャネルを作成していたため、リストに表示されませんでした。

SF では、オブジェクトごとに 1 つのサービス チャネルが許可されます。
:::

# アイデア

+ [How to customize omni-channel column view?](https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007Jjxp9)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/bb3e52f4-afb1-d56e-bee9-c63c96f89a7f.png)

:::note
Looks like this is still an idea: 

Omni-supervisor Customized View
https://ideas.salesforce.com/s/idea/a0B8W00000GdisXUAR/omnisupervisor-customized-view
:::