跳转到内容

Salesforce 集成

让你的智能体通过 Salesforce 管理客户关系、销售流程和数据。你可以创建和更新记录、管理潜在客户和商机、执行 SOQL 查询,并借助 AI 驱动的自动化简化 CRM 工作流。

在使用 Salesforce 集成之前,请确保你已具备:

  • 一个拥有有效订阅的 CrewAI AMP 账户
  • 一个具备相应权限的 Salesforce 账户
  • 通过 集成页面 连接了你的 Salesforce 账户
  1. 访问 CrewAI AMP Integrations
  2. 在 Authentication Integrations 部分找到 Salesforce
  3. 点击 Connect

接下来会发生什么,取决于你组织中的 Salesforce 管理员是否已经安装了 CrewAI 包:

  • 包已安装: 你会直接进入 Salesforce OAuth 授权页面,批准后即可完成连接。
  • 包尚未安装: 你会看到 Install CrewAI in Salesforce 页面。请按照下面的一次性安装步骤操作,然后返回 CrewAI AMP 再次点击 Connect
  1. 授予 CRM 和销售管理所需权限。
  2. Integration Settings 复制你的 Enterprise Token。

一次性管理员安装(仅限 Salesforce 管理员)

Section titled “一次性管理员安装(仅限 Salesforce 管理员)”

第一次组织中的任何人点击 Connect Salesforce 时,CrewAI 会重定向到一个指向 CrewAI 托管包的安装页面。Salesforce 管理员需要为整个组织安装一次。

  1. 在 CrewAI 的安装页面中,点击 Install in Salesforce。(你也可以把页面 URL 分享给管理员 - 该安装链接对任何打开它的人都有效。)
  2. 以管理员身份登录 Salesforce。对于 sandbox,请在打开 URL 之前将其中的 login.salesforce.com 替换为 test.salesforce.com
  3. 选择 Install for All Users,确认第三方应用提示,然后点击 Install
  4. 在 Salesforce Setup 中,搜索 External Client App ManagerCrewAI App → 打开 Policies 选项卡 → Edit,并设置:
    • Permitted Users: All users may self-authorize
    • IP Relaxation: Relax IP restrictions
    • Refresh Token Policy: Refresh token is valid until revoked
  5. 保存。
  6. 返回 CrewAI AMP,再次点击 Connect Salesforce。这次 OAuth 会完成。
Terminal window
uv add crewai-tools
Terminal window
export CREWAI_PLATFORM_INTEGRATION_TOKEN="your_enterprise_token"

或者将其添加到你的 .env 文件中:

CREWAI_PLATFORM_INTEGRATION_TOKEN=your_enterprise_token
salesforce/create_record_contact

说明: 在 Salesforce 中创建新的联系人记录。

参数:

  • FirstName (string, optional): 名字
  • LastName (string, required): 姓氏 - 此字段为必填
  • accountId (string, optional): 账户 ID - 该联系人所属的账户
  • Email (string, optional): 电子邮件地址
  • Title (string, optional): 联系人头衔,例如 CEO 或副总裁
  • Description (string, optional): 联系人描述
  • additionalFields (object, optional): JSON 格式的附加字段,用于自定义 Contact 字段
salesforce/create_record_lead

说明: 在 Salesforce 中创建新的潜在客户记录。

参数:

  • FirstName (string, optional): 名字
  • LastName (string, required): 姓氏 - 此字段为必填
  • Company (string, required): 公司 - 此字段为必填
  • Email (string, optional): 电子邮件地址
  • Phone (string, optional): 电话号码
  • Website (string, optional): 网站 URL
  • Title (string, optional): 联系人头衔,例如 CEO 或副总裁
  • Status (string, optional): 潜在客户状态 - 使用 Connect Portal Workflow Settings 选择潜在客户状态
  • Description (string, optional): 潜在客户描述
  • additionalFields (object, optional): JSON 格式的附加字段,用于自定义 Lead 字段
salesforce/create_record_opportunity

说明: 在 Salesforce 中创建新的商机记录。

参数:

  • Name (string, required): 商机名称 - 此字段为必填
  • StageName (string, optional): 商机阶段 - 使用 Connect Portal Workflow Settings 选择阶段
  • CloseDate (string, optional): 关闭日期,格式为 YYYY-MM-DD - 默认值为当前日期之后 30 天
  • AccountId (string, optional): 该商机所属的账户
  • Amount (string, optional): 预计总销售额
  • Description (string, optional): 商机描述
  • OwnerId (string, optional): 被分配处理该商机的 Salesforce 用户
  • NextStep (string, optional): 关闭商机的下一步描述
  • additionalFields (object, optional): JSON 格式的附加字段,用于自定义 Opportunity 字段
salesforce/create_record_task

说明: 在 Salesforce 中创建新的任务记录。

参数:

  • whatId (string, optional): 关联对象 ID - 与此任务相关的账户或商机 ID
  • whoId (string, optional): 姓名 ID - 与此任务相关的联系人或潜在客户 ID
  • subject (string, required): 任务主题
  • activityDate (string, optional): 活动日期,格式为 YYYY-MM-DD
  • description (string, optional): 任务描述
  • taskSubtype (string, required): 任务子类型 - 选项:task, email, listEmail, call
  • Status (string, optional): 状态 - 选项:Not Started, In Progress, Completed
  • ownerId (string, optional): 分配给的 ID - 负责该任务的 Salesforce 用户
  • callDurationInSeconds (string, optional): 通话时长(秒)
  • isReminderSet (boolean, optional): 是否设置提醒
  • reminderDateTime (string, optional): ISO 格式的提醒日期/时间
  • additionalFields (object, optional): JSON 格式的附加字段,用于自定义 Task 字段
salesforce/create_record_account

说明: 在 Salesforce 中创建新的账户记录。

参数:

  • Name (string, required): 账户名称 - 此字段为必填
  • OwnerId (string, optional): 被分配该账户的 Salesforce 用户
  • Website (string, optional): 网站 URL
  • Phone (string, optional): 电话号码
  • Description (string, optional): 账户描述
  • additionalFields (object, optional): JSON 格式的附加字段,用于自定义 Account 字段
salesforce/create_record_any

说明: 在 Salesforce 中创建任意对象类型的记录。

注意: 这是一个灵活工具,可用于创建自定义或未知对象类型的记录。

salesforce/update_record_contact

说明: 更新 Salesforce 中已有的联系人记录。

参数:

  • recordId (string, required): 要更新的记录 ID
  • FirstName (string, optional): 名字
  • LastName (string, optional): 姓氏
  • accountId (string, optional): 账户 ID - 该联系人所属的账户
  • Email (string, optional): 电子邮件地址
  • Title (string, optional): 联系人头衔
  • Description (string, optional): 联系人描述
  • additionalFields (object, optional): JSON 格式的附加字段,用于自定义 Contact 字段
salesforce/update_record_lead

说明: 更新 Salesforce 中已有的潜在客户记录。

参数:

  • recordId (string, required): 要更新的记录 ID
  • FirstName (string, optional): 名字
  • LastName (string, optional): 姓氏
  • Company (string, optional): 公司名称
  • Email (string, optional): 电子邮件地址
  • Phone (string, optional): 电话号码
  • Website (string, optional): 网站 URL
  • Title (string, optional): 联系人头衔
  • Status (string, optional): 潜在客户状态
  • Description (string, optional): 潜在客户描述
  • additionalFields (object, optional): JSON 格式的附加字段,用于自定义 Lead 字段
salesforce/update_record_opportunity

说明: 更新 Salesforce 中已有的商机记录。

参数:

  • recordId (string, required): 要更新的记录 ID
  • Name (string, optional): 商机名称
  • StageName (string, optional): 商机阶段
  • CloseDate (string, optional): 关闭日期,格式为 YYYY-MM-DD
  • AccountId (string, optional): 该商机所属的账户
  • Amount (string, optional): 预计总销售额
  • Description (string, optional): 商机描述
  • OwnerId (string, optional): 被分配处理该商机的 Salesforce 用户
  • NextStep (string, optional): 关闭商机的下一步描述
  • additionalFields (object, optional): JSON 格式的附加字段,用于自定义 Opportunity 字段
salesforce/update_record_task

说明: 更新 Salesforce 中已有的任务记录。

参数:

  • recordId (string, required): 要更新的记录 ID
  • whatId (string, optional): 关联对象 ID - 与此任务相关的账户或商机 ID
  • whoId (string, optional): 姓名 ID - 与此任务相关的联系人或潜在客户 ID
  • subject (string, optional): 任务主题
  • activityDate (string, optional): 活动日期,格式为 YYYY-MM-DD
  • description (string, optional): 任务描述
  • Status (string, optional): 状态 - 选项:Not Started, In Progress, Completed
  • ownerId (string, optional): 分配给的 ID - 负责该任务的 Salesforce 用户
  • callDurationInSeconds (string, optional): 通话时长(秒)
  • isReminderSet (boolean, optional): 是否设置提醒
  • reminderDateTime (string, optional): ISO 格式的提醒日期/时间
  • additionalFields (object, optional): JSON 格式的附加字段,用于自定义 Task 字段
salesforce/update_record_account

说明: 更新 Salesforce 中已有的账户记录。

参数:

  • recordId (string, required): 要更新的记录 ID
  • Name (string, optional): 账户名称
  • OwnerId (string, optional): 被分配该账户的 Salesforce 用户
  • Website (string, optional): 网站 URL
  • Phone (string, optional): 电话号码
  • Description (string, optional): 账户描述
  • additionalFields (object, optional): JSON 格式的附加字段,用于自定义 Account 字段
salesforce/update_record_any

说明: 更新 Salesforce 中任意对象类型的记录。

注意: 这是一个灵活工具,可用于更新自定义或未知对象类型的记录。

salesforce/get_record_by_id_contact

说明: 通过 ID 获取联系人记录。

参数:

  • recordId (string, required): 联系人的记录 ID
salesforce/get_record_by_id_lead

说明: 通过 ID 获取潜在客户记录。

参数:

  • recordId (string, required): 潜在客户的记录 ID
salesforce/get_record_by_id_opportunity

说明: 通过 ID 获取商机记录。

参数:

  • recordId (string, required): 商机的记录 ID
salesforce/get_record_by_id_task

说明: 通过 ID 获取任务记录。

参数:

  • recordId (string, required): 任务的记录 ID
salesforce/get_record_by_id_account

说明: 通过 ID 获取账户记录。

参数:

  • recordId (string, required): 账户的记录 ID
salesforce/get_record_by_id_any

说明: 通过 ID 获取任意对象类型的记录。

参数:

  • recordType (string, required): 记录类型(例如:“CustomObject__c”)
  • recordId (string, required): 记录 ID
salesforce/search_records_contact

说明: 使用高级过滤搜索联系人记录。

参数:

  • filterFormula (object, optional): 以析取范式表示的高级筛选,支持字段级运算符
  • sortBy (string, optional): 排序字段(例如:“CreatedDate”)
  • sortDirection (string, optional): 排序方向 - 选项:ASC, DESC
  • includeAllFields (boolean, optional): 结果中包含所有字段
  • paginationParameters (object, optional): 带 pageCursor 的分页设置
salesforce/search_records_lead

说明: 使用高级过滤搜索潜在客户记录。

参数:

  • filterFormula (object, optional): 以析取范式表示的高级筛选,支持字段级运算符
  • sortBy (string, optional): 排序字段(例如:“CreatedDate”)
  • sortDirection (string, optional): 排序方向 - 选项:ASC, DESC
  • includeAllFields (boolean, optional): 结果中包含所有字段
  • paginationParameters (object, optional): 带 pageCursor 的分页设置
salesforce/search_records_opportunity

说明: 使用高级过滤搜索商机记录。

参数:

  • filterFormula (object, optional): 以析取范式表示的高级筛选,支持字段级运算符
  • sortBy (string, optional): 排序字段(例如:“CreatedDate”)
  • sortDirection (string, optional): 排序方向 - 选项:ASC, DESC
  • includeAllFields (boolean, optional): 结果中包含所有字段
  • paginationParameters (object, optional): 带 pageCursor 的分页设置
salesforce/search_records_task

说明: 使用高级过滤搜索任务记录。

参数:

  • filterFormula (object, optional): 以析取范式表示的高级筛选,支持字段级运算符
  • sortBy (string, optional): 排序字段(例如:“CreatedDate”)
  • sortDirection (string, optional): 排序方向 - 选项:ASC, DESC
  • includeAllFields (boolean, optional): 结果中包含所有字段
  • paginationParameters (object, optional): 带 pageCursor 的分页设置
salesforce/search_records_account

说明: 使用高级过滤搜索账户记录。

参数:

  • filterFormula (object, optional): 以析取范式表示的高级筛选,支持字段级运算符
  • sortBy (string, optional): 排序字段(例如:“CreatedDate”)
  • sortDirection (string, optional): 排序方向 - 选项:ASC, DESC
  • includeAllFields (boolean, optional): 结果中包含所有字段
  • paginationParameters (object, optional): 带 pageCursor 的分页设置
salesforce/search_records_any

说明: 搜索任意对象类型的记录。

参数:

  • recordType (string, required): 要搜索的记录类型
  • filterFormula (string, optional): 搜索筛选条件
  • includeAllFields (boolean, optional): 结果中包含所有字段
  • paginationParameters (object, optional): 带 pageCursor 的分页设置
salesforce/get_record_by_view_id_contact

说明: 从特定列表视图中获取联系人记录。

参数:

  • listViewId (string, required): 列表视图 ID
  • paginationParameters (object, optional): 带 pageCursor 的分页设置
salesforce/get_record_by_view_id_lead

说明: 从特定列表视图中获取潜在客户记录。

参数:

  • listViewId (string, required): 列表视图 ID
  • paginationParameters (object, optional): 带 pageCursor 的分页设置
salesforce/get_record_by_view_id_opportunity

说明: 从特定列表视图中获取商机记录。

参数:

  • listViewId (string, required): 列表视图 ID
  • paginationParameters (object, optional): 带 pageCursor 的分页设置
salesforce/get_record_by_view_id_task

说明: 从特定列表视图中获取任务记录。

参数:

  • listViewId (string, required): 列表视图 ID
  • paginationParameters (object, optional): 带 pageCursor 的分页设置
salesforce/get_record_by_view_id_account

说明: 从特定列表视图中获取账户记录。

参数:

  • listViewId (string, required): 列表视图 ID
  • paginationParameters (object, optional): 带 pageCursor 的分页设置
salesforce/get_record_by_view_id_any

说明: 从特定列表视图中获取任意对象类型的记录。

参数:

  • recordType (string, required): 记录类型
  • listViewId (string, required): 列表视图 ID
  • paginationParameters (object, optional): 带 pageCursor 的分页设置
salesforce/create_custom_field_contact

说明: 为 Contact 对象部署自定义字段。

参数:

  • label (string, required): 字段标签,用于显示和内部引用
  • type (string, required): 字段类型 - 选项:Checkbox, Currency, Date, Email, Number, Percent, Phone, Picklist, MultiselectPicklist, Text, TextArea, LongTextArea, Html, Time, Url
  • defaultCheckboxValue (boolean, optional): 复选框字段的默认值
  • length (string, required): 数值/文本字段长度
  • decimalPlace (string, required): 数值字段的小数位
  • pickListValues (string, required): 选择列表字段的值(用换行分隔)
  • visibleLines (string, required): 多选/文本区域字段的可见行数
  • description (string, optional): 字段描述
  • helperText (string, optional): 悬停时显示的帮助文本
  • defaultFieldValue (string, optional): 默认字段值
salesforce/create_custom_field_lead

说明: 为 Lead 对象部署自定义字段。

参数:

  • label (string, required): 字段标签,用于显示和内部引用
  • type (string, required): 字段类型 - 选项:Checkbox, Currency, Date, Email, Number, Percent, Phone, Picklist, MultiselectPicklist, Text, TextArea, LongTextArea, Html, Time, Url
  • defaultCheckboxValue (boolean, optional): 复选框字段的默认值
  • length (string, required): 数值/文本字段长度
  • decimalPlace (string, required): 数值字段的小数位
  • pickListValues (string, required): 选择列表字段的值(用换行分隔)
  • visibleLines (string, required): 多选/文本区域字段的可见行数
  • description (string, optional): 字段描述
  • helperText (string, optional): 悬停时显示的帮助文本
  • defaultFieldValue (string, optional): 默认字段值
salesforce/create_custom_field_opportunity

说明: 为 Opportunity 对象部署自定义字段。

参数:

  • label (string, required): 字段标签,用于显示和内部引用
  • type (string, required): 字段类型 - 选项:Checkbox, Currency, Date, Email, Number, Percent, Phone, Picklist, MultiselectPicklist, Text, TextArea, LongTextArea, Html, Time, Url
  • defaultCheckboxValue (boolean, optional): 复选框字段的默认值
  • length (string, required): 数值/文本字段长度
  • decimalPlace (string, required): 数值字段的小数位
  • pickListValues (string, required): 选择列表字段的值(用换行分隔)
  • visibleLines (string, required): 多选/文本区域字段的可见行数
  • description (string, optional): 字段描述
  • helperText (string, optional): 悬停时显示的帮助文本
  • defaultFieldValue (string, optional): 默认字段值
salesforce/create_custom_field_task

说明: 为 Task 对象部署自定义字段。

参数:

  • label (string, required): 字段标签,用于显示和内部引用
  • type (string, required): 字段类型 - 选项:Checkbox, Currency, Date, Email, Number, Percent, Phone, Picklist, MultiselectPicklist, Text, TextArea, Time, Url
  • defaultCheckboxValue (boolean, optional): 复选框字段的默认值
  • length (string, required): 数值/文本字段长度
  • decimalPlace (string, required): 数值字段的小数位
  • pickListValues (string, required): 选择列表字段的值(用换行分隔)
  • visibleLines (string, required): 多选字段的可见行数
  • description (string, optional): 字段描述
  • helperText (string, optional): 悬停时显示的帮助文本
  • defaultFieldValue (string, optional): 默认字段值
salesforce/create_custom_field_account

说明: 为 Account 对象部署自定义字段。

参数:

  • label (string, required): 字段标签,用于显示和内部引用
  • type (string, required): 字段类型 - 选项:Checkbox, Currency, Date, Email, Number, Percent, Phone, Picklist, MultiselectPicklist, Text, TextArea, LongTextArea, Html, Time, Url
  • defaultCheckboxValue (boolean, optional): 复选框字段的默认值
  • length (string, required): 数值/文本字段长度
  • decimalPlace (string, required): 数值字段的小数位
  • pickListValues (string, required): 选择列表字段的值(用换行分隔)
  • visibleLines (string, required): 多选/文本区域字段的可见行数
  • description (string, optional): 字段描述
  • helperText (string, optional): 悬停时显示的帮助文本
  • defaultFieldValue (string, optional): 默认字段值
salesforce/create_custom_field_any

说明: 为任意对象类型部署自定义字段。

注意: 这是一个灵活工具,可用于在自定义或未知对象类型上创建自定义字段。

salesforce/write_soql_query

说明: 对你的 Salesforce 数据执行自定义 SOQL 查询。

参数:

  • query (string, required): SOQL 查询(例如:SELECT Id, Name FROM Account WHERE Name = 'Example'
salesforce/create_custom_object

说明: 在 Salesforce 中部署一个新的自定义对象。

参数:

  • label (string, required): 对象标签,用于标签页、页面布局和报表
  • pluralLabel (string, required): 复数标签(例如:“Accounts”)
  • description (string, optional): 自定义对象描述
  • recordName (string, required): 显示在布局和搜索中的记录名称(例如:“Account Name”)
salesforce/describe_action_schema

说明: 获取针对特定对象类型操作的预期 schema。

参数:

  • recordType (string, required): 要描述的记录类型
  • operation (string, required): 操作类型(例如:“CREATE_RECORD” 或 “UPDATE_RECORD”)

注意: 在处理自定义对象时,请先使用此函数来了解其 schema,然后再执行操作。

from crewai import Agent, Task, Crew
from crewai import Agent, Task, Crew
# Create an agent with Salesforce capabilities
salesforce_agent = Agent(
role="CRM Manager",
goal="Manage customer relationships and sales processes efficiently",
backstory="An AI assistant specialized in CRM operations and sales automation.",
apps=['salesforce'] # All Salesforce actions will be available
)
# Task to create a new lead
create_lead_task = Task(
description="Create a new lead for John Doe from Example Corp with email [email protected]",
agent=salesforce_agent,
expected_output="Lead created successfully with lead ID"
)
# Run the task
crew = Crew(
agents=[salesforce_agent],
tasks=[create_lead_task]
)
crew.kickoff()
sales_manager = Agent(
role="Sales Manager",
goal="Manage leads and opportunities in the sales pipeline",
backstory="An experienced sales manager who handles lead qualification and opportunity management.",
apps=['salesforce/create_record_lead']
)
# Task to manage sales pipeline
pipeline_task = Task(
description="Create a qualified lead and convert it to an opportunity with $50,000 value",
agent=sales_manager,
expected_output="Lead created and opportunity established successfully"
)
crew = Crew(
agents=[sales_manager],
tasks=[pipeline_task]
)
crew.kickoff()
from crewai import Agent, Task, Crew
account_manager = Agent(
role="Account Manager",
goal="Manage customer accounts and maintain strong relationships",
backstory="An AI assistant that specializes in account management and customer relationship building.",
apps=['salesforce']
)
# Task to manage customer accounts
account_task = Task(
description="""
1. Create a new account for TechCorp Inc.
2. Add John Doe as the primary contact for this account
3. Create a follow-up task for next week to check on their project status
""",
agent=account_manager,
expected_output="Account, contact, and follow-up task created successfully"
)
crew = Crew(
agents=[account_manager],
tasks=[account_task]
)
crew.kickoff()
from crewai import Agent, Task, Crew
data_analyst = Agent(
role="Sales Data Analyst",
goal="Generate insights from Salesforce data using SOQL queries",
backstory="An analytical AI that excels at extracting meaningful insights from CRM data.",
apps=['salesforce']
)
# Complex task involving SOQL queries and data analysis
analysis_task = Task(
description="""
1. Execute a SOQL query to find all opportunities closing this quarter
2. Search for contacts at companies with opportunities over $100K
3. Create a summary report of the sales pipeline status
4. Update high-value opportunities with next steps
""",
agent=data_analyst,
expected_output="Comprehensive sales pipeline analysis with actionable insights"
)
crew = Crew(
agents=[data_analyst],
tasks=[analysis_task]
)
crew.kickoff()

这份完整文档按功能整理了所有 Salesforce 工具,方便用户找到 CRM 自动化任务所需的具体操作。

需要帮助?

联系我们的支持团队,获取 Salesforce 集成设置或故障排查方面的帮助。