从 Web 客户端调用 Microsoft Bot Framework 机器人,无需在 Azure 上托管

Posted

技术标签:

【中文标题】从 Web 客户端调用 Microsoft Bot Framework 机器人,无需在 Azure 上托管【英文标题】:Call Microsoft Bot Framework bot from Web Client without hosting on Azure 【发布时间】:2019-03-29 21:25:01 【问题描述】:

我需要通过一个简单的 Microsoft Bot Framework 机器人和一个 Web 客户端(html、CSS 和 javascript、jQuery)建立通信

我看到有一些方法可以使用 WebChat、DirectLine API 来做到这一点,但我不想使用任何 Azure 服务,如 Bot Registrations Service 或 App Service 来获取频道,而是我想使用纯 JavaScript 来调用bot 因为它只是一个 Web API 应用程序,所以必须有办法。

我尝试了一个简单的 jQuery ajax 调用,它调用了服务器,但很快就失败了

$(document).ready(function() 
  $.post('http://localhost:3979/api/messages', 
    "type": "message",
    "from": 
      "id": "user1"
    ,
    "text": "hello"
  ).fail(function(error) 
    debugger;
  ).done(function(response) 
    debugger;
  );
);

看来我需要完全形成活动对象https://docs.microsoft.com/en-us/azure/bot-service/rest-api/bot-framework-rest-connector-api-reference?view=azure-bot-service-4.0#activity-object 但是我怎样才能获得所有属性值

谁能告诉我这是否可能以及如何实现它

【问题讨论】:

【参考方案1】:

您的机器人需要至少实现directline(其中之一包含在模拟器中,这就是它能够为您处理对话和活动的原因),并通过免费机器人托管您的机器人azure 上的注册通道也会为您处理此问题。

一个不需要 Azure 的非官方 Directline 实现示例是 offline directline,但如果您创建一个处理会话 ID 以及其他必需活动参数的实现,这也可以工作。

【讨论】:

以上是关于从 Web 客户端调用 Microsoft Bot Framework 机器人,无需在 Azure 上托管的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Bot Framework - 使用 ngrok 在本地构建和调试客户端

Microsoft Bot Framework - 如何将数据从 Azure 数据库获取到我的 Bot 项目?

Microsoft bot 框架 - Bot 频道注册。无法将录制的视频从 Skype 保存到 Azure 存储帐户

Microsoft bot 框架获取用户时区

Microsoft Bot Framework 退出对话框

Direct Line API Microsoft Bot 框架