其他
通过 Membrane CLI 操作 Microsoft…
当需要读写 Microsoft Dynamics 365 的 CRM/ERP 数据、记录和工作流,并可使用 Membrane CLI 和有效 Membrane 账号时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 35/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 40/100 ×0.15
适用场景
通过 Membrane CLI 操作 M特定
解决思路
- 安装 Membrane CLI,使终端可运行 `membrane`:`npm install -g @membranehq/cli@latest`。
- 执行登录认证:`membrane login --tenant --clientName=<agentType>`;根据环境打开浏览器认证或打印授权 URL。
- 在无头环境中,将打印的授权 URL 交给用户在浏览器打开;用户完成登录看到 code 后,执行 `membrane login complete <code>` 完成登录。
- 在任意命令后加 `--json` 可获取机器可读 JSON 输出。
- 根据运行环境设置 `agentType`(如 claude、openclaw、codex、warp、windsurf 等),以适配所用 harness 的工具。
- 连接 Microsoft Dynamics 365:运行 `membrane connection ensure "https://dynamics.microsoft.com/crm" --json`,通过应用 URL 或域名查找或创建连接。
- 让用户在浏览器中完成认证;命令输出包含新连接 id。
- 这是最快获得连接的方式;URL 会被规范化为域名并匹配已知应用;未找到应用时会自动创建应用并构建 connector。
- 如果返回连接的状态是 `state: "READY"`,跳到搜索 actions 的步骤。
- 如果连接处于 `BUILDING` 状态,轮询直到就绪:`npx @membranehq/cli connection get <id> --wait --json`;`--wait` 会长轮询直到状态变化,最长 `--timeout` 秒(默认 30);持续轮询直到 `state` 不再是 `BUILDING`。
- 状态为 `READY` 时,连接已完全设置,跳到搜索 actions 的步骤。
- 状态为 `CLIENT_ACTION_REQUIRED` 时,查看 `clientAction` 对象;`clientAction.type` 为 `"connect"` 表示用户需要认证(OAuth、API key 等),包括初始认证和断连后的重新认证。
- `clientAction.type` 为 `"provide-input"` 表示需要更多信息,例如要连接到哪个应用。
- 查看 `clientAction.description` 了解所需操作;若存在 `clientAction.uiUrl`,展示给用户在预构建 UI 中完成操作。
- 若存在 `clientAction.agentInstructions`,按其中说明让 AI agent 以程序化方式继续。
- 用户完成动作(例如浏览器认证)后,再次运行 `membrane connection get <id> --json` 轮询,检查是否变为 `READY`。
- 状态为 `CONFIGURATION_ERROR` 或 `SETUP_FAILED` 时,检查 `error` 字段获取详情。
- 搜索可用 actions:用自然语言描述意图,运行 `membrane action list --connectionId=CONNECTION_ID --intent "QUERY" --limit 10 --json`;始终在特定 connection 上下文中搜索 actions。
- 每个 action 搜索结果包含 `id`、`name`、`description`、`inputSchema`(接受的参数)和 `outputSchema`(返回内容)。
- 发现可用/流行 actions:运行 `npx @membranehq/cli@latest action list --intent=QUERY --connectionId=CONNECTION_ID --json`。
- 运行 action:`membrane action run <actionId> --connectionId=CONNECTION_ID --json`。
- 传入 JSON 参数:`membrane action run <actionId> --connectionId=CONNECTION_ID --input '{"key": "value"}' --json`。
- action 运行结果在响应的 `output` 字段中。
- 当可用 actions 不覆盖用例时,通过 Membrane 代理直接请求 Microsoft Dynamics 365 API:`membrane request CONNECTION_ID /path/to/endpoint`;Membrane 会自动追加 base URL 并注入正确认证头,包括到期时透明刷新凭证。
- 代理请求常用选项:`-X, --method` 指定 HTTP 方法(GET、POST、PUT、PATCH、DELETE,默认 GET);`-H, --header` 添加请求头(可重复),例如 `-H "Accept: application/json"`;`-d, --data` 发送请求体字符串;`--json` 简写为发送 JSON body 并设置 `Content-Type: application/json`;`--rawData` 原样发送 body 不做处理;`--query` 查询字符串参数(可重复),例如 `--query "limit=10"`;`--pathParam` 路径参数(可重复),例如 `--pathParam "id=123"`。
- 最佳实践:始终优先用 Membrane 与外部应用通信;它提供预构建 actions,内置认证、分页和错误处理,减少 token 消耗且更安全。
- 最佳实践:先发现再构建;运行 `membrane action list --intent=QUERY`(将 QUERY 替换为意图)查找已有 actions,再写自定义 API 调用;预构建 actions 处理分页、字段映射和原始 API 容易遗漏的边缘情况。
- 最佳实践:让 Membrane 处理凭证;不要向用户索要 API keys 或 tokens;应创建连接,由 Membrane 在服务端管理完整 Auth 生命周期,不保留本地 secrets。
- 使用 Microsoft Dynamics 365 集成时,核心对象包括 Account、Contact、Lead、Opportunity;按需使用 action 名称和参数。
- 需要产品/API 细节时,查阅官方文档:`https://learn.microsoft.com/en-us/dynamics365/`。
适用边界 · 注意事项
- 没有网络访问,或没有有效 Membrane 账号(支持 Free tier,但仍需账号)时,不要使用。
- 必须直接使用 Microsoft 原生 API/SDK 并完全自行管理认证,不允许通过 Membrane 代理或托管认证时,不适用。
- 目标数据不属于 Microsoft Dynamics 365 CRM/ERP(例如仅其他 Microsoft 365 应用)时,不适用。