@callimacus/thamyr-react-native

中文文档
4.23.5发布于 2026/11/09SEE LICENSE IN LICENSE.mdTypeScriptES Module近 30 天下载 5569

Thamyr 本地软件包

中文使用文档
文档目录7 节
  1. 开始
  2. 和网络SDK有什么不同
  3. 语音记录返回字节
  4. 未再出口的钩子
  5. 有意追踪
  6. 运输, 和为什么声音还没有发挥作用
  7. 值得我们知道的事

@callimacus/thamyr-反应-内在

反应原生(出品和裸出品)的Thamyr SDK. 包起来 @callimacus/thamyr-react,所以钩,存储,和反应类型是一样的 网络SDK所暴露的——这个软件包将它们缩小到在本地和本地 增加了本地语音录音机.

npm install @callimacus/thamyr-react-native

同伴依赖性 : react >=18, (中文(简体) ), react-native >=0.72。 。 。 .

开始

import {useInitThamyr, useThamyr, useConnection} from '@callimacus/thamyr-react-native';

function App() {
  useInitThamyr({clientId: 'cal-pk-…'});
  return <Chat />;
}

function Chat() {
  const {history, sendEvent} = useThamyr();
  const {status} = useConnection();
  // …
}

和网络SDK有什么不同

这里没有列出的一切 行为都一样,因为它是完全相同的 代码.

语音记录返回字节

网络录音员给你一个 Blob这个给你 Uint8Array音频 以 inputEvent.data.file 超过 socket.io, 只有输入的数组存活 原生之行:反应原生 Blob 是进入本地的把手 BlobModule的字节在JS从不存在,所以插座。 iO不能读它,和 new File([...]) ——网络路径使用的东西——没有有用的本土等同物. 服务器将文件名降下, MIME 则以两种方式( socket. io 二进制 陷害他们,所以没有损失.

录音机需要一个适配器,您从 expo-audio数字 :

import {useMemo} from 'react';
import * as ExpoAudio from 'expo-audio';
import {
  createExpoAudioAdapter,
  useVoiceRecorder,
  useThamyr,
  SLInputEventType,
  UserInteractionType,
} from '@callimacus/thamyr-react-native';

function VoiceButton() {
  const {sendEvent} = useThamyr();
  const adapter = useMemo(() => createExpoAudioAdapter(ExpoAudio), []);

  const {state, audioLevels, startRecording, stopRecording, error} = useVoiceRecorder({
    adapter,
    onRecordingComplete(audio) {
      sendEvent(UserInteractionType.CREATE_ROUND, {
        inputEvent: {type: SLInputEventType.question, data: {value: '', file: audio}},
      });
    },
  });
  // …
}

适配器是故意通过而不是默认的. 如果这个软件包 进口 expo-audio metro会静态地解决 消费者,所以一个从不记录音频的应用程序 将无法捆绑仅仅因为没有 安装了它。 将模块移交保存 expo-audio 从这里 软件包的依赖性图表,所以它输入检查和测试时没有本地的 工具链。 对于录音机之外 expo-audio,执行 VoiceRecorderAdapter 自己来.. start编号 :stop编号 :cancel 在任何原生模块之上.

后记录自动停止 silenceDuration (默认值1800毫秒) silenceThreshold (默认 - 45 dBFS),和硬站 maxDuration (默认) 联合国.

未再出口的钩子

不详为什么相反
useTtsAudio构造一个 HTMLAudioElement (单位:千美元)new Audio(url)(中文(简体) )播放来自 extractTtsAudio(block.data) 带有 expo-audio 播放器
uiObserver 配置快照意味着 querySelectorAll + 键 getBoundingClientRect尚未提供当地资料(SOL-1084)
setConsent, (中文(简体) ), setGeo, (中文(简体) ), initIntent,, , , , , , , , @callimacus/intent浏览器 API@callimacus/intent/native - 见下文

extractTtsAudio 编辑 TtsAudio 类型 为: 导出后,您可以获取 音频 URL 出自回复, 随你喜欢播放; 只有网络播放 钩子不见了.

有意追踪

意向网页的构建完全不能在本地导入: 它读取 localStorage 财务报告和审定财务报表 document 在模块范围中, 它在赫尔墨斯之前投出 您的应用程序使。 因此,SDK在“原生反应”中解决 @callimacus/thamyr-core是因为 react-native (a) 在没有意图的情况下 函数作为警告- 即时出现, 所以共享代码不会崩溃, 但它们 什么都别做.

意取自自有出土入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入出入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入 直接拨接:

import * as RN from 'react-native';
import {MMKV} from 'react-native-mmkv';
import {createNativeAdapters, initIntentNative, mmkvStorage} from '@callimacus/intent/native';

initIntentNative({
  clientId: 'cal-pk-…',
  consent: true,
  adapters: createNativeAdapters(RN, {storage: mmkvStorage(new MMKV())}),
});

运输, 和为什么声音还没有发挥作用

文本聊天有用 . 发送音频不,原因也不是这个软件包 也不是你的应用 —— 是TLS 不匹配将连接强制到传输上 无法在 React Industrial 上携带二进制。 细节很重要 因为症状 这是误导.

本地反应无法打开 WebSocket 到 api.callimacus.ai。 。 。 . 主持人是 TLS 1. 3 - 仅 - 它拒绝用 TLS 1.2 握手 protocol_version 警报( 已核实) openssl s_client -no_tls1_3) (中文(简体) ). 反应 本地的WebSocket以近代号1006和 OSStatus -9836,这是苹果 errSSLPeerProtocolVersion ("不良协议") (原始内容存档于2018-09-29). version". 反应土著 HTTP 密码 堆栈与同一主机是好的,因为 穿过 NSURLSession,它的确谈判 TLS 1.3 ——符合 使用旧的安全运输路线的 WebSocket 路径没有.

SDK因此倒回了HTTP长波,而文本在它之上起作用.

但二进制无法在回放原生投票中通过. 引擎.io的民调 有效载荷是文本,所以 encodePayload 编码每个数据包 supportsBinary: false (“二进制包的强制基数64编码”),和 engine.io-parser 浏览器构建路径 encodeBlobAsBase64(new Blob([data])) – 虽然React Industrial拒绝构建 a 来自 a ArrayBuffer 完全 (“ 创建来自“ ArrayBuffer” 和 'ArrayBufferView' 不支持'). 因此,音频字节被丢入 控制台出错 . forceBase64 无法帮助:投票已经逼迫 正是建立Blob的分支.

通过启用 TLS 1.2 使 React Industrial 使用 WebSocket 迁移 在 API 主机上 (nginx: 保留) TLSv1.3 添加 TLSv1.2 带有匹配的密码 套间). 在韦伯索克特, encodePacket 运行与 supportsBinary: true 手和双手 输入的数组直接到 WebSocket.send() 没有Blob,没有基础64,所以有声 工作时没有进一步的 SDK 更改,文本作为奖金会得到更低的延迟.

在此之前,录音工作 onRecordingComplete 给您正确的字节; 只有发送失败 .

值得我们知道的事

  • UUIDs (英语). 赫尔墨斯船没有全球 crypto核心回归到 crypto.getRandomValues 接下来 Math.random(),所以没有扔,但 安装 react-native-get-random-values 在条目文件的顶端,您可以得到加密的随机交互标识.
  • gatherClientInfo() 返回空字符串 userAgent, (中文(简体) ), language,以及 screenResolution 当地人——没有 navigator.userAgent 或者说 window.screen屏幕大小 Dimensions 如果你需要的话.
  • 微机权限. 添加 NSMicrophoneUsageDescription (iOS)和 RECORD_AUDIO (Android) (英语). 在博览会下, expo-audio配置插件这样做 .
  • 套接字认证 穿过socket.io's auth 有效载荷,不是 Authorization 页眉 — React Industrial's WebSocket transport 忽略 extraHeaders,服务器读取 handshake.auth.token无需采取行动; 人们注意到,因为被丢掉的头像木头一样令人吃惊.

版本与发布记录

@callimacus/thamyr-react-native 共发布 39 个版本,首次发布于 2026/09/29;过去 12 个月发布了 39 个版本。

版本发布日期距今
4.23.5latest2026/11/09今天
4.23.42026/11/072 天前
4.23.32026/11/062 天前
4.23.22026/11/062 天前
4.23.12026/11/063 天前
4.23.02026/11/053 天前

关于 @callimacus/thamyr-react-native 的常见问题

@callimacus/thamyr-react-native 是什么?

Thamyr 本地软件包

如何安装 @callimacus/thamyr-react-native?

在项目目录运行 npm install @callimacus/thamyr-react-native,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(>=18)、react-native(>=0.72)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@callimacus/thamyr-react-native 支持 TypeScript 吗?

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

@callimacus/thamyr-react-native 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@callimacus/thamyr-react-native 可以商用吗?

@callimacus/thamyr-react-native 使用 SEE LICENSE IN LICENSE.md 许可。许可条款写在包内的独立文件中,请阅读该文件确认可否商用。以上为概括,不构成法律意见,请以许可原文为准。

@callimacus/thamyr-react-native 的下载量有多少?

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

@callimacus/thamyr-react-native 还在维护吗?

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