Automatisch 连接 Odoo 完整指南:Host、Port、Database 与 API Key 配置详解
【免费下载链接】automatischThe open source Zapier alternative. Build workflow automation without spending time and money.项目地址: https://gitcode.com/GitHub_Trending/au/automatisch
Automatisch 作为开源工作流自动化平台(即开源版 Zapier 替代方案),内置了对 Odoo 的支持,可通过 XML-RPC 外部 API 与 Odoo 数据库交互。本文以仓库内官方文档 packages/docs/pages/apps/odoo/connection.md 为主体,结合后端 Odoo 集成源码,完整讲解如何在 Automatisch 中创建 Odoo 连接、每个连接字段的取值规则与默认值,以及连接验证的底层实现原理。读完本文,你将能独立完成 Odoo 连接的配置与排错,并理解连接凭证在后续自动化流程中是如何被复用的。
Odoo 集成概览:Automatisch 如何对接 Odoo
在 Automatisch 后端中,Odoo 是作为标准应用(App)注册的,其应用定义位于 packages/backend/src/apps/odoo/index.js:
export default defineApp({ name: 'Odoo', key: 'odoo', iconUrl: '{BASE_URL}/apps/odoo/assets/favicon.svg', authDocUrl: '{DOCS_URL}/apps/odoo/connection', supportsConnections: true, baseUrl: 'https://odoo.com', apiBaseUrl: '', primaryColor: '#9c5789', auth, actions, });关键点在于:
supportsConnections: true表示该应用支持连接(Connection)体系,即用户必须先配置一组 Odoo 凭证,之后才能在执行流(Flow)中使用 Odoo 的动作。authDocUrl指向的正是本篇文章所依据的官方连接文档,说明连接配置是整个 Odoo 集成使用流程的第一步。- 与 GitHub、Slack 等基于 OAuth 的应用不同,Odoo 集成使用的是「邮箱 + API Key」的凭证方式,因此每个用户都需要手动提供自己的 Odoo 服务信息。
创建 Odoo 连接:需要提供的五项信息
根据官方文档 connection.md,要创建 Odoo 连接,需要按以下步骤依次填写信息:
- Host Name(主机名):填写 Odoo 服务所在的主机地址。
- Port(端口):填写 Odoo 服务运行的端口。
- Database Name(数据库名):填写要操作的 Odoo 数据库名称。
- Email Address(邮箱地址):填写将要与数据库进行交互的账户邮箱。
- API Key(API 密钥):填写该 Odoo 账户对应的 API Key。
其中,API Key 需要在 Odoo 侧生成。Odoo 官方 API 文档中说明了如何创建 API Key(通常位于 Odoo 账户的偏好设置 / 用户设置中,可针对外部 API 调用生成专用密钥)。在 Automatisch 中配置连接前,请先确保已在 Odoo 中完成 API Key 的创建,并将密钥妥善保管——后续连接验证与流程执行都会使用它。
连接字段深度解析:默认值与取值规则
官方文档仅给出了字段名称,而连接表单的完整定义位于源码 packages/backend/src/apps/odoo/auth/index.js。对照源码可以还原出连接表单的完整字段结构,其中包含文档未列出的Secure(安全协议)字段,实际填写时应一并注意:
| 字段 Key | 界面标签 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|---|
host | Host Name | string | 是 | 无 | Odoo 服务器主机名,例如sub.domain.com(不带协议前缀,即不要写https://) |
port | Port | string | 是 | 443 | 主机运行的端口,默认 443(HTTPS) |
secure | Secure | dropdown | 是 | true | 主机是否通过安全协议通信,可选值为True/False |
databaseName | Database Name | string | 是 | 无 | Odoo 数据库名称 |
email | Email Address | string | 是 | 无 | 与数据库交互的账户邮箱地址 |
apiKey | API Key | string | 是 | 无 | Odoo 账户的 API Key |
几个值得注意的取值细节
- Host 不要带协议:源码中字段描述明确要求填写
sub.domain.com这种不带协议的主机名。协议是否安全通过secure字段控制,而不是写进 host 里。 - Port 默认 443:云上部署的 Odoo 通常走 HTTPS(443);如果是自建实例且未启用 TLS,则需要把
secure改为False,并将端口改为 Odoo 实际监听的端口(例如 8069)。 - Secure 字段的取舍:
secure决定底层 XML-RPC 客户端使用普通连接还是 TLS 加密连接(详见下文源码分析)。生产环境建议保持True。 - 邮箱 + API Key 成对使用:Odoo 的认证模型是「数据库 + 用户名(邮箱)+ API Key」,三者共同参与认证,因此邮箱必须与生成 API Key 的账户一致,且该账户需对该数据库有访问权限。
连接验证的底层原理:XML-RPC 认证链路
创建连接时,Automatisch 并不会直接保存凭证了事,而是会调用verifyCredentials对凭证做一次真实认证。这条验证链路完整展示了上述字段的底层用途:
- 构造 XML-RPC 客户端:在 packages/backend/src/apps/odoo/common/xmlrpc-client.js 的
getClient中,会根据host、port与secure(secure === 'true'时使用xmlrpc.createSecureClient,否则使用xmlrpc.createClient)构造客户端,并拼接 XML-RPC 路径/xmlrpc/2/<path>。 - 调用 authenticate 方法:
authenticate通过 XML-RPC 调用 Odoo 的authenticate方法,参数为:
params: [ $.auth.data.databaseName, // 数据库名 $.auth.data.email, // 邮箱 $.auth.data.apiKey, // API Key [], // 空环境上下文 ]- 校验返回值:如果认证成功,Odoo 返回用户 ID(
uid,整数);若返回值不是整数,则抛出错误Failed to connect to the Odoo server. Please, check the credentials!。 - 写入连接显示名:验证通过后,verify-credentials.js 会把连接的显示名称设置为
${email} @ ${databaseName} - ${host},方便你在连接列表中区分不同环境(如开发库、生产库)。 - 定期复验:is-still-verified.js 会再次调用
verifyCredentials,用于在后续使用中周期性确认连接凭证仍然有效。
认证失败时的常见原因
结合认证链路,可以推断出最常见的失败场景:
- 数据库名拼写错误或邮箱对应的账户无权访问该数据库,导致
authenticate返回非整数; - API Key 无效(被撤销、过期或复制不完整);
- host 填入了协议前缀(如
https://odoo.example.com),导致 DNS 解析与 XML-RPC 路径拼接异常; - 端口 / Secure 设置与服务端实际配置不一致,导致无法建立 TCP 或 TLS 连接。
连接成功之后:Odoo 动作如何使用这些凭证
连接配置完成后,便可在流程中使用 Odoo 提供的动作。当前 Odoo 集成内置的动作是Create Lead(创建线索/商机),定义在 packages/backend/src/apps/odoo/actions/create-lead/index.js,对应官方动作文档 packages/docs/pages/apps/odoo/actions.md。
该动作在运行时会:
- 再次调用
authenticate($)获取uid; - 通过
execute_kw调用 Odoo 的crm.lead模型create方法,写入 Name、Type(lead/opportunity)、Email、Contact Name、Phone、Mobile 等字段; - 其中 Type 字段为下拉选项,可选
Lead(线索)或Opportunity(商机)。
可以看到,整个执行过程完全复用了连接中保存的databaseName、email、apiKey三个字段——这正是「连接」机制的意义所在:凭证只需在创建连接时配置一次,即可被所有依赖该连接的流程安全复用。
配置速查清单
最后,将整个配置过程整理为一份可复制的速查清单:
- 在 Odoo 账户设置中生成 API Key(Odoo 官方外部 API 文档有详细说明);
- 进入 Automatisch 的 Connections 页面,选择 Odoo;
- 填写 Host Name(不带协议的主机名,如
odoo.example.com); - 填写 Port(默认
443,自建非 TLS 实例请调整); - 选择 Secure(
True/False,与端口/协议保持一致); - 填写 Database Name、Email Address、API Key;
- 提交后等待 Automatisch 自动验证——验证通过后连接即创建成功,可立即在流程中使用 Odoo 的 Create Lead 动作。
若验证失败,请优先核对数据库名、邮箱与 API Key 三者是否与 Odoo 侧完全一致,其次检查 host / port / secure 的组合是否与你的 Odoo 部署方式匹配。
【免费下载链接】automatischThe open source Zapier alternative. Build workflow automation without spending time and money.项目地址: https://gitcode.com/GitHub_Trending/au/automatisch
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考