@ada-cx/messaging-sdk

中文文档
1.10.1发布于 2026/11/06ISCTypeScriptESM + CJS零依赖近 30 天下载 1.8万

TypeScript类型,测试模拟,以及Ada Messaging SDK的薄的CDN加载器. 运行时间总是从Ada的CDN中解析出,从未被捆绑在这个包中.

中文使用文档
文档目录9 节
  1. 安装
  2. 快开始
  3. 每页一个部件
  4. 模块格式
  5. 类型
  6. 测试您的整合
  7. 纸条
  8. 版本和中继验证
  9. 将 CDN 构建

@ada-cx/ message-sdk (英语)

TypeScript类型,测试模拟,以及Ada Message SDK的薄载器.

此软件包从未包含 SDK 运行时间 。 装入器导入运行时间 从Ada的CDN 在页面载荷。 Ada船运行时间修正CDN,和每 页面在下一个负载上接收它们。 这个模式和 @stripe/stripe-js。 。 。 .

安装

npm install @ada-cx/messaging-sdk

快开始

打电话 loadAdaMessaging 用你的机器人手柄。 它装入运行时间, 创建 消息接口,启动部件,并返回接口.

import { loadAdaMessaging } from "@ada-cx/messaging-sdk";

// Module scope: your code holds the only reference.
const ada = await loadAdaMessaging({ handle: "my-bot" });

loadAdaMessaging 从未将接口指定为 window 或任何其他 全球。 将返回的引用保留在模块范围中, 只有您自己的代码 可以到达它。 页面上的每个脚本都可以达到一个全局. 这个 createAdaEmbedInterface 导出仅作为遗留存在 window.adaEmbed 从脚本- tag 设置迁移的页面的相容外观 .

使用 loadMessagingSdk 如果您想要运行时模块而不启动 部件, 例如在需要部件前预加载 :

import { loadMessagingSdk } from "@ada-cx/messaging-sdk";

const sdkModule = await loadMessagingSdk();

loadMessagingSdk 提醒飞行中的导入。 同时通话 分享一个 装入。 两个装入器都拒绝装入失败的装入 MessagingSdkLoadError 财务报告和审定财务报表 允许重试 :

import { MessagingSdkLoadError } from "@ada-cx/messaging-sdk";

try {
    await loadAdaMessaging({ handle: "my-bot" });
} catch (error) {
    if (error instanceof MessagingSdkLoadError) {
        console.error(error.code); // "invalid_cdn_base" | "invalid_build_sha" | "unstamped_build_sha" | "sdk_import_failed" | "sdk_module_invalid"
    }
}

如果两种进口都失败, cause 保存默认根输入出错并只读 fallbackCause 保留倒数键入错误. 两个出错都保留了原来的原因链. 无效后退模块使用相同的错误属性并保存 sdk_module_invalid 和倒置错误消息.

每页一个部件

只有一个消息界面可以在页面上运行,而且 loadAdaMessaging 执行这个为你。 屡次打来回相同的回忆承诺 解析到同一起始界面。 第一个呼叫的设置获胜,并且 后来的呼叫从不启动第二个部件. 当后来的电话传来不同的时候 设置,加载器记录一个控制台警告并忽略新的设置. 因此,电话在不止一次的代码中是安全的,例如React 严格模式发展效果. 你不需要缓存承诺 你自己来.

一个失败的负载或开始清除备忘,所以以后的调用可以重试.

通过返回的接口控制部件生命周期 . ada.stop() 将部件撕下,然后 ada.start(settings) 同样的 界面再次启动。 A 类 loadAdaMessaging 后调用 stop() 返回时 相同的停止接口。 它不会重新启动部件 。 装入器日志 当返回已停止的接口时, 控制台警告, 所以打电话 start(settings) 在界面上再次运行部件.

模块格式

一揽子船舶无害环境管理和共同JS都是两个条目的组成部分。 弹药和 无害环境管理运行时间使用 import 条件。 捷运和其他通用JS跑车 使用该 require 条件。 TypeScript 解析两个条目 moduleResolution bundler, (中文(简体) ), node16和遗产 node10 设置.

类型

直接导入任何公共类型 。 类型导入添加了零运行时间代码.

import type {
    AdaMessagingInterface,
    AdaMessagingSettings,
    AdaMessagingStartOptions,
    PublicMessage,
    ResetParams,
} from "@ada-cx/messaging-sdk";

AdaMessagingInterface 是接口 loadAdaMessaging 决定。 这个 AdaEmbedInterface 名称仍可用作其别名.

运行时符号, 如 AdaMessagingClient 财务报告和审定财务报表 createAdaEmbedInterface 仅作为类型导出。 从 loadMessagingSdk()。 。 。 . createAdaEmbedInterface 用于从 遗产 window.adaEmbed 合同;使用新的整合 loadAdaMessaging。 。 。 .

window.adaSettings, (中文(简体) ), new AdaMessagingClient(config), (中文(简体) ), createAdaEmbedInterface(initialSettings),以及 adaEmbed.start(settings) 接受 crossWindowPersistence 作为布尔或 { enabled: boolean }。 。 。 . SDK 使用布尔值 : enabled这样 { enabled: false } 禁用持久性. 对于无效值,SDK记录每页负载一次控制台警告.

无效的覆盖保留保留主机设置或 window.adaSettings 倒计时. 无效的构造值保存 window.adaSettings 倒计时. 没有设置, 持久性默认继续 . 类型脚本设置尚存 boolean。 。 。 .

测试您的整合

这个 ./testing 条目提供了消息界面的内存模拟. 你的单位测试从不碰CDN.

import { createMockAdaMessaging } from "@ada-cx/messaging-sdk/testing";

const ada = createMockAdaMessaging();

await ada.sendMessage("hello");
expect(ada.calls).toContainEqual({
    method: "sendMessage",
    args: ["hello"],
});

// Simulate an SDK event for your subscribers.
await ada.subscribeEvent("ada:conversation:message", onMessage);
ada.$emit("ada:conversation:message", { message_id: "m1" });

模拟记录每一次通话 calls。它保持光状态:已发送信件 显示在 getMessages(),以及 open编号 :close 驱动 isOpen()。通过 用自己的间谍替换任何方法的覆盖 :

const ada = createMockAdaMessaging({ getMessages: vi.fn(async () => []) });

纸条

装入器以全动态的 URL 导入运行时间 。 导入是 附加说明 /* webpackIgnore: true */ 财务报告和审定财务报表 /* @vite-ignore */这样 webpack和Vite留给浏览器解决. 不复制导入 输入自己的代码,没有这些说明。 如果你的捆绑者仍然重写 动态导入,配置以忽略导入 https: URLs (英语).

版本和中继验证

Npm版本只涵盖加载器,类型,和模拟. 从来没有 锁定运行时间。 运行时间总是从Ada的CDN推出中解析出 装入.

要验证任何页面上的特定运行时间,请添加 ?ada-messaging-version=<version> 查询参数到页面 URL。 数值 接受一个 pr-<N> 预览构建或主构建的 git SHA 。 无效 或无值回落到稳定的推出.

要对不同的资产主机进行验证,将其根传递给加载器. 阿达 当您安排生产前验证时, 给出主机值 :

await loadAdaMessaging(
    { handle: "my-bot" },
    { cdnBase: "<ada-provided-asset-host>" },
);

首选生产根是 https://messaging-assets.ada.support/。 。 。 . CSP已经允许的制作页面 static.ada.support,使用时 cdnBase: "https://static.ada.support/messaging/"。 。 。 . 支持生产根的套件输出为 FALLBACK_MESSAGING_CDN_BASE。 。 。 .

无 cdnBase,加载器从静态根自动重试一次 当默认导入失败时, 包括 CSP 和网络失败 . 如果默认的靴子在显示失败或运行时间失败后拒绝, 它会驱逐其共享 window.__AdaMessagingSdkBootstrap 答应. 静态的靴子可以独立解决. 如果解决方案尚未解决或已成功,将分享承诺. 重试保存 pinBuildSha 联 合 国 <sha>/sdk/index.js 路径. 成功的无钉倒置使用静态根来进行显示和帧. 明确 cdnBase 禁用自动倒置. 模块无效和验证错误保留其原始代码和消息. 如果两种进口都失败, sdk_import_failed 两个尝试的 URL 名称.

在成功倒计时后,加载器记录每页1个警告,不进行调试记录. 警告包括原出错作为其第二个控制台参数. A 类 TypeError 从默认导入中生成获取失败警告 :

[Ada] Loaded the Messaging SDK from https://static.ada.support/messaging/ because the default root https://messaging-assets.ada.support/ was blocked or unavailable. Add https://messaging-assets.ada.support to script-src, connect-src and frame-src, or pass cdnBase: "https://static.ada.support/messaging/".

对于 CSP 块,请更新您在获取失败警告中显示的宿主策略 .

其他错误产生评估失败警告:

[Ada] Loaded the Messaging SDK from https://static.ada.support/messaging/ because the module at https://messaging-assets.ada.support/sdk.js failed to evaluate (Error: boom). This is an Ada-side problem, not your host's CSP. Report it to Ada.

对于评估失败的警告,将原错误报告给Ada. 网络失败也会产生取出失败的警告 . 丢出模块 TypeError 评估期间还生成取出失败警告,因此分类不能证明是CSP块.

从请求的根成功加载不会产生回落警告 .

将 CDN 构建

软件包导出 CDN_BUILD_SHA。值是 Git 承诺的 SHA 这个 npm 版本发布 。 阿达各部署 承诺的运行时间 在一个不可改变的SHA根 在CDN。 因此,价值 命名与 npm 版本相关的 CDN 构建 .

传SHA作为 pinBuildSha 装填器选项 。 装填器然后跳过 推出靴子和进口 建立不可改变的入口, <cdnBase>/<sha>/sdk/index.js,直接为:

import {
    CDN_BUILD_SHA,
    isCdnBuildShaStamped,
    loadAdaMessaging,
} from "@ada-cx/messaging-sdk";

if (isCdnBuildShaStamped()) {
    await loadAdaMessaging({ handle: "my-bot" }, { pinBuildSha: CDN_BUILD_SHA });
}

不建议生产平宁. 一个被钉住的跑步时间错过了Ada的 修复和推出。 被绑定的运行时间也可以在后来的服务器合同之前 改变并停止工作。 使用 Pin 只调试一个问题, 验证一个 或根据已知的运行时间复制报告.

该选项接受任何部署主机的全40个特性的六分法 建设。 装载器拒绝带有下列值的任何其他值: invalid_build_sha 错误 代码。 只有已出版的软件包携带着真实的SHA. 在存储器中 本地制作的副本, CDN_BUILD_SHA 是一个40-零的占位符,并且 isCdnBuildShaStamped() 返回时 false。装载器拒绝占位符 与 unstamped_build_sha 错误代码 .

Npm 发布和CDN 部署相同承诺平行运行. 单位 在发布后的第几分钟, 针头可以失败 sdk_import_failed 直到部署完成 如果部署失败 建造从不存在。 在这两种情况下,无担保的违约都不受影响.

pinBuildSha 编曲: cdnBase。被钉入的条目将在 您通过的资产主机 .

版本与发布记录

@ada-cx/messaging-sdk 共发布 49 个版本,首次发布于 2026/08/24;过去 12 个月发布了 49 个版本。

版本发布日期距今
1.10.1latest2026/11/06今天
1.10.02026/11/051 天前
1.9.52026/11/033 天前
1.9.42026/10/316 天前
1.9.32026/10/298 天前
1.9.22026/10/279 天前

其他发布通道:setup → 1.0.0-setup.0。

关于 @ada-cx/messaging-sdk 的常见问题

@ada-cx/messaging-sdk 是什么?

TypeScript类型,测试模拟,以及Ada Messaging SDK的薄的CDN加载器. 运行时间总是从Ada的CDN中解析出,从未被捆绑在这个包中.

如何安装 @ada-cx/messaging-sdk?

在项目目录运行 npm install @ada-cx/messaging-sdk,或使用 pnpm add / yarn add / bun add。

@ada-cx/messaging-sdk 支持 TypeScript 吗?

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

@ada-cx/messaging-sdk 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@ada-cx/messaging-sdk 可以商用吗?

@ada-cx/messaging-sdk 使用 ISC 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@ada-cx/messaging-sdk 的下载量有多少?

根据 npm 官方下载统计,@ada-cx/messaging-sdk 在 2026/10/05 – 2026/11/03 这 30 天内被下载 18,388 次,日均约 613 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@ada-cx/messaging-sdk 还在维护吗?

最新版本 1.10.1 发布于 2026/11/06(今天);至今共发布 49 个版本,其中过去 12 个月发布了 49 个;首次发布于 2026/08/24。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。