service-omni-skills-based-routing-configure について
Salesforce で、指定したアクティブなエージェントユーザーに Omni-Channel のスキルを割り当てるスキルです。必要に応じてスキルと不足する紐付けを作成し、既存の割り当てを保持して再実行できます。
主な機能
- 01Omni スキルの作成または再利用
- 02アクティブなエージェントへの紐付け
- 03検出後に書き込む冪等な処理
- 04エージェントごとの部分失敗報告
活用シーン
- 01指定エージェントをスキルベースルーティングの対象にする
- 02重複する紐付けを作らず他のエージェントにもスキルを追加
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ forcedotcom/ sf-skills --skill service-omni-skills-based-routing-configureインストール後、Claude Code で/service-omni-skills-based-routing-configureを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/api-notes.mdscripts/configure-and-report.shscripts/tests/_bootstrap.pytest_sbr_contracts.py詳細
service-omni-skills-based-routing-configure
Omni のスキルベースルーティング(SBR)で、エージェントをルーティング可能にします。ルーティング可能なエージェントには、Skillと、そのスキルをエージェントのユーザーに割り当てるSkillUserジャンクションが必要です。SkillUserは、Setup > Skills > Assign Usersから登録され、スキル要件のある作業を評価する、従来のOmni-Channelモデルです。このスキルは、1つのスキルについて、複数のアクティブなエージェントユーザーへの割り当てを含め、両方を冪等に確保します。
ServiceResourceとServiceResourceSkillはField Serviceのスキルモデルです。通常のService Cloud組織では、ServiceResource.IsActiveは書き込みもクエリもできないため、新しく作成したリソースは非アクティブのままとなり、ジャンクションは拒否されます。そのため、このスキルでは、サポートされているライセンスに適したSkillUserの方法を使用します。
入力
bash scripts/configure-and-report.sh <org-alias> <skill_developer_name> [agent_members_csv] [skill_master_label]
org-alias(必須)。skill_developer_name(必須)。確保して割り当てるOmniSkillのDeveloperName(例:Omni_Demo_Voice)。agent_members_csv(任意)。スキルルーティング可能にするエージェントをカンマ区切りで指定します。各項目にはUsername(…@…)または15/18文字のUser Id(005…)を指定します。AGENT_MEMBERS_CSVから指定することもできます。省略した場合、このスキルはエージェントを推測してスキルを割り当てることはなく、処理をブロックします。skill_master_label(任意)。スキルの作成が必要な場合にのみ使用するMasterLabelです。デフォルトはDeveloperNameをタイトルケースにした形式です。
前提条件と安全性
- 対象組織が
sfCLIで認証済みであること、Service Cloudライセンスがあること、sfCLIが2.139.6以上であること。 - Omni-Channelの基本設定が有効で、スキルベースルーティングがオンになっていること(
service-omni-base-settings-configure)。 - 指定したエージェントが存在し、アクティブであること(
service-omni-agent-users-create)。 - 3条件からなる
safe_to_write本番環境ガードが適用されます。
実行
configure-and-report.shは、各フェーズで書き込み前に状態を検出しながら、冪等な2つのフェーズを実行します。
- Skill — DeveloperNameで
Skillをクエリします。存在する場合は再利用し、存在しない場合はMetadata APIでSkillコンポーネントをデプロイして、Idを再クエリします。 - SkillUser — スキルと解決済みユーザーに対応する既存の
SkillUserレコードをクエリし、不足している(SkillId、UserId)の割り当てのみをREST DMLで作成します。並行処理によるDUPLICATE_VALUEは、再利用として調整されます。
動作
冪等かつ非破壊的です。既存のスキルと割り当ては再利用されます。このスキルは、自身が作成していないものを削除したり再割り当てしたりしないため、再実行しても重複せず、望ましい状態に収束します。解決対象はアクティブなユーザーのみです。非アクティブなユーザーには作業をルーティングできないため、スキルを黙って割り当てるのではなく、その旨を報告します。
**部分的な安全性。**一部の割り当てが成功し、ほかが失敗した場合、ステータスはpartialとなり、エージェントごとのエラーがblocking_issueに記録されます。成功した割り当てはそのまま保持されます(各ジャンクションは独立した書き込みです)。
出力の仕様
単一のJSONオブジェクトです。statusはconfigured | reused | partial | blocked、skill({developer_name, id, state})、agents({username, user_id, skill_binding_id, skill_binding_state}の配列)、created_counts、reused_counts、manual_actions、blocking_issueを含みます。
reused— スキルとすべての割り当てがすでに存在していました。configured— 少なくとも1つのコンポーネントが作成され、要求されたすべての割り当てが存在するようになりました。partial/blocked—blocking_issueを確認してください。前提条件の不足が原因の場合、manual_actionsに必要な前提条件のスキルが記載されます。
制限事項
- 1回の実行につきスキルは1つです。エージェントセットに必要なスキルごとに再実行してください。
WorkSkillRoutingルールや、フィールドベースのスキル条件は作成しません。これは別のスキルです。- エージェントユーザー、キュー、プレゼンス設定は作成しません。
SkillUser.SkillLevelはプラットフォームのデフォルト値のままです。習熟度を明示的に設定するには、DML本体をフォークする必要があります。
参考資料
| ファイル | 参照するタイミング |
|---|---|
references/api-notes.md | SkillメタデータとSkill sObjectの違い、SkillUserのエージェント割り当てモデル、SBR基本設定の前提条件を確認するとき |
scripts/tests/test_sbr_contracts.py | 変更を検証するとき。このスキルのディレクトリからpython3 scripts/tests/test_sbr_contracts.pyを実行してください |