小冰-私有化
  1. 大脑
小冰-私有化
  • 交付流程须知
  • 接口调用须知
  • 性能测试报告
  • 部署须知
    • 信创可用环境 - 整合
    • 私有化 步骤一 -- 前期接洽沟通
    • 私有化 步骤二 -- 业务定版封包
    • 私有化 步骤三 -- 售后升级响应
  • 基础服务
    • 概述
    • 常见问题
    • 技术文档
    • 数据准备
      • 模型迁移
      • 范例视频迁移
      • 分配租户形象和声音
      • 租户创建(开箱操作)
  • TTS
    • 概述
    • 技术文档
    • 常见问题
    • 接口返回码枚举
    • 接口
      • 查询声音列表
      • 实时流式音频接口(300字以内)
      • 实时同步音频接口(3000字以内)
      • 异步音频接口(10万字以内)
      • 查询异步tts结果
      • 查询tts权益
  • 视频生成
    • 概述
    • 技术文档
    • 常见问题
    • 接口
      • 接口使用须知
      • 视频创建接口
        • 获取数字员工列表
        • 获取数字员工详情
        • 批量获取数字员工详情
        • 创建透明虚拟人视频
        • 创建编辑器视频
        • 获取任务结果
        • 获取播报相关权益,
        • 查询声音列表
      • 声音形象定制
        • 获取训练的权益
        • 提交视频训练任务
        • 获取视频训练任务结果
        • 确认预览结果
        • 提交音频训练任务
        • 获取音频训练任务结果
  • 交互
    • 概述
    • 技术文档
    • 交互SDK
    • 常见问题
    • 接口
      • 生成签名Signature
      • 获取所有虚拟人信息
      • 获取虚拟人资源(带状态)
      • 获取虚拟人可用的声音信息
      • 创建
    • 其他
      • Demo页面验证流程
  • ASR
    • 概述
    • 部署架构图
    • 常见问题
    • 接口
  • 训练平台
    • 概述
    • 技术文档
    • 常见问题
  • 大脑
    • 概述
    • 技术文档
    • 常见问题
    • 接口鉴权
    • 示例代码
    • 对话URL获取
    • 接口
      • 流式对话接口(SSE)
  • ws交互接口
  1. 大脑

示例代码

Typescript代码示例
import * as CryptoJS from 'crypto-js';

export function getTime() {
  const timestamp = new Date().getTime();
  const timestampShort = timestamp.toString().substring(0, 10);
  return parseInt(timestampShort);
}

export function calcSignature(appkey: string, timestamp: number, bodyStr: any) {
  const stringToCheckSum = bodyStr + appkey + timestamp;
  const signature = CryptoJS.SHA512(stringToCheckSum).toString(CryptoJS.enc.Hex);
  return signature;
}

// openApiConfig的数据从接口获取
const openApiConfig = {
  key: 'test',
  secret: 'test',
  chatUri:
    'https://dhb-openapi-int.xiaoice.com/api/v1/openapi/organizations/vhb-org-xxxx/bots/xxxx/sessions/<session_id>/streamChat',
};

const sessionId = '7af3b9d3-34e2-45f4-9475-315a7e2d6515';

export const streamAction = (data: any) => {
  data.userId = 'fake_user_id';
  const key = openApiConfig?.key;
  const secret = openApiConfig?.secret;
  const timestamp = getTime();
  const signature = calcSignature(secret, timestamp, JSON.stringify(data));

  return () =>
    fetch(`${openApiConfig?.chatUri.replace('<session_id>', sessionId || '')}`, {
      method: 'POST',
      body: JSON.stringify(data),
      headers: {
        key,
        timestamp: timestamp.toString(),
        signature: signature,
      },
    });
};

export const initChat = async (
  fetchAction: () => Promise<any>,
  {
    onError,
    onCloseMessage,
  }: {
    onError?: (err: any) => void;
    onCloseMessage?: (result: string) => void;
  } = {}
) => {
  const res = await fetchAction();
  const reader = res.body.getReader();
  let buffer = '';
  let bufferObj: Record<string, any>;
  const decoder = new TextDecoder('utf-8');

  function read() {
    let hasError = false;
    reader?.read().then((result: any) => {
      if (result.done) {
        return;
      }
      if (res.status !== 200 || !res.body) {
        hasError = true;
        onError?.(JSON.parse(decoder.decode(result.value)));
        return;
      }
      buffer += decoder.decode(result.value, { stream: true });
      try {
        const lines = buffer.split('\n\n');
        lines.forEach((message) => {
          if (message.includes('event: close')) {
            try {
              onCloseMessage?.(JSON.parse(message.split('\n')[2].substring(6)));
            } catch {}
          }
          if (message.includes('event: message')) {
            try {
              bufferObj = JSON.parse(message.split('\n')[2].substring(6)) as Record<string, any>;
              console.log(8888, bufferObj);
            } catch (err) {
              // return;
            }
          }
        });
        buffer = lines[lines.length - 1];
      } catch (err) {
        console.log('hasError', err);
        hasError = true;
        return;
      }
      if (!hasError) read();
    });
  }
  read();
};

export const startChat = () => {
  initChat(
    streamAction({
      query: '你好',
    })
  );
};
修改于 2025-01-16 03:29:58
上一页
接口鉴权
下一页
对话URL获取
Built with