ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Composio 接入 Gong 工具包:按客户动态配置 Base URL、Basic Auth 连接与 MCP 工具作用域的完整指南

2026/9/10 22:54:52 拓冰建站 浏览量
Composio 接入 Gong 工具包:按客户动态配置 Base URL、Basic Auth 连接与 MCP 工具作用域的完整指南 Composio 接入 Gong 工具包按客户动态配置 Base URL、Basic Auth 连接与 MCP 工具作用域的完整指南【免费下载链接】composioComposio powers 1000 toolkits, tool search, context management, authentication, and a sandboxed workbench to help you build AI agents that turn intent into action.项目地址: https://gitcode.com/GitHub_Trending/co/composio本文是围绕 Composio 开源仓库中 Gong 工具包官方支持知识docs/kb/articles/toolkits-gong.md展开的实战指南。Gong 是面向收入团队的通话智能Revenue Intelligence平台其 API 的 Base URL、认证方式与 MCP 工具作用域都有区别于常规工具包的特殊之处。读完本文你将掌握三类关键能力如何避免在共享 Auth Config 中硬编码 Gong Base URL、如何在发起连接时用 Basic AuthAccess Key / Access Key Secret / Gong URL完成认证、以及如何从listToolsAPI 的annotations字段读取 Gong MCP 工具作用域并可直接在 Composio Python / TypeScript SDK 中落地。Gong 工具包在 Composio 中的定位在 Composio 仓库中Gong 属于auth-config类别的公开支持知识工具包 slug 为gong可见于 ts/packages/cli/src/generated/toolkit-slugs.ts 与 docs/content/kb/guide/toolkits-gong.mdx 的 frontmattertoolkitSlugs: [gong]。其知识源文件位于 docs/kb/source/toolkits/gong/public.md经过lastVerifiedAt: 2026-08-12的定期校验属于evergreen常青类知识。围绕 Gong 工具包官方支持知识归纳出三条核心实践也是本文的主体骨架Gong Base URL 因客户而异必须在连接时按用户收集传递而不是在共享 Auth Config 中硬编码Gong Basic Auth 连接需要三个字段Access Key作为用户名、Access Key Secret作为密码、以及客户的 Gong URL / Base URLGong MCP 工具作用域可以从listToolsAPI 返回的annotations字段读取不要只依赖静态文档。一、动态 Base URL按客户收集gong_url避免硬编码问题背景为什么不能硬编码 Gong Base URLGong 采用按客户customer/tenant隔离的部署形态不同客户可能对应不同的 API Base URL。这意味着在共享的 Auth Config 中硬编码单个 Gong Base URL会让所有用户都指向同一个端点导致其他客户的请求路由错误正确的做法是把 Base URL 视为用户级输入在发起 Connected Account连接账户时随认证信息一起收集和传递。Composio 中的 Auth Config 与 Connected Account 模型要理解这一实践先明确 Composio 的两个核心概念详见 docs/content/docs/authentication/index.mdxAuth Config一份蓝图定义某个工具包对全体用户的认证方式OAuth2 / Bearer / API Key / Basic Auth、作用域Scopes与凭据来源Composio 托管或你自己的应用凭据Connected Account某个具体用户完成认证后产生的凭据实例OAuth Token 或 API Key与你的userID绑定。每个用户可以有多个 Connected Account例如工作与个人账号。因此Gong 的 Base URL 属于用户维度的数据应放在连接时传递而不是放在团队共享的 Auth Config 中。Composio SDK 的connected_accounts.initiate()正是承担发起连接职责的入口参考仓库示例 python/examples/connected_accounts.py。按客户传入 Base URL 的 Python 实现结合 python/examples/connected_accounts.py 中 API Key 连接示例的模式可按如下方式为每个客户发起 Gong 连接from composio import Composio composio Composio() connection_request composio.connected_accounts.initiate( user_idcustomer_user_id, # 每个客户使用稳定且唯一的 user_id auth_config_idgong_auth_config_id, # 指向 Gong 的 Auth Config不含 Base URL config{ auth_scheme: BASIC, val: { status: ACTIVE, username: customer_access_key, # Gong Access Key password: customer_access_key_secret, # Gong Access Key Secret base_url: customer_gong_url, # 该客户的 Gong Base URL动态传入 }, }, ) connected_account connection_request.wait_for_connection() print(fConnected account {connected_account.id} is {connected_account.status})说明initiate()的config参数中具体字段名以 SDK 生成的 TypedDict 为准。不确定某工具包需要哪些字段时可以用composio.toolkits.get_connected_account_initiation_fields(toolkitGONG, auth_schemeBASIC)动态枚举必填字段该能力同样体现在 python/examples/connected_accounts.py 中。不硬编码 Base URL 的 Auth Config 创建Auth Config 只声明用哪种认证方式不携带任何单个客户特定的 URL。参考 python/examples/auth_configs.py 的创建模式from composio import Composio composio Composio() # 创建或复用Gong 的 Auth Config——不要把某个客户的 URL 写死在这里 auth_config composio.auth_configs.create( toolkitgong, options{ type: use_custom_auth, auth_scheme: BASIC, # 不包含 base_url / gong_url —— 该值由每个用户在连接时提供 }, ) print(auth_config.id)这样同一个 Auth Config 可以被所有客户复用而每个客户各自的 Gong Base URL 只在各自发起 Connected Account 时生效实现了配置共享、URL 隔离。二、Gong Basic AuthAccess Key、Access Key Secret 与 Gong URL 三字段映射字段映射关系Gong 的 Basic Auth 认证与传统 HTTP Basic Auth 的字段映射如下Gong 概念HTTP Basic Auth 中的角色传给 Composio 的字段Access Key用户名usernameusernameAccess Key Secret密码passwordpassword客户专属 Gong URL / Base URL请求目标端点base_url/gong_url在 Composio SDK 中BASIC认证方案的构造逻辑位于 python/composio/core/models/connected_accounts.py#L205-L223auth_scheme.basic(options)会生成{auth_scheme: BASIC, val: {status: ACTIVE, **options}}结构——options里携带的就是上面表格中的字段。仓库中还提供了auth_scheme.bearer_token()、auth_scheme.api_key()、auth_scheme.basic_with_jwt()等同族构造器同文件 L188-L337可供选择其他认证方式时参考。使用auth_scheme.basic()发起连接利用 SDK 提供的auth_scheme.basic()帮助函数代码可读性更好from composio import Composio from composio.types import auth_scheme composio Composio() # 从你的业务侧收集例如登录表单 / 组织配置 access_key customer_access_key # Gong Access Key access_key_secret customer_access_key_secret # Gong Access Key Secret gong_url customer_gong_url # 该客户的 Gong URL / Base URL connection_request composio.connected_accounts.initiate( user_idcustomer_user_id, auth_config_idgong_auth_config_id, configauth_scheme.basic( options{ username: access_key, password: access_key_secret, base_url: gong_url, } ), ) # Basic Auth 通常不需要跳转授权页但仍可等待连接最终建立 connected_account connection_request.wait_for_connection() print(connected_account.id, connected_account.status)托管认证Hosted Auth代替自建表单官方知识指出托管认证Hosted Auth也可以替你收集这些必填字段而不必手动构建前端表单。在 Composio 中托管认证即 Connect Link 机制参见 docs/content/docs/authentication/index.mdx每个 Session 都内置COMPOSIO_MANAGE_CONNECTIONS元工具当工具需要账号时会自动读取 Auth Config、创建连接并返回一个安全的 Connect Link用户点击链接、在托管页面上完成填写与授权凭据不会经过你的应用或模型因此可以安全地把链接直接展示在聊天界面中你可以调用session.authorize()按需生成 Connect Link用于引导流程、设置页或任务前的预检并可传入callback_url让用户授权后跳回你的应用session composio.create(user_iduser_123) connection_request session.authorize(gong) print(connection_request.redirect_url) # 将链接发给用户托管页面会收集其 Gong 凭据这一方案对应官方知识中hosted auth can also collect required fields for the customer instead of manually building the frontend form的结论——你无需为 Access Key、Secret、URL 单独开发录入 UI托管流程会替你完成。连接后的生命周期管理连接建立后Connected Account 进入完整生命周期管理可通过connected_accounts.list()按user_ids与statuses过滤用get()查看详情用enable()/disable()暂停或恢复INACTIVE状态的账号无法执行工具用delete()永久删除不可撤销。完整示例见 python/examples/connected_accounts.py 与 docs/content/docs/auth-configuration/connected-accounts.mdx。另外注意Connected Account 响应中的敏感字段如access_token、password等默认会被部分脱敏返回前 4 个字符加...。三、Gong MCP 工具作用域从listTools的annotations字段读取为什么不能只依赖静态文档Gong 通过 MCPModel Context Protocol暴露工具时每个工具所要求的**作用域scopes**可能随服务端配置、客户订阅或工具版本变化。静态文档无法保证与运行时完全一致因此官方知识明确建议通过 tools API 的listTools接口返回的annotations字段来获取 Gong 工具作用域。依据新版 MCP 规范listTools返回的每个工具描述中可以携带annotations工具注解元数据例如只读标记、授权/作用域提示等。对 Gong MCP 工具而言需要推理其作用域时应检查该字段而非只读静态文档调用listTools遍历每个工具对象的annotations从annotations中解析与授权/作用域相关的元数据得到该工具实际要求的 Gong scope将解析结果用于权限提示、能力路由或 UI 展示例如告知用户这个工具需要哪些 Gong 权限。在 Agent 流程中的落地位置在 Composio 中启用 MCP 工具集的入口可以参考 docs/content/docs/sessions-via-mcp.mdx 与 docs/content/docs/single-toolkit-mcp.mdx单工具包 MCP 场景。当你的 Agent 需要判断某个 Gong MCP 工具是否能执行/需要何种授权时通过工具发现接口tools API / MCPlistTools获取工具清单读取每个工具的annotations字段提取作用域信息结合该用户的 Connected Account 已授权范围做比对决定是否向用户发起授权或降级提示。这种运行时自省方式比维护一份手工同步的 scope 清单更可靠也正是官方知识强调inspect tool annotations from the tools API instead of relying only on static docs的原因。四、串联完整接入流程与可参考实现把上述三节串成一条完整的 Gong 接入流水线创建 Gong Auth Config不包含任何客户的 Base URL参考 python/examples/auth_configs.py按客户发起连接收集 Access Key、Access Key Secret、Gong URL调用connected_accounts.initiate()传入auth_scheme.basic(options{...})或使用托管 Connect Link /session.authorize()让客户自行填写可选连接 MCP 工具集并通过listTools的annotations字段读取 Gong 工具作用域做权限判断执行工具与运维按user_id指定执行用户必要时用enable/disable/delete管理账号生命周期并订阅composio.connected_account.expiredWebhook 事件在凭据过期时触发重新授权参考 docs/content/docs/authentication/index.mdx。仓库中可继续深入研读的参考文件知识源文档docs/kb/source/toolkits/gong/public.md即本指南的原始依据站点发布版docs/content/kb/guide/toolkits-gong.mdxAuth Config 完整示例python/examples/auth_configs.pyConnected Account 完整示例python/examples/connected_accounts.pyBASIC认证方案构造实现python/composio/core/models/connected_accounts.py#L205-L223Connected Account 生命周期文档docs/content/docs/auth-configuration/connected-accounts.mdx认证体系总览docs/content/docs/authentication/index.mdx自定义认证参数含base_url覆盖能力docs/content/docs/auth-configuration/custom-auth-params.mdx小结Gong 工具包接入的三大关键决策可以浓缩为三条原则Base URL 是用户级数据必须在连接时动态传入Basic Auth 三字段Access Key、Access Key Secret、Gong URL通过auth_scheme.basic()在发起连接时提交或交给托管 Connect Link 收集MCP 工具作用域以listTools返回的annotations为准而非静态文档。遵循这三条原则即可在 Composio 上构建出支持多客户、多租户隔离的稳定 Gong 集成。【免费下载链接】composioComposio powers 1000 toolkits, tool search, context management, authentication, and a sandboxed workbench to help you build AI agents that turn intent into action.项目地址: https://gitcode.com/GitHub_Trending/co/composio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考