【问题标题】:Does Azure Bot Service SDK require restify? (node)Azure 机器人服务 SDK 是否需要 restify? (节点)
【发布时间】:2020-03-03 20:48:42
【问题描述】:
【问题讨论】:
标签:
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 中不需要使用restify 或express。任何使用类似 WebRequest 和 WebResponse 对象的网络服务器框架都与 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 创建了一个主动功能示例。