开发者社区 问答 正文

钉钉这边使用魔法棒AI助理的时候都有那种流推送的功能?

钉钉这边使用魔法棒AI助理的时候都有那种流推送的功能,但是我们看了文档跟示例以及代码里头都没有关于流推送的这种功能,都是一句一句消息回复的,想要问一下,需要做这种流推送回复的机器人要怎么弄呢?

展开
收起
真的很搞笑 2024-05-05 18:14:04 210 分享 版权
阿里云 AI 助理回答

在钉钉中实现流推送回复的机器人功能,可以通过以下步骤完成。以下是详细的配置和实现方法:


1. 创建钉钉应用并获取必要凭证

首先需要创建一个钉钉应用,并获取相关的凭证信息,包括 Client IDClient Secret,这些信息将用于后续的连接流配置。

  • 步骤
    1. 访问钉钉开放平台,点击创建应用
    2. 填写应用名称、描述并上传图标后保存。
    3. 在左侧菜单选择凭证与基础信息,复制 Client IDClient Secret

2. 创建消息卡片模板

钉钉机器人通过卡片消息支持流式返回结果,因此需要创建一个卡片模板供消息发送使用。

  • 步骤
    1. 访问卡片平台,点击新建模板
    2. 填入模板信息并在模拟编辑页面保存并发布模板。
    3. 复制模板ID,用于后续创建连接流时使用。

3. 授予应用发送卡片消息权限

创建卡片后,需要为应用授予发送卡片消息的权限。

  • 步骤
    1. 在钉钉应用列表中找到刚刚创建的应用,进入详情页面。
    2. 在左侧菜单选择开发配置 > 权限管理
    3. 搜索并申请以下权限:
      • Card.Streaming.Write
      • Card.Instance.Write
    4. 确保权限申请成功。

4. 创建钉钉连接流

通过 AppFlow(钉钉连接流)可以将大模型应用与钉钉连接起来,从而实现流推送功能。

  • 步骤
    1. 使用 AppFlow 模板创建连接流,点击立即使用
    2. 账户授权配置向导页,填入之前获取的 Client IDClient Secret,并设置自定义凭证名称。
    3. 执行动作配置向导页,填写应用ID模板ID
    4. 基本信息配置向导页,填写连接流名称和描述(建议保持默认)。
    5. 配置完成后,复制生成的 WebhookUrl 并点击发布

5. 配置钉钉机器人

有了 WebhookUrl 后,可以在钉钉应用中配置机器人以支持流推送回复。

  • 步骤
    1. 在钉钉群聊中添加机器人,选择自定义机器人
    2. 将之前生成的 WebhookUrl 填入机器人配置中。
    3. 测试机器人是否能够正常接收消息并返回流式结果。

6. 实现流推送逻辑

为了实现流推送功能,需要在后端服务中处理实时语音或文本数据,并通过 Webhook 推送至钉钉机器人。

6.1 推流通道建立

  • 调用 SDK 的 initialize 方法初始化推流通道,确保参数正确配置,例如 workspaceapp_keytoken 等。
  • 示例代码:
    let ret = sdkInstance.initialize(callback, parameters, logLevel, saveLog);
    if (ret !== 0) {
      console.error("SDK 初始化失败,错误码:", ret);
    }
    

6.2 推送识别语音

  • 使用 startDialog 接口开启监听,并通过 updateAudio 接口持续推送音频数据。
  • 示例代码:
    sdkInstance.startDialog(Constants.VadMode.TYPE_P2T, dialogParams);
    audioCapturer.on('readData', (buffer) => {
      sdkInstance.updateAudio(buffer, false);
    });
    

6.3 接收识别结果

  • 客户端循环发送语音数据,并持续接收识别结果。识别结果包括以下事件:
    • 句子开始事件(SentenceBegin):表示一句话的开始。
    • 句中识别结果变化事件(TranscriptionResultChanged):表示识别结果的变化。
    • 句子结束事件(SentenceEnd):表示一句话的结束及最终识别结果。
  • 示例代码:

    sdkInstance.on('SentenceBegin', (event) => {
      console.log("句子开始:", event.payload.index);
    });
    
    sdkInstance.on('TranscriptionResultChanged', (event) => {
      console.log("识别结果变化:", event.payload.result);
    });
    
    sdkInstance.on('SentenceEnd', (event) => {
      console.log("句子结束:", event.payload.result);
    });
    

7. 记录对话日志(可选)

如果需要记录 AI 助理的对话日志,可以通过 AppFlow 添加日志节点,将对话内容存储到阿里云日志服务中。

  • 步骤
    1. 在 AppFlow 控制台中,为连接流添加新的步骤,选择SLS日志云服务
    2. 配置日志信息,包括地域、Project 和 Logstore。
    3. 保存并发布连接流版本。

重要提醒

  • 性能优化:流推送过程中需注意音频数据的实时性和网络延迟,避免因数据堆积导致识别结果滞后。
  • 日志存储:启用日志存储功能时,请确保磁盘空间充足,避免因日志文件过大导致磁盘存满。
  • 权限管理:确保应用已正确申请并授予发送卡片消息的权限,否则可能导致消息推送失败。

通过以上步骤,您可以成功实现钉钉机器人支持流推送回复的功能。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答