0

我正在扩展一个有效的 Azure 机器人服务原型(在应用服务计划上),它在 ./locale/en/index.json 中包含其所有提示。是否可以将其拆分为多个文件并以编程方式确定我们在运行时检查哪个文件的提示?这会导致重大的意外性能影响吗?

示例:如果我对“什么是苹果”和“什么是橙子”有不同的响应,则在单独的文件(apple.json 和 orange.json)中将两者定义为 fruitDefinition 提示。

代替:

bot.dialog(('Apple', [
     function (session, args, next) {
         session.send("prompt_define_apple");
    }
]).triggerAction({matches: 'Apple'});

这将使我对代码更加通用,每次都提取相同的提示名称(“prompt_define”)并且只是改变我从中获取它的文件。

我当然可以继续转储 index.json 中的所有内容,但提示命名空间已经有点混乱了,我想将其扩展到广泛的实体集。

谢谢!

4

1 回答 1

0

实现这一目标的一种方法是使用库。通过这样做,您可以获得每个库的本地化文件。

Contoso Flowers 示例中,您会发现它已实现。

创建库 ( index.js )

bot.library(require('./dialogs/shop').createLibrary());

定义库(shop.js

var lib = new builder.Library('shop');
lib.dialog('/', [..]);

可本地化的文件 ( shop.json )

{
    "default_user_name": "User",
    "provide_delivery_address": "%s, please enter the delivery address for these flowers. Include apartment # if needed.",
    "confirm_choice": "Great choice \"%s\"! Delivery on %s"
}
于 2017-09-20T21:32:27.960 回答