service-itsm-teams-itdesk-configure について
headless-360 を使い、Microsoft Teams と連携する Salesforce IT Desk の担当者向け設定を行うスキルです。設定とユーザー権限に加え、API 有効化のログイン用権限セットを扱い、Swarming の設定は別のスキルに委任します。
主な機能
- 01IT Desk の Teams 設定を有効化
- 02アプリの導入リンクとヘルプの提示
- 03選択したユーザーへの IT Desk 権限割り当て
- 04API Enabled 権限セットの作成または再利用
- 05Swarming の連携設定を委任
活用シーン
- 01IT 担当者向け Teams サービスデスクの有効化
- 02選択したユーザーへの IT Desk アクセス設定
- 03Teams ログインに必要な API 権限不足への対応
MCP 対応
headless-360 経由で Salesforce API を呼び出し、IT Desk を設定します。Teams アプリは人がインストールし、Swarming 設定は別のスキルが担当します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ forcedotcom/ sf-skills --skill service-itsm-teams-itdesk-configureインストール後、Claude Code で/service-itsm-teams-itdesk-configureを入力して読み込まれたか確認します。
詳細
Salesforce IT Desk(Microsoft Teams)のセットアップ
Teams ITSM Go ページ(service-cloud-itsm-teams-integration の機能ページ)で 「Set Up Salesforce IT Desk」 チェックリストグループを完了します。これは、IT エージェントが Teams からチケットに参加して解決するための、Teams ITSM 統合における対応担当者/エージェント側の設定です。すべての操作は headless-360 経由で実行されます。
対象範囲
- 対象:
OrgHasITSMFulfillerTeams設定の有効化、IT Desk アプリのインストール用の正確な Teams マーケットプレイスリンクとヘルプドキュメントのユーザーへの提示、確認済みユーザーへのTeamsForITSrvcsUser/MicrosoftGraphAccess権限セットの割り当て と、サインインに必要な組織全体の API-Enabled ログイン権限セットのプロビジョニング(一度だけ作成)、さらに「Set Teams as Collaboration Tool for Swarming」の設定をservice-itsm-swarming-configureに委任すること。 - 対象外:基本となる Teams Salesforce Go ページの切り替え(
ITSMTeamsEnabled)、Azure/Entra アプリの登録、Named Credential の設定、および Teams 拡張機能/優先サイトの登録(このスキルの前提条件であるservice-itsm-teams-configureを使用してください)。チェックリストの IT Service/従業員側の設定にはservice-itsm-teams-itservice-configureを使用してください。service-cloud-swarmingGo 機能自体の有効化は、service-itsm-swarming-configureに委任してください。
前提条件: 先に(または並行して)service-itsm-teams-configure を実行してください。このスキルでは、service-cloud-itsm-teams-integration Go 機能がすでに有効になっていることを前提としています。
手順は1つずつ実行してください。 これらの手順では、実際に状態を変更する API 呼び出しが行われます。操作を1つ実行し、その結果を表示して、成功したことを確認してから次に進んでください。複数のセットアップ呼び出しを1つの並列ブロックにまとめて実行しないでください。
ワークフロー
ステップ 1 — Salesforce IT Desk を有効にする
これは組織設定の単純な切り替えです(ITSMTeamsEnabled とは異なり、直接 PATCH できます)。Setup の切り替えをクリックするようユーザーに依頼せず、API を使って自分で有効にしてください。
mcp__headless-360__dispatch(
method: "PATCH",
url: "/services/data/v67.0/setup/org/preferences/OrgHasITSMFulfillerTeams",
body: { "desiredState": true }
)
200 {"isPreferenceEnabled": true} が返ることを確認してください。有効になったことをユーザーに伝え、ユーザー自身で切り替えるよう依頼しないでください。
ステップ 2 — Teams に Salesforce IT Desk アプリをインストールする(ユーザーの作業)
このスキルからテナントのアプリカタログに Teams アプリをインストールするために呼び出せる Salesforce または Microsoft の API はありません。この操作では、十分なテナント権限を持つアカウントでサインインし、Microsoft Teams 管理センター/AppSource で人が「Add」をクリックする必要があります。ユーザーに正確なマーケットプレイスリンクとヘルプドキュメントを提示してください。この手順を自動化しようとしないでください。
- マーケットプレイス(Go ページの「Go to Microsoft Marketplace」ボタンからライブで確認済み):
https://marketplace.microsoft.com/en-us/product/teams-app/WA200009869?tab=Overview - ヘルプドキュメント:
https://help.salesforce.com/s/articleView?id=service.it_srvce_msteams_cnfig_fulfilerhub_app.htm&type=5
ユーザーがインストールリンクとあわせて自分で確認できるよう、両方をまとめて表示してください。また、対応担当者が Teams へのサインインに使用する Azure/Microsoft アカウントのメールアドレスは、その Salesforce ユーザーのメールアドレス/Username と一致している必要がありますと伝えてください。SSO は Microsoft UPN を Salesforce の Username に解決するため、一致しない場合は通知なしにログインに失敗します。
その後、処理を停止して待機してください。 ユーザーがアプリのインストール完了を確認するまで待ってください(「installed」と返信します)。これは人による操作です。完了したものとしてステップ 3 のユーザーアクセス権の割り当てに進んだり、確認を捏造したりせず、実際の返信を待ってください。
ステップ 3 — ユーザーアクセスを管理する
「ユーザーアクセスを管理」(Go ページの「管理」ボタン)では、次の 2 つの権限セットを割り当てます。これは「Manage Microsoft Teams for Employee Service User Access」ダイアログでライブ確認済みです。
TeamsForITSrvcsUser(ラベル 「Microsoft Teams for IT Services」。PSLTeamsForITSrvcsPslによってバックアップされています)MicrosoftGraphAccess(ラベル 「MicrosoftGraphAccess」) — 同じダイアログで併せて割り当てます。
さらに 3 つ目の「ログイン」権限セットも必要です。これは組織ごとに 1 回だけプロビジョニングします。 ダイアログで設定する 2 つの権限セットは IT Desk の 画面 をプロビジョニングしますが、担当者のサインインは許可しません。どちらも PermissionsApiEnabled = false となっているため、埋め込みアプリの Connect 呼び出しは 403 を返し、「server not reachable」というエラーでログインに失敗します。担当者には、API 有効システム権限を持つ権限セットが必要です。すでに Teams_Employee_ApiAccess という名前の権限セットがある組織もあります(これはカスタム権限セットのため、新規顧客の組織にあるとは限りません)。ない場合は作成してください。これは組織全体で共有するアーティファクトであり、IT Service のログインにも使われるため、作成は 1 回だけにして、必要な場所で割り当てるだけにしてください。解決または作成してから割り当てる手順は、下記のログインの前提条件にあります。このステップの一環として実施し、ログインに問題が起きるまで待たないでください。
有効なユーザー全員にただ割り当ててはいけません。 どのユーザーにアクセス権を付与するか、具体的なユーザーを確認してください。ユーザーを指定する前に一覧を見たい場合は、ページごとに表示してください。組織には数百、数千人のユーザーがいる場合があるため、1 ページに表示するユーザーは最大 10 人とし、次のページを表示する前に「続きを表示しますか?」と尋ねてください。
mcp__headless-360__dispatch_readonly(
method: "GET",
url: "/services/data/v67.0/query",
queryParams: { "q": "SELECT Id, Name, Username, Email FROM User WHERE IsActive = true ORDER BY Name LIMIT 10 OFFSET <page * 10>" }
)
確認済みの注意点: スクラッチ組織やテスト組織では(実際の組織の一部でも同様の可能性があります)、このクエリの最初のページ(複数ページの場合は最初の数ページ)は、従業員ではないシステムアカウントや連携アカウントが大半を占めることがよくあります。例:Automated Process、Bot User、Insights Integration、*.ext の連携ユーザー、ESW_* / *Site Guest User のゲストユーザー、DigitalAgent.* のエージェントユーザー。ユーザーにページを表示する際は、これらが従業員ではない可能性の高いアカウントであることを明記してください(一覧から黙って除外しないでください。ユーザーがそれらのアカウントへの割り当てを希望する場合もありますが、ユーザー自身が推測しなくて済むよう、どの行がシステムアカウントに見えるかを伝えてください)。表示した一括分についてユーザーから「従業員のユーザーではないのでスキップ」と言われた場合は、いずれにも割り当てずに次のページに進んでください。
ユーザーが対象者を確認したら、ダイアログで設定する 2 つの権限セットの Id を検索します(組織ごとに固定ですが、ハードコードせず毎回新しくクエリしてください。3 つ目の「ログイン」権限セットは、下記のログインの前提条件で解決します)。
mcp__headless-360__dispatch_readonly(
method: "GET",
url: "/services/data/v67.0/query",
queryParams: { "q": "SELECT Id, Name FROM PermissionSet WHERE Name IN ('TeamsForITSrvcsUser','MicrosoftGraphAccess')" }
)
その後、PermissionSetAssignment を使って、確認済みの各ユーザーに両方の権限セットを割り当てます(ユーザーと権限セットの組み合わせごとに 1 レコードが必要です。ここでは一括割り当てのエンドポイントが公開されていないため、必要な回数だけ呼び出してください)。
mcp__headless-360__dispatch(
method: "POST",
url: "/services/data/v67.0/sobjects/PermissionSetAssignment",
body: { "AssigneeId": "<user id>", "PermissionSetId": "<permission set id>" }
)
PermissionSetAssignment を AssigneeId で再クエリして確認するか、割り当て呼び出しの 201 を信頼し、SELECT ... FROM PermissionSetAssignment WHERE AssigneeId = '<user id>' AND PermissionSetId = '<permset id>' で読み戻してください。
ログインの前提条件 — ログイン権限セットをプロビジョニングする(検証済み)
TeamsForITSrvcsUser と MicrosoftGraphAccess だけでは、IT Desk の画面はプロビジョニングされますが、Teams で IT Desk アプリを開いた担当者は、ログインページで 「server not reachable」 に遭遇します。検証済みの阻害要因は API Enabled です。両方のダイアログ権限セットで PermissionsApiEnabled = false となっており(実環境で検証済み)、埋め込みアプリからの Connect 呼び出しが 403 になります。担当者に PermissionsApiEnabled = true の権限セットを割り当てると、ログインできるようになります。この権限セットは組織全体で一度だけ作成し、IT Service と共有します。存在確認または作成を行ってから割り当てます。
- すでに存在する場合は再利用します(API Enabled の権限セット。一般的には
Teams_Employee_ApiAccess):SELECT Id, Name, PermissionsApiEnabled FROM PermissionSet WHERE Name = 'Teams_Employee_ApiAccess'。PermissionsApiEnabled = trueで見つかった場合は、そのIdを取得して手順 3 に進みます。 - それ以外の場合は一度だけ作成します(
PermissionsApiEnabledは作成可能であることを検証済みです):
返されたmcp__headless-360__dispatch( method: "POST", url: "/services/data/v67.0/sobjects/PermissionSet", body: { "Name": "Teams_Employee_ApiAccess", "Label": "Teams Employee API Access", "PermissionsApiEnabled": true } )Idを保存します。組織全体で共有されるため、後続の実行や IT Service スキルですでに作成済みの場合は、再作成しないでください。手順 1 のクエリで確認できます。 - 確認済みの各担当者に、2 つのダイアログ権限セットと合わせて割り当てます:
mcp__headless-360__dispatch( method: "POST", url: "/services/data/v67.0/sobjects/PermissionSetAssignment", body: { "AssigneeId": "<user id>", "PermissionSetId": "<login permset Id>" } )
割り当て後、ユーザーにTeams アプリを完全に終了してから再度開いてもらいます(OAuth 認証はクライアント側にキャッシュされます)。また、CORS Allowed Origins に https://teams.cloud.microsoft と https://cdn.scs.static.lightning.force.com の両方が含まれていることも確認します(SELECT UrlPattern FROM CorsWhitelistEntry)。
Teams のログインを支える ServiceCloudMSTeamsEca External Client App は、Go ページのトグルによって自動インストールされるため、設定は不要です。Teams_Employee_ApiAccess は API Enabled を付与するもので、ECA とは無関係です。SetupEntityAccess の行を追加したり、ECA の OAuth ポリシーを変更したりしないでください。
API Enabled 権限セットを割り当てた後、新しいセッションでもログインに失敗する場合、残る原因の候補は、プロファイルの 「Allow OAuth for employees」 チェックボックスです(Setup UI からのみ変更可能で、API 経由の書き込み方法はありません)。完全な合否診断手順については、service-itsm-teams-itservice-configure のログインの前提条件を参照してください。
手順 4 — Swarming のコラボレーションツールとして Teams を設定する(委任)
この 4 つ目のチェック項目を実施するには、先に service-cloud-swarming Go 機能を有効にする必要があります。
この機能をここで直接有効にしないでください。機能有効化のロジックを重複させず、専用の service-itsm-swarming-configure スキルを呼び出してください。
Invoke the service-itsm-swarming-configure skill.
このスキルは service-cloud-swarming を有効にするとともに、PATCH /services/data/v67.0/setup/org/values/SWARM_COLLABORATION_TOOL を介して SWARM_COLLABORATION_TOOL に "Teams" を書き込みます。これにより、このチェック項目は最初から最後まで完全に自動化され、手動で「Go to Feature Page」をクリックする必要はなくなります。
注意点
| 問題 | 詳細 |
|---|---|
| 最初に Teams Salesforce Go ページ機能を有効にする必要があります | OrgHasITSMFulfillerTeams は ITSMTeamsEnabled を直接制御したり、依存したりしませんが、Go ページのチェックリストは service-cloud-itsm-teams-integration が有効になった後にのみ表示されます。まず service-itsm-teams-configure を実行してください。 |
OrgHasITSMFulfillerTeams では ITSMTeamsEnabled は有効になりません | これらは別々の設定です。この設定を有効にしても、Teams Salesforce Go ページの切り替え設定が有効になるわけではなく、その逆も同様です。 |
「Set Teams as Collaboration Tool for Swarming」では、最初に service-cloud-swarming を有効にする必要があります | この機能を直接有効にするのではなく、service-itsm-swarming-configure に委任してください。このスキルは機能を有効にするとともに、SWARM_COLLABORATION_TOOL に "Teams" を設定します。つまり、基本機能を有効にするだけでなく、チェックリスト項目全体を API 経由で実行できます。 |
| 権限セット/PSL | TeamsForITSrvcsUser、MicrosoftGraphAccess(権限セット)、および PSL TeamsForITSrvcsPsl は自動プロビジョニングされ、このセッションでは機能を有効にした直後に Active(ライセンス 10 件)であることを確認しました。TeamsITSrvcsAddOn と IncidentManagementAddOn のライセンスがあれば、PSL/権限セットを手動で作成する必要はありません。 |
| Manage-User-Access 権限セットではログインできません — API 有効の権限セットを割り当ててください | 確認済み:TeamsForITSrvcsUser と MicrosoftGraphAccess を割り当てた後も、IT Desk エージェントは Teams へのログイン時に 「server not reachable」 というエラーになりました。両方のダイアログ用権限セットでは PermissionsApiEnabled = false になっているため、埋め込みアプリの Connect 呼び出しが 403 になります。解決策は、PermissionsApiEnabled = true の API 有効 権限セットです。一般的には Teams_Employee_ApiAccess が使われます。これは IT Service と共有する 組織全体のカスタム 権限セットなので、一度だけ作成 してから割り当ててください。テスト組織にはすでに存在する場合がありますが、新規の顧客組織にはありません。そのため、存在を確認してから、なければ作成してください。(ServiceCloudMSTeamsEca ECA は Go ページの切り替え時に自動インストールされ、設定は不要です。ログインを制御するものではなく、Teams_Employee_ApiAccess とは無関係です。)ステップ 3 → ログインの前提条件 を参照してください。 |
| バージョンプレフィックスが必要です | headless-360 の dispatch/dispatch_readonly は API バージョンを解決しません。必ず /services/data/vXX.0/... のプレフィックス全体を指定してください。 |
関連スキル
| スキル | 代わりに/併用して使用する場合 |
|---|---|
service-itsm-teams-configure | Teams Salesforce Go ページの基本切り替え、Azure/Entra アプリの登録、Named Credential の設定、Teams 拡張機能の登録を有効にする場合 — このスキルの前提条件です |
service-itsm-teams-itservice-configure | チェックリストの IT Service/従業員側の項目(Turn on IT Service、Install IT Service app、Manage User Access、Select a Digital Experience Site) |
service-itsm-swarming-configure | 「Set Teams as Collaboration Tool for Swarming」のために、Go 機能 service-cloud-swarming を有効にする場合 — このスキルはロジックを重複させず、こちらに委任します |
service-itsm-channels-coordinate | Teams、Slack、Swarming、Notifications、Portal を横断するトップレベルメニュー |