botframework - 如何在 Confirm Prompt (Microsoft Bot Framework) 中添加对不同语言的支持?
问题描述
我想使用 Confirm Prompt 但目前 Confirm Prompt 仅支持少数语言,例如en-us、fr-fr等。我想将 Confirm Prompt 用于默认不支持的 2 种不同语言。我知道我可以使用字段作为confirmChoices
并choiceOptions
手动指定确认选项,但这意味着我必须为默认情况下不包含在确认提示中的每种语言创建 1 个确认提示。
添加对默认情况下不包含的更多语言的支持的最简单方法是将它们添加到defaultChoiceOptions
地图中。但是这个地图被声明为私有静态,因此它不能被修改。
所以我正在考虑扩展 ConfirmPrompt 类并覆盖onPrompt
与ConfirmPrompt 类onRecognize
中完全相同的方法,但它将使用myCustomDefaultChoiceOptions
我的自定义类中的非静态和公共字段 => 问题已解决。
但这是骇人听闻的解决方案,我不明白为什么这张地图在 Bot Framework SDK 中不是公开的和非静态的。
因此我问,是否有任何其他解决方案(框架本身支持)允许我在 ConfirmPrompt 中添加对不同语言的支持?
解决方案
这实际上是几个月前(由我)推出的更改。您需要更新您的软件包。
choiceDefaults
是私有的(现在是非静态的),但是,它可以通过将其传递给构造函数来更新。
最简单/最好的方法是为每种语言/区域设置/文化构建PromptCultureModel(因此您也可以通过 ChoicePrompt 轻松使用它),然后使用匹配的 PromptCultureModels 创建对象,ChoiceDefaultsConfirmPrompt
然后将其传递给构造函数.
您可以在此处的测试中看到我是如何做到这一点的。
注意:当您覆盖 时choiceDefaults
,您会丢失所有当前支持的语言。您可以通过 轻松地将它们添加到您的 PromptCultureModel 对象中PromptCultureModels.getSupportedCultures()
。
注意:我有一个任务要添加一些额外的语言,但它在积压中,因为您现在可以添加自己的语言。
推荐阅读
- clojure - 有没有办法内联传递给宏的函数?
- python - 从路由器使用 ncclient 发送修改后的数据,它是如何工作的?
- bash - 使用 pgrep 而不是 ps 获取内存使用百分比
- c - 为什么获取数组长度的 sizeof 函数在我的函数中不起作用?
- c# - 来自不同来源的 EF Core 实体继承,没有鉴别器
- algorithm - 实现极小极大算法
- python - 如何使用 selenium python 在网站中抓取 ::before 元素
- python - 如何在 Python 中模拟随机访问文件
- preg-match-all - preg 匹配所有重复模式
- javascript - 试图让下一个和上一个按钮出现在注册表单的不同时间