扣子与Salesforce API集成:销售线索自动打分与分类指南
销售线索自动评分与分类,听起来像黑科技?其实逻辑很清晰。你大概率遇到过这种场景:线索进入CRM后,仍需人工逐条翻阅字段、比对历史行为,再手动打上A/B类标签,效率低下且容易出错。今天拆解如何用Coze(即扣子)这个轻量级AI调度平台,结合Salesforce原生API,让整个流程自动化运转。核心思路只有四步:实时解析入参 → 规则引擎判定 → 分数回写 → 分类同步,完全无需人工干预。
获取Salesforce API连接凭证
这一步是基础设施。登录Salesforce管理后台,进入“设置”,搜索“Connected Apps”,点击“New Connected App”。名称和联系人邮箱为必填项,例如填写“Coze-Scoring-Integration”。关键操作:在API相关区域,勾选“启用OAuth设置”,回调URL务必填写 https://bot.coze.com/oauth/callback。作用域至少勾选“Api”、“Perform requests on your behalf at any time (refresh_token, offline_access)”以及“Access and manage your data (api)”。保存后系统会生成Consumer Key和Consumer Secret,后者仅显示一次,请立即保存,丢失后只能重置重配。
接着,在“设置”中搜索“Profiles”,找到用于集成的用户配置文件并编辑。在“Object Settings”中,为Lead对象启用“Read”和“Edit”权限。特别提醒:如果后续需要通过API修改Owner字段(例如将线索分配给不同销售人员),该用户还需拥有“Manage Users”权限,否则API调用会报错。
在扣子平台创建评分智能体
打开coze.cn,登录后点击左上角“+”,选择“创建智能体” → “标准创建”。名称设为“SF线索实时评分器”,简介清晰说明其职责:监听Salesforce新线索事件,执行多维度规则评分,自动更新Score字段并标记Category标签。
工作空间建议选择“团队空间”,便于多人协作维护评分逻辑。重点:务必关闭“启用多轮对话记忆”。该智能体不处理对话,仅响应单次Webhook请求,开启记忆反而会导致上下文混乱,致使字段更新错位。
切换到“插件”标签,添加一个“自定义HTTP请求”插件。基础信息中,名称填写“SF-API-Update”,方法选择POST,URL暂时留空(后续动态拼接),Headers添加两项:Authorization: Bearer {access_token} 和 Content-Type: application/json。保存即可。
配置Salesforce Webhook触发机制
返回Salesforce后台,进入“设置”,搜索Process Builder或直接使用Flow Builder(建议后者)。新建一个Record-Triggered Flow,触发对象选Lead,触发条件设为“当记录被创建时”。添加一个“Invoke an External Service”元素,首先需要在Setup → Security → Remote Site Settings中添加 https://bot.coze.com 到白名单。
URL字段填写Coze智能体发布后生成的Webhook地址(在扣子智能体“发布”页面可获取)。Body使用JSON模板,参考如下:
{"lead_id":"{!$Record.Id}","company":"{!$Record.Company}","email":"{!$Record.Email}","website":"{!$Record.Website}","last_activity":"{!$Record.LastActivityDate}"}
注意陷阱:LastActivityDate字段必须在Lead对象上启用且有值,否则Webhook会因空字段中断。若该字段为空,可在Flow中先执行“Get Records”动作,拉取最近的Task或EmailMessage时间,补全后再继续流程。
编写扣子工作流执行评分与分类
返回Coze智能体编辑页,进入“工作流”,新建一个流程,命名为“SF-Lead-Scoring-Flow”。从“开始节点”开始,连接一个“代码节点(Python)”,嵌入评分逻辑。以下为示例:
```python
import json
from datetime import datetime
# 解析入参
payload = json.loads(bot_input.get('webhook_body', '{}'))
lead_id = payload.get('lead_id')
company = payload.get('company', '').lower()
email_domain = payload.get('email', '').split('@')[-1] if '@' in payload.get('email', '') else ''
last_activity = payload.get('last_activity', '')
# 基础分项计算
score = 0
categories = []
# 公司行业匹配(硬编码映射,可替换为外部知识库API)
tech_domains = ['cloud', 'ai', 'tech', 'software', 'dev', 'labs']
if any(d in company for d in tech_domains) or email_domain in ['github.com', 'gitlab.com', 'vercel.app']:
score += 20
categories.append('SaaS-Tech')
# 邮箱域名质量(过滤免费邮箱)
free_domains = ['gmail.com', 'qq.com', '163.com', 'yahoo.com']
if email_domain not in free_domains and email_domain != '':
score += 15
# 最近活跃度(距今天数)
if last_activity:
try:
days_ago = (datetime.now().date() - datetime.strptime(last_activity[:10], '%Y-%m-%d').date()).days
if days_ago <= 3:
score += 25
categories.append('Hot')
elif days_ago <= 14:
score += 10
except:
pass
# 行为关键词增强(从备注字段提取,需Salesforce预置字段)
notes = payload.get('description', '')
if 'demo' in notes or 'trial' in notes or 'pricing' in notes:
score += 30
categories.append('Ready-to-Buy')
# 分类兜底
if not categories:
categories = ['Cold']
bot_output = {
"lead_id": lead_id,
"score": min(100, max(0, score)),
"category": '|'.join(list(set(categories))),
"updated_at": datetime.now().isoformat()
}
接着再拖一个“HTTP请求节点”,选择刚才创建的“SF-API-Update”插件。URL动态拼接为 https://your-instance.salesforce.com/services/data/v58.0/sobjects/Lead/{lead_id}(v58.0请根据实际API版本替换),Body填写:{"Score__c": {score}, "Category__c": "{category}"},方法选PATCH。这样即可将评分结果写回Salesforce。
部署并验证端到端链路
在Coze智能体页面点击“发布”,复制Webhook URL,回到Salesforce Flow中粘贴并保存激活。现在进行测试:在Salesforce新建一条线索,Company填写“CloudAI Labs”,Email填写“contact@cloudai.dev”,Description填写“request demo and pricing”。提交后等待约10秒,刷新该记录,观察Score__c字段是否变为90,Category__c是否显示“SaaS-Tech|Hot|Ready-to-Buy”。
若字段未更新,立即查看Coze工作流的“运行日志”。HTTP请求节点返回的状态码能快速定位问题:401表示token过期需要刷新,403说明Salesforce用户权限不足,400则JSON格式错误——最常见原因是category中包含未转义的非法字符。
