Salesforce 集成
让你的智能体通过 Salesforce 管理客户关系、销售流程和数据。你可以创建和更新记录、管理潜在客户和商机、执行 SOQL 查询,并借助 AI 驱动的自动化简化 CRM 工作流。
在使用 Salesforce 集成之前,请确保你已具备:
- 一个拥有有效订阅的 CrewAI AMP 账户
- 一个具备相应权限的 Salesforce 账户
- 通过 集成页面 连接了你的 Salesforce 账户
设置 Salesforce 集成
Section titled “设置 Salesforce 集成”1. 连接你的 Salesforce 账户
Section titled “1. 连接你的 Salesforce 账户”- 访问 CrewAI AMP Integrations。
- 在 Authentication Integrations 部分找到 Salesforce。
- 点击 Connect。
接下来会发生什么,取决于你组织中的 Salesforce 管理员是否已经安装了 CrewAI 包:
- 包已安装: 你会直接进入 Salesforce OAuth 授权页面,批准后即可完成连接。
- 包尚未安装: 你会看到 Install CrewAI in Salesforce 页面。请按照下面的一次性安装步骤操作,然后返回 CrewAI AMP 再次点击 Connect。
- 授予 CRM 和销售管理所需权限。
- 从 Integration Settings 复制你的 Enterprise Token。
一次性管理员安装(仅限 Salesforce 管理员)
Section titled “一次性管理员安装(仅限 Salesforce 管理员)”第一次组织中的任何人点击 Connect Salesforce 时,CrewAI 会重定向到一个指向 CrewAI 托管包的安装页面。Salesforce 管理员需要为整个组织安装一次。
- 在 CrewAI 的安装页面中,点击 Install in Salesforce。(你也可以把页面 URL 分享给管理员 - 该安装链接对任何打开它的人都有效。)
- 以管理员身份登录 Salesforce。对于 sandbox,请在打开 URL 之前将其中的
login.salesforce.com替换为test.salesforce.com。 - 选择 Install for All Users,确认第三方应用提示,然后点击 Install。
- 在 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
- 保存。
- 返回 CrewAI AMP,再次点击 Connect Salesforce。这次 OAuth 会完成。
2. 安装所需包
Section titled “2. 安装所需包”uv add crewai-tools3. 环境变量设置
Section titled “3. 环境变量设置”export CREWAI_PLATFORM_INTEGRATION_TOKEN="your_enterprise_token"或者将其添加到你的 .env 文件中:
CREWAI_PLATFORM_INTEGRATION_TOKEN=your_enterprise_tokensalesforce/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): 网站 URLTitle(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 - 与此任务相关的账户或商机 IDwhoId(string, optional): 姓名 ID - 与此任务相关的联系人或潜在客户 IDsubject(string, required): 任务主题activityDate(string, optional): 活动日期,格式为 YYYY-MM-DDdescription(string, optional): 任务描述taskSubtype(string, required): 任务子类型 - 选项:task, email, listEmail, callStatus(string, optional): 状态 - 选项:Not Started, In Progress, CompletedownerId(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): 网站 URLPhone(string, optional): 电话号码Description(string, optional): 账户描述additionalFields(object, optional): JSON 格式的附加字段,用于自定义 Account 字段
salesforce/create_record_any
说明: 在 Salesforce 中创建任意对象类型的记录。
注意: 这是一个灵活工具,可用于创建自定义或未知对象类型的记录。
salesforce/update_record_contact
说明: 更新 Salesforce 中已有的联系人记录。
参数:
recordId(string, required): 要更新的记录 IDFirstName(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): 要更新的记录 IDFirstName(string, optional): 名字LastName(string, optional): 姓氏Company(string, optional): 公司名称Email(string, optional): 电子邮件地址Phone(string, optional): 电话号码Website(string, optional): 网站 URLTitle(string, optional): 联系人头衔Status(string, optional): 潜在客户状态Description(string, optional): 潜在客户描述additionalFields(object, optional): JSON 格式的附加字段,用于自定义 Lead 字段
salesforce/update_record_opportunity
说明: 更新 Salesforce 中已有的商机记录。
参数:
recordId(string, required): 要更新的记录 IDName(string, optional): 商机名称StageName(string, optional): 商机阶段CloseDate(string, optional): 关闭日期,格式为 YYYY-MM-DDAccountId(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): 要更新的记录 IDwhatId(string, optional): 关联对象 ID - 与此任务相关的账户或商机 IDwhoId(string, optional): 姓名 ID - 与此任务相关的联系人或潜在客户 IDsubject(string, optional): 任务主题activityDate(string, optional): 活动日期,格式为 YYYY-MM-DDdescription(string, optional): 任务描述Status(string, optional): 状态 - 选项:Not Started, In Progress, CompletedownerId(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): 要更新的记录 IDName(string, optional): 账户名称OwnerId(string, optional): 被分配该账户的 Salesforce 用户Website(string, optional): 网站 URLPhone(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, DESCincludeAllFields(boolean, optional): 结果中包含所有字段paginationParameters(object, optional): 带 pageCursor 的分页设置
salesforce/search_records_lead
说明: 使用高级过滤搜索潜在客户记录。
参数:
filterFormula(object, optional): 以析取范式表示的高级筛选,支持字段级运算符sortBy(string, optional): 排序字段(例如:“CreatedDate”)sortDirection(string, optional): 排序方向 - 选项:ASC, DESCincludeAllFields(boolean, optional): 结果中包含所有字段paginationParameters(object, optional): 带 pageCursor 的分页设置
salesforce/search_records_opportunity
说明: 使用高级过滤搜索商机记录。
参数:
filterFormula(object, optional): 以析取范式表示的高级筛选,支持字段级运算符sortBy(string, optional): 排序字段(例如:“CreatedDate”)sortDirection(string, optional): 排序方向 - 选项:ASC, DESCincludeAllFields(boolean, optional): 结果中包含所有字段paginationParameters(object, optional): 带 pageCursor 的分页设置
salesforce/search_records_task
说明: 使用高级过滤搜索任务记录。
参数:
filterFormula(object, optional): 以析取范式表示的高级筛选,支持字段级运算符sortBy(string, optional): 排序字段(例如:“CreatedDate”)sortDirection(string, optional): 排序方向 - 选项:ASC, DESCincludeAllFields(boolean, optional): 结果中包含所有字段paginationParameters(object, optional): 带 pageCursor 的分页设置
salesforce/search_records_account
说明: 使用高级过滤搜索账户记录。
参数:
filterFormula(object, optional): 以析取范式表示的高级筛选,支持字段级运算符sortBy(string, optional): 排序字段(例如:“CreatedDate”)sortDirection(string, optional): 排序方向 - 选项:ASC, DESCincludeAllFields(boolean, optional): 结果中包含所有字段paginationParameters(object, optional): 带 pageCursor 的分页设置
salesforce/search_records_any
说明: 搜索任意对象类型的记录。
参数:
recordType(string, required): 要搜索的记录类型filterFormula(string, optional): 搜索筛选条件includeAllFields(boolean, optional): 结果中包含所有字段paginationParameters(object, optional): 带 pageCursor 的分页设置
列表视图检索
Section titled “列表视图检索”salesforce/get_record_by_view_id_contact
说明: 从特定列表视图中获取联系人记录。
参数:
listViewId(string, required): 列表视图 IDpaginationParameters(object, optional): 带 pageCursor 的分页设置
salesforce/get_record_by_view_id_lead
说明: 从特定列表视图中获取潜在客户记录。
参数:
listViewId(string, required): 列表视图 IDpaginationParameters(object, optional): 带 pageCursor 的分页设置
salesforce/get_record_by_view_id_opportunity
说明: 从特定列表视图中获取商机记录。
参数:
listViewId(string, required): 列表视图 IDpaginationParameters(object, optional): 带 pageCursor 的分页设置
salesforce/get_record_by_view_id_task
说明: 从特定列表视图中获取任务记录。
参数:
listViewId(string, required): 列表视图 IDpaginationParameters(object, optional): 带 pageCursor 的分页设置
salesforce/get_record_by_view_id_account
说明: 从特定列表视图中获取账户记录。
参数:
listViewId(string, required): 列表视图 IDpaginationParameters(object, optional): 带 pageCursor 的分页设置
salesforce/get_record_by_view_id_any
说明: 从特定列表视图中获取任意对象类型的记录。
参数:
recordType(string, required): 记录类型listViewId(string, required): 列表视图 IDpaginationParameters(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, UrldefaultCheckboxValue(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, UrldefaultCheckboxValue(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, UrldefaultCheckboxValue(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, UrldefaultCheckboxValue(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, UrldefaultCheckboxValue(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,然后再执行操作。
基础 Salesforce 智能体设置
Section titled “基础 Salesforce 智能体设置”from crewai import Agent, Task, Crewfrom crewai import Agent, Task, Crew
# Create an agent with Salesforce capabilitiessalesforce_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 leadcreate_lead_task = Task( agent=salesforce_agent, expected_output="Lead created successfully with lead ID")
# Run the taskcrew = Crew( agents=[salesforce_agent], tasks=[create_lead_task])
crew.kickoff()筛选特定 Salesforce 工具
Section titled “筛选特定 Salesforce 工具”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 pipelinepipeline_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()联系人与账户管理
Section titled “联系人与账户管理”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 accountsaccount_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()高级 SOQL 查询与报告
Section titled “高级 SOQL 查询与报告”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 analysisanalysis_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 集成设置或故障排查方面的帮助。