跳转到内容

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 Manager → CrewAI 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 集成设置或故障排查方面的帮助。