You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python结合simple-salesforce获取Salesforce关联对象的Chatter帖子?

获取Salesforce自定义对象关联的Chatter帖子

实现步骤

  • 先获取project_table__c对象的所有记录,提取项目标识(如Project_id)和Salesforce记录ID
  • 针对每个项目记录,调用Chatter REST API获取其关联的Feed帖子
  • 整理数据为你需要的Project_id与Chatter post对应格式

完整代码示例

from simple_salesforce import Salesforce
import os

# 初始化Salesforce连接
username = "username"
password = os.environ['SALESFORCE_PASSWORD']
security_token = os.environ['SALESFORCE_SECURITY_TOKEN']
domain = "test"
sf = Salesforce(username=username, password=password, security_token=security_token, domain=domain)

# 1. 查询所有项目记录,替换为实际字段名
# 注意:请将Project_Id__c替换为你实际的项目ID字段API名称
project_query = sf.query("SELECT Id, Project_Id__c FROM project_table__c")
projects = project_query['records']

chatter_results = []

# 2. 遍历项目获取Chatter帖子,使用匹配你实例的API版本
api_version = "v59.0"

for project in projects:
    project_id = project['Project_Id__c']
    record_sf_id = project['Id']
    
    # 调用Chatter API获取当前记录的Feed
    feed_endpoint = f"/services/data/{api_version}/chatter/feeds/record/{record_sf_id}/feed-elements"
    feed_data = sf.restful(feed_endpoint, method='GET')
    
    # 处理分页,确保获取所有帖子
    while feed_data:
        # 过滤出普通帖子(排除评论、系统通知等)
        for element in feed_data['elements']:
            if element['type'] == 'FeedItem':
                post_content = element['body']['text']
                chatter_results.append({
                    "Project_id": project_id,
                    "Chatter post": post_content
                })
        
        # 检查是否有下一页数据
        next_page = feed_data.get('nextPageUrl')
        if next_page:
            # 截取API路径部分(去掉域名)
            next_page_path = next_page.split('.com')[1]
            feed_data = sf.restful(next_page_path, method='GET')
        else:
            feed_data = None

# 输出结果或进一步处理
for entry in chatter_results:
    print(entry)

关键说明

  • API端点:/chatter/feeds/record/{recordId}/feed-elements是Salesforce官方用于获取特定记录关联Chatter内容的端点,返回的elements数组包含该记录的所有Feed项。
  • 内容过滤:通过type == 'FeedItem'筛选普通帖子,如果你需要包含评论,可以调整为type == 'Comment',或者移除过滤条件获取所有类型的Feed内容。
  • 分页处理:当帖子数量超过API默认返回限制(通常为25条)时,需要通过nextPageUrl循环拉取所有分页数据。
  • 字段与版本适配:请确保Project_Id__c是你项目对象中实际的项目ID字段API名称,API版本号需匹配你的Salesforce实例版本(可在Salesforce设置的API选项中查看可用版本)。

内容的提问来源于stack exchange,提问作者user15915737

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 06:20:23