node.js - 在 NODEjs 上使用 directline 3.0 在网站上部署 azure bot
问题描述
我正在尝试在 localhost 上托管我的 Web 应用程序。我正在使用 Directline 3.0,我想使用 websockets 将消息推送到窗口中。我不想嵌入机器人。我已经有了 GET 和 POST 请求,因此我可以通过运行带有承载令牌的 javascript 文件来发送和接收对话,并通过从机器人发送和接收消息来恢复对话的运行,但我希望这发生在 localhost 网站上在没有嵌入的基于聊天的窗口上。
我怎样才能做到这一点?如何将 websockets 的聊天窗口链接到 GET 和发布文件,以便我可以实时发送消息。
解决方案
我建议您使用BotFramework-DirectLineJS包将 Direct Line 直接(不是双关语)集成到您的项目中。这个包是专门为在不使用 WebChat 作为 UI 组件的情况下与机器人进行通信而构建的。
您可以参考一个 v3示例。该项目在 DirectLineBot 和 DirectLineClient 之间拆分。DirectLineBot 演示了一个 v3 机器人。您需要更新此文件夹以包含您的 v4 机器人。DirectLineClient 与 v3 或 v4 的工作方式相同。因此,当您的客户端连接、生成令牌并开始发送活动时,您的 v4 机器人应该拾取这些并做出相应的响应。同样,您的客户应该获取机器人的响应。
此时,您需要更新客户端以显示从用户/机器人发送和接收的活动。
您也可以考虑查看来自 WebChat 开发人员的非官方“普通 ui”示例。它使用 React,但它不依赖 WebChat 作为 UI 组件。我能够在大约 5 分钟内启动它。它有目的地去除任何样式,只是将活动作为文本/json 对象发布到页面。
您可以删除输入字段并将页面配置为接受输入以在页面上呈现。它可能是一个有用的起点,并且可以很好地适应上述 DirectLineJS 选项。
如果这些选项都不合适,那么您将需要使用 Axios、Fetch 或一些类似的包在客户端和机器人之间进行 GET、POST 等调用。
希望有帮助!
推荐阅读
- octobercms - 如何在 october cms 中定义可重用函数?
- google-cloud-platform - 在 Terraform 日志记录接收器中拒绝块 bigquery_options 时出错
- swift - 选择图像导致 Swift 内存崩溃
- angular - 如何在 Typescript 中忽略此“类型上不存在属性'方法'”?
- antlr - 意外的解析器规则匹配顺序
- javascript - 将用户输入存储在数组或对象中
- java - H2 DB 驱动程序不在类路径中
- java - POJO类型的Java集无法添加元素
- c# - 不能在继续任务上调用开始
- angular - 从后端显示数据到formGroup Angular 9