Salesforce

将 ElevenLabs 智能体与 Salesforce CRM 连接

概述

将 ElevenLabs AI 智能体与 Salesforce CRM 连接,以访问客户数据、管理潜在客户并创建商机。此集成让智能体可以检索现有客户记录、创建新的潜在客户和联系人,并在对话期间查询 Salesforce 对象。

功能

功能支持情况
零保留模式(ZRM)不支持
触发器中的附件不支持——不会将传入案例评论和电子邮件中的附件转发给智能体
工具中的附件不支持——工具仅处理文本

设置

此集成使用 Salesforce OAuth 2.0 Client Credentials 进行身份验证。你需要在 Salesforce 中创建一个外部客户端应用。

1

创建外部客户端应用

  1. 以管理员身份登录 Salesforce 组织
  2. 前往 Setup > External Client App Manager
  3. 点击 New External Client App
  4. 填写 External Client App Name(例如 ElevenLabs Agents)、API Name 和 Contact Email
  5. 在 API (Enable OAuth Settings) 下:
    • 勾选 Enable OAuth 和 Enable Client Credentials Flow
    • Callback URL:https://api.elevenlabs.io/oauth/callback
    • OAuth Start URL:https://api.elevenlabs.io/oauth/start
    • Selected OAuth Scopes:添加以下范围:
      • Full access (full)
      • Perform requests on your behalf at any time (refresh_token, offline_access)
      • Manage user data via api
  6. 点击 Create
  7. 在应用页面中打开 Settings 标签页,前往 OAuth Settings,然后点击 Consumer Key and Secret
  8. 复制 Consumer Key 和 Consumer Secret——身份验证时需要用到它们
2

配置 OAuth Client Credentials 流程

Client Credentials Flow 建议用于无需用户交互的服务器到服务器集成。请确保 Salesforce 管理员已启用此流程。

  1. 在外部客户端应用中点击 Edit
  2. 勾选 Enable Client Credentials Flow——将显示 Run As 字段
  3. 将 Run As 设置为管理员用户或专用服务账户——这决定所有 API 调用的权限
  4. 将 Permitted Users 设置为 Admin approved users are pre-authorized
  5. 点击 Save

Run As 用户决定所有 API 调用的权限。请选择拥有 System Administrator 配置文件,或拥有 API 访问权限及智能体所需对象(Contact、Lead、Account 等)访问权限的自定义配置文件的用户。必须在用户记录中勾选 API Enabled 权限。

3

查找 Salesforce 域名

API 调用需要 Salesforce 域名。

方法 1:查看当前 URL

登录 Salesforce 后,查看浏览器地址栏:

  • Lightning Experience:https://acme.lightning.force.com/
  • My Domain:https://acme.my.salesforce.com/

方法 2:Setup > Company Information

前往 Setup > Company Information,查找 My Domain URL 或组织信息。

方法 3:Setup > Domain Management

前往 Setup > Domain Management > My Domain。域名会显示在页面顶部。

常见域名格式:

  • https://acme.my.salesforce.com(My Domain)
  • https://acme.lightning.force.com(Lightning)
  • https://acme.develop.my.salesforce.com(Sandbox)
请使用完整域名,不要在末尾添加斜杠。
4

在 ElevenLabs 中连接

在 ElevenLabs 集成设置中,输入 Salesforce 实例主机名(例如 acme.my.salesforce.com)、Client ID(Consumer Key)和 Client Secret(Consumer Secret)。

演示视频

此演示使用旧版 webhook 工具。如果你使用原生 Salesforce 集成,工具会自动配置,无需手动设置 webhook。

Salesforce 集成演示

工作原理

1

初始客户咨询

智能体会收集客户信息并提出相关问题,以了解其业务需求和当前面临的挑战。

2

客户数据查找

智能体使用 salesforce_search_records 检查现有记录,以查找联系人、账户或潜在客户。它会通过 salesforce_get_record 获取完整详情,并利用这些信息个性化对话。

3

潜在客户资格评估

如果是新客户,智能体会收集联系信息、评估业务需求,并确定适当的销售流程或路由方式。

4

创建记录

智能体使用 salesforce_create_record 创建相应记录(潜在客户、联系人或商机),向客户确认已创建,并说明后续步骤。

可使用 Workplace Auth Connections 管理工具授权,它会自动处理令牌刷新。工具返回易读的名称和描述,而非技术 ID,从而提升对话质量。

工具配置

提供 3 个 webhook 工具:salesforce_search_records、salesforce_get_record 和 salesforce_create_record。请使用 Workplace Auth Connection 为每个工具配置授权。

授权 - Workplace OAuth2 连接

1

前往 Workplace Auth Connections

在 ElevenLabs 控制台中,前往 Agents > Workplace Auth Connections,然后点击 Add Auth。

2

配置 Salesforce 连接

为 Salesforce 集成填写以下字段:

Connection Name:Salesforce CRM

Client ID

  • 外部客户端应用中的 Consumer Key
  • 示例:3MVG9JJlvRU3L4pRiOu8pQt5xXB4xGZGm0yW...

Client Secret

  • 外部客户端应用中的 Consumer Secret
  • 示例:1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF...

Token URL

  • Salesforce 域名的 OAuth 令牌端点
  • 格式:https://{domain}.my.salesforce.com/services/oauth2/token
  • 示例:https://acme.my.salesforce.com/services/oauth2/token

Scopes(可选)

  • 用于 Salesforce API 访问的 OAuth 范围
  • 建议:full, api, refresh_token
  • 留空以使用外部客户端应用中的默认范围

Extra Parameters (JSON)

  • 特定于当前设置的其他 OAuth 参数
  • Client Credentials 流程示例:
{
"grant_type": "client_credentials"
}
4

创建身份验证连接

点击 Create auth connection 添加配置。

5

在工具配置中使用

连接成功后,保存该连接,并在 webhook 工具配置的 Authentication 部分引用它。

Workplace Auth Connections 会自动处理令牌刷新,因此无需手动管理令牌。

Webhook 工具配置

在每个工具的 Authentication 部分添加 Workplace Auth Connection(OAuth2)。使用下方标签页查看各工具的配置。

名称: salesforce_search_records 说明: 使用 SOQL 查询搜索 Salesforce 中的现有记录。始终返回包含名称在内的易读信息,而不只是 ID。 方法: GET URL: https://acme.my.salesforce.com/services/data/v58.0/query/?q={soql_query}

请求头:

  • Content-Type: application/json

查询参数:

  • q: SOQL 查询字符串(例如 “SELECT Id, Name, Email FROM Contact WHERE Email = ‘example@email.com’”)

工具 JSON:

{
"type": "webhook",
"name": "salesforce_search_records",
"description": "Searches for existing records in Salesforce using SOQL queries. Always returns human-readable names and details, not just IDs.",
"api_schema": {
"url": "https://acme.my.salesforce.com/services/data/v58.0/query/",
"method": "GET",
"path_params_schema": [],
"query_params_schema": [
{
"id": "q",
"type": "string",
"description": "SOQL query string to search for records. Always include Name fields and other human-readable information. Example: SELECT Id, Name, Email, Phone, Company FROM Contact WHERE Email = 'customer@example.com'. For Opportunities, include: SELECT Id, Name, StageName, Amount, CloseDate, Account.Name FROM Opportunity",
"dynamic_variable": "",
"constant_value": "",
"required": true,
"value_type": "llm_prompt"
}
],
"request_body_schema": null,
"request_headers": [
{
"type": "value",
"name": "Content-Type",
"value": "application/json"
}
]
},
"response_timeout_secs": 30,
"dynamic_variables": {
"dynamic_variable_placeholders": {}
}
}

常用 Salesforce 对象

对象用途常用字段
Lead尚未完成资格评估的潜在客户FirstName, LastName, Email, Phone, Company, Industry, Status
Contact与账户关联的合格个人FirstName, LastName, Email, Phone, AccountId, Title
Account组织或公司Name, Type, Industry, Phone, BillingAddress
Opportunity正在推进的销售交易Name, StageName, Amount, CloseDate, AccountId
Case客户服务请求Subject, Description, Status, Priority, ContactId

常用 SOQL 查询

自定义智能体系统提示词时,可将以下 SOQL 查询作为起点。所有查询都会返回易读信息,而非技术 ID:

按电子邮件搜索联系人

SELECT Id, Name, Email, Phone, Title, Account.Name, Account.Type FROM Contact WHERE Email = 'customer@example.com'

按电子邮件或电话号码搜索潜在客户

SELECT Id, Name, Email, Phone, Company, Industry, Status, LeadSource, Title FROM Lead WHERE Email = 'customer@example.com' OR Phone = '+1234567890'

按名称搜索账户

SELECT Id, Name, Type, Industry, Phone, BillingCity, BillingState, Website FROM Account WHERE Name LIKE '%Company Name%'

搜索近期商机

SELECT Id, Name, StageName, Amount, CloseDate, Account.Name, Account.Type, Owner.Name, Description FROM Opportunity WHERE CreatedDate = THIS_MONTH

按账户搜索商机

SELECT Id, Name, StageName, Amount, CloseDate, Probability, NextStep, Owner.Name FROM Opportunity WHERE Account.Name LIKE '%Company Name%'

集成测试

设置外部客户端应用并连接集成后,请在部署到生产环境前进行测试:

  1. 搜索功能:让智能体搜索现有联系人。
  2. 创建记录:让智能体创建新的潜在客户或联系人。
  3. 数据检索:确认智能体可以获取详细的客户信息。

案例评论触发器:Email-to-Case 的电子邮件回复

如果你已启用 Salesforce Case Comment 触发器(智能体自动回复 Service Cloud Cases),对于至少包含一封传入电子邮件的案例,回复会作为真实的同一会话电子邮件发送给客户,而不只是内部案例评论。这取决于案例是否有传入电子邮件,而非案例的 Origin 选项列表值。因此,即使组织使用了 “Email - Returns” 这类自定义 Origin 值,而非字面值 “Email”,也能正常工作。没有传入电子邮件的案例仍会按原样发布为公开案例评论。客户原始电子邮件中抄送的所有地址也会自动抄送到回复中,这与人工客服点击“回复全部”的行为一致——但组织的 Email-to-Case 路由地址除外。这些地址会特意从抄送中排除,以免回复被 Email-to-Case 再次接收,并触发智能体处理自己的消息。

发送电子邮件回复需要进行一些额外设置,而不仅仅是案例评论所需的设置:

  • Run As 用户的 Profile 或 Permission Set 必须启用 Send Email 系统权限(Setup > Users > Profiles,位于 System Permissions 下),此外还需要集成已要求的 API Enabled 权限。
  • 组织的 Email Deliverability 设置(Setup > Email > Deliverability)必须允许外发电子邮件——Sandbox 默认使用受限设置,会静默阻止外发电子邮件。
  • 如果希望回复从支持别名而非 Run As 用户的邮箱发送,请将触发器上的 Org-Wide Email Address Id 字段设为 Organization-Wide Email Address 的 Id(Setup > Organization-Wide Addresses > 点击该地址 > 从 URL 中复制 Id)。留空则从 Run As 用户自己的地址发送。
  • 将触发器上的 Email-to-Case Routing Address(es) 字段设置为组织的 Email-to-Case 地址(如果有多个,请用逗号分隔,Setup > Email-to-Case)。否则,集成会尝试从客户电子邮件(其 To 地址)猜测路由地址;如果路由地址仅被抄送而非主要收件人,则无法识别。在这种情况下将其抄送到回复中,会再次触发智能体处理自己的消息。

如果客户的组织未完成这些配置,电子邮件发送失败时会回退为发布公开案例评论,因此回复不会被静默丢弃——但在完成上述设置前,客户不会通过电子邮件收到回复。

安全注意事项

  • 所有 API 调用均使用 HTTPS 端点。
  • 确保在 Salesforce 中正确配置字段级安全性。
  • Run As 用户的权限决定集成可访问的数据范围——请合理限制权限。
  • 定期审核 API 访问和使用情况。

实用链接