service-itsm-teams-itdesk-configure
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSet Up Salesforce IT Desk (Microsoft Teams)
设置Salesforce IT Desk(Microsoft Teams)
Complete the "Set Up Salesforce IT Desk" checklist group on the Teams ITSM Go page
('s feature page) — the fulfiller/agent side of Teams
ITSM integration, for IT agents to swarm on and resolve tickets from Teams. Every operation
dispatches through headless-360.
service-cloud-itsm-teams-integration完成Teams ITSM Go页面(的功能页面)上的**「设置Salesforce IT Desk」清单组——这是Teams ITSM集成的处理人员/代理端,供IT代理在Teams上协作处理并解决工单。所有操作均通过headless-360**调度。
service-cloud-itsm-teams-integrationScope
范围
- In scope: Turning on the preference; giving the user the exact Teams marketplace link + help doc for the IT Desk app install; assigning
OrgHasITSMFulfillerTeams/TeamsForITSrvcsUserpermission sets to confirmed users; delegating "Set Teams as Collaboration Tool for Swarming" toMicrosoftGraphAccess.service-itsm-swarming-configure - Out of scope: The base Teams Salesforce Go page toggle (), Azure/Entra app registration, Named Credential population, and Teams extension/preferred-site registration — use
ITSMTeamsEnabled(a prerequisite for this skill). The IT Service/employee half of the checklist — useservice-itsm-teams-configure. Enabling theservice-itsm-teams-itservice-configureGo feature itself — delegate toservice-cloud-swarming.service-itsm-swarming-configure
Prerequisite: run first (or alongside) — this skill assumes
the Go feature is already enabled.
service-itsm-teams-configureservice-cloud-itsm-teams-integrationExecute one step at a time. These steps make real, state-changing API calls. Run a single operation, show its result, confirm it succeeded, then proceed — do not batch multiple setup calls into one parallel block.
- 包含内容:开启偏好设置;为用户提供IT Desk应用安装对应的Teams市场链接+帮助文档;为确认的用户分配
OrgHasITSMFulfillerTeams/TeamsForITSrvcsUser权限集;将「设置Teams为Swarming协作工具」任务委托给MicrosoftGraphAccess。service-itsm-swarming-configure - 排除内容:基础Teams Salesforce Go页面切换()、Azure/Entra应用注册、命名凭证填充以及Teams扩展/首选站点注册——请使用
ITSMTeamsEnabled(本技能的前置条件)。清单中的IT服务/员工端部分——请使用service-itsm-teams-configure。启用service-itsm-teams-itservice-configureGo功能本身——委托给service-cloud-swarming。service-itsm-swarming-configure
前置条件:先运行(或同时运行)——本技能假设 Go功能已启用。
service-itsm-teams-configureservice-cloud-itsm-teams-integration请分步执行。这些步骤会进行真实的、改变系统状态的API调用。执行单个操作,展示结果,确认成功后再继续——请勿将多个设置调用批量放入一个并行块中。
Workflow
工作流程
Step 1 — Turn on Salesforce IT Desk
步骤1 — 开启Salesforce IT Desk
This is a straight org-preference toggle (unlike , this one supports direct
) — enable it yourself via API, do not ask the user to click the Setup toggle:
ITSMTeamsEnabledPATCHtext
mcp__headless-360__dispatch(
method: "PATCH",
url: "/services/data/v67.0/setup/org/preferences/OrgHasITSMFulfillerTeams",
body: { "desiredState": true }
)Expect . Tell the user it's enabled — do not ask them to flip
the toggle themselves.
200 {"isPreferenceEnabled": true}这是一个直接的组织偏好设置开关(与不同,此开关支持直接)——请通过API自行启用,无需让用户点击设置开关:
ITSMTeamsEnabledPATCHtext
mcp__headless-360__dispatch(
method: "PATCH",
url: "/services/data/v67.0/setup/org/preferences/OrgHasITSMFulfillerTeams",
body: { "desiredState": true }
)预期返回。告知用户已启用——无需让用户自行切换开关。
200 {"isPreferenceEnabled": true}Step 2 — Install Salesforce IT Desk App on Teams (user's responsibility)
步骤2 — 在Teams上安装Salesforce IT Desk应用(用户负责)
There is no Salesforce or Microsoft API this skill can call to install a Teams app into a
tenant's app catalog — this always requires a human clicking "Add" in the Microsoft Teams admin
center / AppSource, signed in with sufficient tenant permissions. Give the user the exact
marketplace link and help doc; do not attempt to automate this step.
- Marketplace (verified live from the Go page's "Go to Microsoft Marketplace" button):
text
https://marketplace.microsoft.com/en-us/product/teams-app/WA200009869?tab=Overview - Help doc:
https://help.salesforce.com/s/articleView?id=service.it_srvce_msteams_cnfig_fulfilerhub_app.htm&type=5
Print both together so the user has a self-service reference alongside the install link. Also tell
the user that the Azure/Microsoft account email the fulfiller signs into Teams with must match
that Salesforce user's email / — SSO resolves the Microsoft UPN to the Salesforce
, so a mismatch causes a silent login failure.
UsernameUsernameThen HALT and wait for the user to confirm the app is installed (they reply "installed").
This is a human-only action; do not proceed to Step 3's user-access assignment as if it were done,
and do not fabricate the confirmation — wait for the real reply.
本技能无法调用任何Salesforce或Microsoft API将Teams应用安装到租户的应用目录中——这始终需要拥有足够租户权限的人员在Microsoft Teams管理中心/AppSource中点击「添加」。为用户提供准确的市场链接和帮助文档;请勿尝试自动化此步骤。
- 市场链接(从Go页面的「前往Microsoft市场」按钮验证为有效):
text
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用户的邮箱/匹配——SSO会将Microsoft UPN解析为Salesforce,不匹配会导致静默登录失败。
UsernameUsername然后暂停并等待用户确认应用已安装(用户回复**「已安装」**)。这是仅能由人工完成的操作;请勿假设操作已完成而直接进入步骤3的用户访问分配环节,也请勿伪造确认信息——等待真实回复。
Step 3 — Manage User Access
步骤3 — 管理用户访问
"Manage User Access" ("Manage" button on the Go page) assigns two permission sets — verified
live from the "Manage Microsoft Teams for Employee Service User Access" dialog:
- (label "Microsoft Teams for IT Services", backed by PSL
TeamsForITSrvcsUser)TeamsForITSrvcsPsl - (label "MicrosoftGraphAccess") — assigned alongside it in the same dialog.
MicrosoftGraphAccess
Do not just assign every active user. Ask the user which specific user(s) should get access.
If they want to see the list of users first (rather than naming them), page it — show at most
10 users per page, then ask "want to see more?" before showing the next page, since orgs can
have hundreds or thousands of users:
text
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>" }
)Verified gotcha: in scratch/test orgs (and possibly some real orgs), the first page(s) of
this query are often dominated by non-employee system/integration accounts — e.g. , , , integration users, / guest users, and agent users. When presenting a page to the user, flag
these as likely-not-employee accounts (don't silently filter them out of the list — the user may
still want one assigned — but call out which rows look like system accounts so the user doesn't
have to guess). If the user says a listed batch is "not employee users, skip," move on to the
next page rather than assigning any of them.
Automated ProcessBot UserInsights Integration*.extESW_**Site Guest UserDigitalAgent.*Once the user confirms specific user(s), look up each permission set's (they are stable per
org but don't hardcode them — query fresh):
Idtext
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')" }
)Then assign both permission sets to each confirmed user via (one record
per user/permset pair — batch with as many calls as needed, there is no bulk-assign endpoint
exposed here):
PermissionSetAssignmenttext
mcp__headless-360__dispatch(
method: "POST",
url: "/services/data/v67.0/sobjects/PermissionSetAssignment",
body: { "AssigneeId": "<user id>", "PermissionSetId": "<permission set id>" }
)Verify by re-querying for that , or simply trust the
from the assignment call plus a readback.
PermissionSetAssignmentAssigneeId201SELECT ... FROM PermissionSetAssignment WHERE AssigneeId = '<user id>' AND PermissionSetId = '<permset id>'「管理用户访问」(Go页面上的「管理」按钮)会分配两个权限集——已从「管理Microsoft Teams员工服务用户访问」对话框中验证:
- (标签**「Microsoft Teams for IT Services」**,基于PSL
TeamsForITSrvcsUser)TeamsForITSrvcsPsl - (标签**「MicrosoftGraphAccess」**)——在同一对话框中一并分配。
MicrosoftGraphAccess
请勿为所有活跃用户分配权限。询问用户应为哪些特定用户授予访问权限。如果用户希望先查看用户列表(而非直接指定),请分页展示——每页最多显示10个用户,然后询问「是否查看更多?」再展示下一页,因为组织可能拥有数百或数千名用户:
text
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 ProcessBot UserInsights Integration*.extESW_**Site Guest UserDigitalAgent.*用户确认特定用户后,查询每个权限集的(每个组织中的是稳定的,但请勿硬编码——请实时查询):
IdIdtext
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')" }
)然后通过为每个确认的用户分配两个权限集(每个用户/权限集对应一条记录——根据需要批量调用,此处无批量分配端点):
PermissionSetAssignmenttext
mcp__headless-360__dispatch(
method: "POST",
url: "/services/data/v67.0/sobjects/PermissionSetAssignment",
body: { "AssigneeId": "<user id>", "PermissionSetId": "<permission set id>" }
)可通过重新查询该对应的来验证,或直接信任分配调用返回的状态码,再加上查询的结果。
AssigneeIdPermissionSetAssignment201SELECT ... FROM PermissionSetAssignment WHERE AssigneeId = '<user id>' AND PermissionSetId = '<permset id>'Login prerequisite — the two Manage-User-Access permsets are NOT enough to sign in (verified)
登录前置条件——两个管理用户访问的权限集不足以完成登录(已验证)
Assigning + provisions the IT Desk surface, but a
fulfiller who opens the IT Desk app in Teams can still hit "server not reachable" on the login
page. The verified root cause is the External Client App OAuth
authorize being denied — for the user shows
,
(). Neither nor clears
this, because:
TeamsForITSrvcsUserMicrosoftGraphAccessServiceCloudMSTeamsEcaLoginHistoryApplication = ServiceCloudMSTeamsEcaStatus = Failed: Not approved for accessLoginType = Remote Access 2.0TeamsForITSrvcsUserMicrosoftGraphAccess- They are not pre-authorized to the ECA. The ECA's policy is (verified:
AdminApprovedPreAuthorized— Tooling), so only users holding a permission set explicitly pre-authorized on the ECA can complete OAuth. Check which permset that is:SELECT PermittedUsersPolicyType FROM ExtlClntAppOauthPlcyCnfg WHERE ExternalClientApplicationId = '<ecaId>'— in the verified org the sole authorized set wasSELECT ParentId, Parent.Name FROM SetupEntityAccess WHERE SetupEntityId = '<ecaId>', and the IT Desk agent did not hold it.Teams_Employee_ApiAccess - They do not grant API Enabled. Both read ; the embedded app's Connect calls need the API Enabled system permission or they 403.
PermissionsApiEnabled = false
Fix (verified to resolve the login): also assign the fulfiller the
permission set — it is simultaneously the ECA-pre-authorized set and carries
, so it clears both blockers in one assignment:
Teams_Employee_ApiAccessPermissionsApiEnabled = truetext
mcp__headless-360__dispatch(
method: "POST",
url: "/services/data/v67.0/sobjects/PermissionSetAssignment",
body: { "AssigneeId": "<user id>", "PermissionSetId": "<Teams_Employee_ApiAccess Id>" }
)After assigning, have the user fully close and reopen the Teams app (the ECA authorize is cached
client-side). Also confirm CORS Allowed Origins contains both
and (). If
login still fails in a fresh session after the ECA-authorized permset is assigned, the remaining
suspect is the "Allow OAuth for employees" profile checkbox (Setup-UI-only — no API write path).
See 's Login prerequisites and its Troubleshooting
section D (ECA self-authorization) for the full pass/fail diagnostic chain — the same ECA gates both
the fulfiller (IT Desk) and employee (IT Service) apps.
https://teams.cloud.microsofthttps://cdn.scs.static.lightning.force.comSELECT UrlPattern FROM CorsWhitelistEntryservice-itsm-teams-itservice-configure分配 + 后,会配置IT Desk界面,但处理人员在Teams中打开IT Desk应用时仍可能在登录页面遇到**「服务器无法访问」问题。已验证的根本原因是外部客户端应用OAuth授权被拒绝**——用户的显示,()。和都无法解决此问题,原因如下:
TeamsForITSrvcsUserMicrosoftGraphAccessServiceCloudMSTeamsEcaLoginHistoryApplication = ServiceCloudMSTeamsEcaStatus = Failed: Not approved for accessLoginType = Remote Access 2.0TeamsForITSrvcsUserMicrosoftGraphAccess- 它们未被预授权给ECA。ECA的策略为(已验证:
AdminApprovedPreAuthorized——工具查询),因此只有持有ECA上明确预授权的权限集的用户才能完成OAuth。请检查该权限集:SELECT PermittedUsersPolicyType FROM ExtlClntAppOauthPlcyCnfg WHERE ExternalClientApplicationId = '<ecaId>'——在已验证的组织中,唯一授权的权限集是**SELECT ParentId, Parent.Name FROM SetupEntityAccess WHERE SetupEntityId = '<ecaId>'**,而IT Desk代理并未持有该权限集。Teams_Employee_ApiAccess - 它们未授予API启用权限。两者的;嵌入应用的Connect调用需要API启用系统权限,否则会返回403错误。
PermissionsApiEnabled = false
修复方案(已验证可解决登录问题):同时为处理人员分配****权限集——它既是ECA预授权的权限集,又包含,因此可一次性解决两个障碍:
Teams_Employee_ApiAccessPermissionsApiEnabled = truetext
mcp__headless-360__dispatch(
method: "POST",
url: "/services/data/v67.0/sobjects/PermissionSetAssignment",
body: { "AssigneeId": "<user id>", "PermissionSetId": "<Teams_Employee_ApiAccess Id>" }
)分配后,让用户完全关闭并重新打开Teams应用(ECA授权会在客户端缓存)。同时确认CORS允许的源包含和()。如果在分配ECA授权的权限集后,新会话中登录仍失败,则剩余可疑点是**「允许员工使用OAuth」**配置文件复选框(仅可通过设置UI操作——无API写入路径)。请查看的登录前置条件及其故障排除部分D(ECA自授权)获取完整的诊断流程——同一ECA同时限制处理人员(IT Desk)和员工(IT Service)应用。
https://teams.cloud.microsofthttps://cdn.scs.static.lightning.force.comSELECT UrlPattern FROM CorsWhitelistEntryservice-itsm-teams-itservice-configureStep 4 — Set Teams as Collaboration Tool for Swarming (delegate)
步骤4 — 设置Teams为Swarming协作工具(委托)
This 4th checklist item requires the Go feature to be enabled first.
Do not enable that feature inline here — invoke the dedicated
skill instead of duplicating feature-enablement logic:
service-cloud-swarmingservice-itsm-swarming-configuretext
Invoke the service-itsm-swarming-configure skill.That skill enables and writes to
via — this checklist item
is now fully automated end-to-end, no manual "Go to Feature Page" click required.
service-cloud-swarmingSWARM_COLLABORATION_TOOL"Teams"PATCH /services/data/v67.0/setup/org/values/SWARM_COLLABORATION_TOOL第4项清单需要先启用 Go功能。请勿在此处内联启用该功能——请调用专用的技能,而非重复实现功能启用逻辑:
service-cloud-swarmingservice-itsm-swarming-configuretext
Invoke the service-itsm-swarming-configure skill.该技能会启用,并通过将设置为——此清单项现已完全自动化,无需手动点击「前往功能页面」。
service-cloud-swarmingPATCH /services/data/v67.0/setup/org/values/SWARM_COLLABORATION_TOOLSWARM_COLLABORATION_TOOL"Teams"Gotchas
注意事项
| Issue | Detail |
|---|---|
| Requires the Teams Salesforce Go page feature first | |
| These are separate bits — enabling this preference does not itself unblock the Teams Salesforce Go page toggle preference, and vice versa. |
"Set Teams as Collaboration Tool for Swarming" needs | Delegate to |
| Permission sets / PSLs | |
Manage-User-Access permsets don't cover login — assign | Verified: after assigning |
| Version prefix required | headless-360 |
| 问题 | 详情 |
|---|---|
| 需先启用Teams Salesforce Go页面功能 | |
| 这是两个独立的设置——启用此偏好设置不会解除Teams Salesforce Go页面切换偏好设置的限制,反之亦然。 |
「设置Teams为Swarming协作工具」需先启用 | 请委托给 |
| 权限集/PSLs | |
管理用户访问的权限集无法满足登录需求——还需分配 | 已验证:分配 |
| 需指定版本前缀 | headless-360的 |
Related Skills
相关技能
| Skill | When to use instead / alongside |
|---|---|
| Enabling the base Teams Salesforce Go page toggle, Azure/Entra app registration, Named Credential population, and Teams extension registration — a prerequisite for this skill |
| The IT Service/employee half of the checklist (Turn on IT Service, Install IT Service app, Manage User Access, Select a Digital Experience Site) |
| Enabling the |
| Top-level menu across Teams, Slack, Swarming, Notifications, Portal |
| 技能 | 替代/配合使用场景 |
|---|---|
| 启用基础Teams Salesforce Go页面切换、Azure/Entra应用注册、命名凭证填充以及Teams扩展注册——本技能的前置条件 |
| 清单中的IT服务/员工端部分(开启IT服务、安装IT服务应用、管理用户访问、选择数字体验站点) |
| 为「设置Teams为Swarming协作工具」启用 |
| Teams、Slack、Swarming、通知、门户的顶级菜单 |