使用 DirectLine javascript 连接两个机器人

问题描述

这是我的场景:

  • Bot A(使用 BotFramework-sdk 制作,用于 Javascript(Node.js))接收音频文件调用 Speech Services REST API 并从中获取文本。
  • Bot B(使用 BotFrameworkComposer 制作)具有 qna 功能

我需要将Bot A设置为代理接收音频附件并要求Bot B显示返回的答案机器人 A

我已经设法将这两个机器人与直线连接起来,我的问题出现在对话开始后:在 机器人 A 中,我正在使用 REST API使用 streamURL 发送消息和 websocket 以接收活动。

创建 websocket 后,我​​调用 on message 事件以获取来自 Bot B 的消息,但我需要使用 await context.sendActivity(MessageFactory.text...

            [...]
            response = await axios.post(url,null,config);
            ws = new WebSocket(response.data.streamUrl);

            ws.on('message',function incoming(data) {
              [...]
            }

提前致谢。

解决方法

请查看 80.skills-simple-bot-to-bot 示例以获取有关如何连接两个机器人的指导。该示例演示了一个“root bot”(您的 Bot A)调用“skill bot”(您的 Bot B)并在将控制权返回给 root bot 之前执行对话。会话 ID 通过使用 SkillConversationIdFactory 跨根和技能机器人维护。

有关设置和使用技能的其他信息,请参阅 Implement a skill 文档。