【问题标题】:Does Azure Bot Service SDK require restify? (node)Azure 机器人服务 SDK 是否需要 restify? (节点)
【发布时间】:2020-03-03 20:48:42
【问题描述】:

我正在尝试将我的 v3 Azure 机器人服务 (npm botbuilder) 转移到 v4,但是所有教程或文档似乎都包含 restify,而 v3 没有。

这是一个严格的要求吗?或者有没有人有没有restify的例子?

如果是这样,有谁知道为什么需要它?

我目前正在尝试处理来自 azure 函数应用的主动消息。

V3: https://docs.microsoft.com/en-us/azure/bot-service/nodejs/bot-builder-nodejs-proactive-messages?view=azure-bot-service-3.0

V4: https://docs.microsoft.com/en-gb/azure/bot-service/bot-builder-howto-proactive-message?view=azure-bot-service-4.0&tabs=javascript

提前致谢。

【问题讨论】:

    标签: node.js azure botframework azure-bot-service


    【解决方案1】:

    根据 v3 的 documentation,如下所述:

    您的机器人的对话逻辑作为网络服务托管。 Bot Framework SDK 使用restify(一种用于构建 Web 服务的流行框架)来创建 bot 的 Web 服务器。该 SDK 还与 Express 兼容,并且可以通过一些调整来使用其他 Web 应用程序框架。

    此外,对于来自 azure 函数应用程序的主动消息,请参阅this Stack Overflow 问题,其中包含将在每 x 分钟后触发的 azure 函数的绑定信息。

    希望这会有所帮助。

    【讨论】:

    • 您能否接受这个答案,以便对其他人也有帮助?谢谢
    【解决方案2】:

    Bot Framework SDK v4 中不需要使用restifyexpress。任何使用类似 WebRequestWebResponse 对象的网络服务器框架都与 Bot 框架兼容。

    无需任何修改即可使用 Azure Functions。您创建一个 httpTrigger 来监听 POST 请求。在 httpTrigger 中,您可以调用 adapter.processActivity,就像在“普通”机器人中一样。

    const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
    
        adapter.processActivity(req as any, context.res as any, async (context) => {
            // Route to main dialog.
            await myBot.run(context);
        });
    
    };
    

    目前您必须在使用 Typescript 和 Azure Functions(或创建 shim 层)时将 WebRequest 对象转换为 any,但这将在 4.9 中根据 this open pull request 解决。

    为了发送主动通知,您甚至不需要这种方法。我在your similar question 中为 Bot Framework SDK v4 创建了一个主动功能示例。

    【讨论】:

      猜你喜欢
      • 2020-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2016-06-25
      • 2022-01-23
      • 1970-01-01
      • 2015-07-10
      相关资源
      最近更新 更多