# @useairfoil/producer-salesforce 中文文档

规范地址：https://npmcn.com/package/%40useairfoil/producer-salesforce/

版本：0\.0\.3
npm 元数据更新时间：2026-11-02T18:47:30.583Z
中文译文更新时间：2026-11-02T19:38:24.841Z
软件包许可：未声明

本文由上游 README 机器翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40useairfoil/producer-salesforce
原文对照：https://npmcn.com/package/%40useairfoil/producer-salesforce/?lang=original
项目主页：https://github.com/useairfoil/connector-kit#readme
源码仓库：https://github.com/useairfoil/connector-kit

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：396 kB，43 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：4 个
- 首次发布：2026-10-29T07:39:36.223Z
- 最新版本发布：2026-11-02T18:47:30.257Z
- 已发布版本数：4（近 12 个月 4 个）

## 中文简介

从一个组织同步Salesforce记录：标准对象、自定义对象、字段历史和字段定义。它回填每个表，然后每10分钟轮询业务对象，每小时设置对象。Salesforce没有签名的webhook，所以

## 安装

```sh
npm install @useairfoil/producer-salesforce
```

也可以使用：`pnpm add @useairfoil/producer-salesforce`、`yarn add @useairfoil/producer-salesforce`、`bun add @useairfoil/producer-salesforce`

## README

# Salesforce生产商

从一个组织同步Salesforce记录：标准对象、自定义对象、字段 历史和字段定义。它回填每个表，然后轮询业务 对象每10分钟一次，设置对象每小时一次。Salesforce没有签名 webhook，所以没有。

| 资源 | 什么 |
| --- | --- |
| `accounts`， `account_contact_relations`， `account_team_members`， `contacts`， `leads`， `opportunities`， `opportunity_line_items`， `opportunity_contact_roles`， `opportunity_competitors`， `opportunity_team_members`， `opportunity_splits`， `partners`， `forecasting_quotas` | 销售 |
| `quotes`， `quote_line_items`， `contracts`， `contract_contact_roles`， `orders`， `order_items` | 报价和订单 |
| `products`， `pricebooks`， `pricebook_entries`， `assets`， `asset_relationships` | 目录和资产 |
| `campaigns`， `campaign_members`， `campaign_member_statuses`， `individuals`， `contact_point_emails`， `contact_point_phones` | 市场营销 |
| `cases`， `case_comments`， `case_contact_roles`， `case_team_members`， `entitlements`， `service_contracts`， `contract_line_items`， `solutions`， `email_messages`， `email_message_relations`， `live_chat_transcripts`， `messaging_sessions`， `macros`， `quick_texts` | 服务 |
| `work_orders`， `work_order_line_items`， `service_appointments`， `service_resources`， `service_territories`， `assigned_resources`， `resource_absences`， `locations`， `product_items` | 现场服务 |
| `tasks`， `task_relations`， `events`， `event_relations`， `notes`， `attachments`， `feed_items`， `feed_comments`， `topics`， `topic_assignments` | 活动 |
| `account_history`， `contact_history`， `lead_history`， `case_history`， `opportunity_history`， `opportunity_field_history` | 领域的历史 |
| `users`， `user_roles`， `profiles`， `permission_sets`， `permission_set_assignments`， `groups`， `group_members`， `collaboration_groups`， `collaboration_group_members`， `record_types`， `business_hours`， `holidays`， `periods`， `organization`， `folders`， `documents` | 用户和设置 |
| `duplicate_record_sets`， `duplicate_record_items` | 重复的规则 |
| `custom_objects` | 每个自定义对象的记录(`*__c`） |
| `object_fields` | 字段定义，以命名 `fields` 键 |

## 配置

| 变量 | 要求 | 默认的 |
| --- | --- | --- |
| `SALESFORCE_DOMAIN` | 是 | 无 |
| `SALESFORCE_CLIENT_ID` | 是 | 无 |
| `SALESFORCE_CLIENT_SECRET` | 是 | 无 |

`SALESFORCE_DOMAIN` 是该组织的“我的域名”主机，例如 `acme.my.salesforce.com`。沙盒也很有效。

## 设置

1.  选择连接器运行时的用户。使用Salesforce Integration的用户 许可工作。让它启用API，读取同步对象的访问权限，然后 查看所有数据。如果没有“查看所有数据”，则其共享之外的记录将被删除 错过了。
2.  在Setup中打开 **外部客户端应用管理器→新的外部客户端应用**. 打开OAuth `api` 范围和 **启用客户端凭证流**. 没有使用回调URL。
3.  在应用程序中 **Policies→OAuth Policies**，打开客户端凭据 流程和设置 **运行** 到步骤1中的用户。
4.  下 **设置→OAuth设置→消费者密钥和秘密**，复制密钥 秘密是 `SALESFORCE_CLIENT_ID` 和 `SALESFORCE_CLIENT_SECRET`.

一个应用程序和域名读取一个组织，所以每个组织运行一个连接器。

## API版本

连接器使用REST API `v68.0` (冬天的27)。

## 数据

-   对象表保存用户可以读取的所有非空字段 `fields`，按API 名称，作为字符串：文本原样，数字和布尔值作为JSON文本，日期作为 Salesforce发送它们。新的自定义字段会自动显示。 `object_fields` 具有每个字段的标签、类型和选择列表值。
-   地址和位置字段被省略，因为它们的部分(如 `BillingCity`)也是字段。二进制字段也是如此，例如attachment 的身体。
-   `created_at` 是 `CreatedDate` 和 `updated_at` 是 `SystemModstamp`。两者都是 对没有它们的对象（如历史对象）为空。
-   `custom_objects` 保存每个自定义对象。 `object` 表示which，例如 `Invoice__c`.
-   已删除或合并的记录得到 `_deleted`。修复的记录来了 回来。
-   联系人，线索，用户，个人，联络点，案例，电子邮件，聊天和 消息传递记录、提要项、笔记、任务和事件都包含名称， 电子邮件、电话号码、地址和消息正文。把他们当作顾客对待 数据。

## 演示数据

`pnpm demo --size 128MiB` 在没有Salesforce的情况下写入编造的Salesforce数据 凭证。有关标志和变量，请参阅Connector Kit README 的需求。

每个帐户都有产品、报价、历史和联系方式、机会 分割，并且，一旦赢得，合同，订单，资产，服务合同 中的授权、安装访问和入职项目 `custom_objects`. 客户通过评论、电子邮件和聊天打开案例。账户也有任务， 事件，笔记，聊天帖子，还有一条线索。组织设置写入一次，然后 不随规模增长：用户，角色，配置文件，权限，组，等等 目录和价格书，活动，服务资源，和 `object_fields`.

## 限制

-   Salesforce列出最近30天的更改和最近15天的删除。 一个连接器停止超过15天就会失效，这些表需要一个新的 回填。
-   读取其他记录的公式字段仅在记录更改时在行中更改 本身的变化。
-   `permission_sets`， `permission_set_assignments`, `collaboration_groups` 不能复制，所以每小时全部读取一次，然后删除行 留下来。
-   没有引号或字段服务等特性的组织，或者没有 访问，使表出错。其他表保持同步。
-   每个表每次轮询至少需要2个API调用。每张桌子都开着，那是 每天大约有23000个电话。开发者版org有15000个，所以只打开 你需要的桌子在那里。

## 常见问题

### @useairfoil/producer-salesforce 是什么？

从一个组织同步Salesforce记录：标准对象、自定义对象、字段历史和字段定义。它回填每个表，然后每10分钟轮询业务对象，每小时设置对象。Salesforce没有签名的webhook，所以

### 如何安装 @useairfoil/producer-salesforce？

在项目目录运行 npm install @useairfoil/producer-salesforce，或使用 pnpm add / yarn add / bun add。

### @useairfoil/producer-salesforce 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @useairfoil/producer-salesforce 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @useairfoil/producer-salesforce 可以商用吗？

@useairfoil/producer-salesforce 使用 未声明 许可。package\.json 没有声明许可证。没有许可证的代码默认保留全部权利，商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括，不构成法律意见，请以许可原文为准。

### @useairfoil/producer-salesforce 还在维护吗？

最新版本 0\.0\.3 发布于 2026/11/03（今天）；至今共发布 4 个版本，其中过去 12 个月发布了 4 个；首次发布于 2026/10/29。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

