# @dialectlabs/sdk 中文文档

规范地址：https://npmcn.com/package/%40dialectlabs/sdk/

版本：2\.0\.0-beta\.7
npm 元数据更新时间：2025-06-18T16:40:18.490Z
中文译文更新时间：2026-11-12T06:33:33.594Z
软件包许可：Apache-2\.0

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

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

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

- 包体积（解压后）：845 kB，8 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：7 个
- 首次发布：2022-06-14T21:50:10.790Z
- 最新版本发布：2025-06-18T16:40:18.259Z
- 近 30 天下载量：8869（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：91（近 12 个月 0 个）

## 中文简介

## 概览

## 安装

```sh
npm install @dialectlabs/sdk
```

也可以使用：`pnpm add @dialectlabs/sdk`、`yarn add @dialectlabs/sdk`、`bun add @dialectlabs/sdk`

## README

# SDK 软件

## 概览

Dialect SDK是一个单一的打字库,用于与Dialect的上下链资源进行交互. 这些资源包括:

### 通讯

所有消息,用户给用户或Dapp给用户,都由同一Dialect消息协议提供动力,协议支持链上和链外消息. 有了SDK的讯息,你可以:

-   查看所有信件线索
-   创建并删除线索,( d)
-   在线索内发送消息( a) .

### Dapp 通知和订阅

除了通訊外,Dialect还支持一个API,用于Dapp通过Dialect通訊协议以及包括电子邮件,Telegram,和SMS在内的web2频道向用户发送通知.

为了支持这一点,Dialect SDK包括了API用于:

-   应用他们的留言键盘来注册自己.
-   钱包选择从 dapps 接收信件.
-   钱包来配置他们想要接收的 Dapp 消息的频道,包括钱包(使用 Dialect 协议),电子邮件,Telegram, & SMS.

### 认证

-   对于所有链上交易,认证和授权被烤入,因为钱包必须签入所有交易.
-   对所有脱链请求, Dialect API 要求使用钱包认证所有请求 `signMessage` 方法,证明提出请求的实体对所涉的钱包钥匙包拥有保管权.

## 通讯

### 创建 SDK 客户端连接您的钱包( C)

运行 [`create-solana-sdk` 示例脚本](https://npmcn.com/package/%40dialectlabs/sdk/examples/create-solana-sdk.ts)。 。 。 .

要使用 Dialect SDK , 您需要创建 SDK 客户端, 并使用指定的钱包 :

```typescript
import {
  Backend,
  ConfigProps,
  Dialect,
  DialectSolanaWalletAdapterWrapper,
  EncryptionKeysStore,
  NodeDialectSolanaWalletAdapter,
  TokenStore,
} from '@dialectlabs/sdk';
import type {
  DialectSdk,
} from '@dialectlabs/sdk';

// Backends tell the SDK where messages can be sent and received to, & in what priority.
const backends = [Backend.DialectCloud, Backend.Solana];
// Provide configuration options for how to target the DialectCloud backend
const dialectCloud = {
  url: 'https://dialectapi.to',
  // Provide a keystore for storing authentication headers, which are expiring tokens generated from the wallet's signMessage method
  tokenStore: TokenStore.createInMemory(),
};
// Convenience for setting smart defaults for backends. Variables above are optional if this is provided.
const environment = 'production';
// Provide a keystore for storing e.g. encryption & decryption keys.
const encryptionKeysStore = EncryptionKeysStore.createInMemory();
// Provide override parameters for Solana backend configuration, including RPC url
const solana = {
  rpcUrl: 'https://api.mainnet-beta.solana.com',
};
// A node wallet for running in a node environment. N.b. this would be a mobile or web wallet object instead. The Wrapper class handles conversion to the API expected by the Dialect SDK, but is mostly consistent with expected wallet APIs.
const wallet = DialectSolanaWalletAdapterWrapper.create(
  // IMPORTANT: must set environment variable DIALECT_SDK_CREDENTIALS
  // to your dapp's Solana messaging wallet keypair e.g. [170,23, . . . ,300]
  NodeDialectSolanaWalletAdapter.create(),
);

// Now construct the SDK client from all of the above
const sdk: DialectSdk = Dialect.sdk({
  backends,
  dialectCloud,
  environment,
  encryptionKeysStore,
  solana,
  wallet,
} as ConfigProps);
```

### 获取钱包的现有线索

运行 [`get-threads` 示例脚本](https://npmcn.com/package/%40dialectlabs/sdk/examples/get-threads.ts)。 。 。 .

```typescript
import type {
  // ... previous imports
  Thread,
  ThreadId,
} from '@dialectlabs/sdk';

// ... code from previous examples

// Fetch all threads the wallet is a part of, across all provided backends
const threads: Thread[] = await sdk.threads.findAll();
```

注意这里返回的线程是从链上和链外后端获取的 : `Backends.Solana` 打开 `Backends.DialectCloud`。 。 。 .

### 以 id 读取线索消息获取线索( R)

运行 [`get-messages` 示例脚本](https://npmcn.com/package/%40dialectlabs/sdk/examples/get-messages.ts)。 。 。 .

```typescript
import type {
  // ... previous imports
  Message,
} from '@dialectlabs/sdk';

// ... code from previous examples

// Choose a given thread
const thread = threads[0];

// Fetch for a single thread by its id. N.b. the ThreadId type specifies both the address of the thread *as well as* the specified backend; threads of a given id may exist in any kind of backend. See the ThreadId type.
const query: FindThreadByIdQuery = {
  id: thread.id,
}
const thread = await sdk.threads.find(query);
// Call the messages() method to read messages
const messages = await thread.messages();
```

### 创建新线索

运行 [`create-thread` 示例脚本](https://npmcn.com/package/%40dialectlabs/sdk/examples/create-thread.ts)。 。 。 .

```typescript
import type {
  // ... previous imports
  ThreadMemberScope,
} from '@dialectlabs/sdk';

const recipient = new PublicKey('3vuCFLbVWsNeWgyxkb2xiLQuxKDW83HWiTMmodT8gmtk') // Make this arbitrary
const command: CreateThreadCommand = {
  encrypted: false,
  me: {
    scopes: [ThreadMemberScope.ADMIN, ThreadMemberScope.WRITE],
  },
  otherMembers: [
    {
      publicKey: recipient,
      scopes: [ThreadMemberScope.ADMIN, ThreadMemberScope.WRITE],
    },
  ],
};
// Uses the default backend.DialectCloud offchain. The command above may optionally take a preferred backend.
const thread = await sdk.threads.create(command);
```

### 发送消息

运行 [`send-message` 示例脚本](https://npmcn.com/package/%40dialectlabs/sdk/examples/send-message.ts)。 。 。 .

```typescript
// ... code from previous examples

const text = 'gm world';
const command: SendMessageCommand = {
  text,
}
await thread.send(command);
```

### 删除线索

运行 [`delete-thread` 示例脚本](https://npmcn.com/package/%40dialectlabs/sdk/examples/delete-thread.ts)。 。 。 .

```typescript
const threadId = thread.id; // Keep for re-querying to confirm deletion
await thread.delete();
const query: FindThreadByIdQuery = {
  id: threadId,
};
const refetchedThread = await sdk.threads.find(query); // Will be null
```

## Dapp 通知和订阅

以下例子描述了如何使用 Dialect SDK 来管理 dapp并通知相关的资源.

### 注册一个 dapp

要让用户订阅您的通知, 您首先需要在 Dialect API 中创建 dapp .

```typescript
// Construct the SDK client from all of the above. Let's use 'development' for the environment, and pass
const environment = 'development';
const dialectCloud = {
  // N.b. we omit the url value here, since 'development' will default to https://dev.dialectapi.to.
  tokenStore: TokenStore.createInMemory(),
};
// Use ConfigProps values from example above.
const sdk: DialectSdk = Dialect.sdk({
  backends,
  dialectCloud,
  environment,
  encryptionKeysStore,
  solana,
  wallet,
} as ConfigProps);

// N.b. this created dapp is associated with the wallet public key connected to the sdk instance.
const dapp = await sdk.dapps.create({
  name: 'My test dapp',
  description: `My test dapp's description.`
});
```

请注意,所有与 Dialect 创建的 dapp 都必须与钱包键盘连接 。 此键盘将被用于所有对 Dapp 的认证请求, 以及所有用户信件 .

这个 `sdk.dapps.create` 上方方法使用连接到 `sdk` 客户实例.

您每个公钥只能创建一个 dapp .

**应用白名单**

Dialect管理一个与Dialect合并的已核实的Dapp列表. 虽然所有消息都是通过钱包和密钥夹完成的, 并沿着核心消息链发送.

是否继续维持这一清单有待确定.

请联系我们 [推特上说](https://twitter.com/saydialect) 或者给我们发邮件 [哈啰 @ dialect.to](mailto:hello@dialect.to)。 。 。 .

### 拿起你的电话

如果你的钱包与你的 `sdk` 客户端实例与 dapp 相关, 您可以通过简单化获取 dapp 记录 `find` 电话.

```typescript
const dapp = await sdk.dapps.find();
```

### 拿起所有的达普

您可以在 Dialect API DB 中查询所有注册的 Dapp .

```typescript
const dapps = await sdk.dapps.findAll();
```

### 为给定钱包获取所有白列的 dapp 信件

Dialect SDK 提供了一个端点,用于查询从白列 Dapps 中获取的用于给定钱包的所有信件. 这对提供单一的通知是方便的.

```typescript
// ... code from previous examples

const messages = await sdk.wallet.dappMessages.findAll({
  dappVerified: true,
});
```

## 常见问题

### @dialectlabs/sdk 是什么？

概览

### 如何安装 @dialectlabs/sdk？

在项目目录运行 npm install @dialectlabs/sdk，或使用 pnpm add / yarn add / bun add。

### @dialectlabs/sdk 支持 TypeScript 吗？

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

### @dialectlabs/sdk 支持 ESM 还是 CommonJS？

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

### @dialectlabs/sdk 可以商用吗？

@dialectlabs/sdk 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @dialectlabs/sdk 的下载量有多少？

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

### @dialectlabs/sdk 还在维护吗？

最新版本 2\.0\.0-beta\.7 发布于 2025/06/19（1\.4 年前）；至今共发布 91 个版本，其中过去 12 个月发布了 0 个；首次发布于 2022/06/15。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

