C# 如何在botframework的语言生成功能中从LG文件访问状态

C# 如何在botframework的语言生成功能中从LG文件访问状态,c#,botframework,C#,Botframework,根据LG文件中的这些文章,您应该能够直接访问bot状态,而无需将值作为作用域传递: i、 e.报告提到: 语言生成是通过以下方式实现的: 一个基于降价的.lg文件,其中包含模板及其组成。 完全访问当前bot的内存,以便将数据绑定到内存状态 其中一个示例看起来像是他们能够从UserState访问变量“name”: # greetingTemplate - Hello ${user.name}, how are you? - Good morning ${user.name}.It's nice

根据LG文件中的这些文章,您应该能够直接访问bot状态,而无需将值作为作用域传递:

i、 e.报告提到:

语言生成是通过以下方式实现的: 一个基于降价的.lg文件,其中包含模板及其组成。 完全访问当前bot的内存,以便将数据绑定到内存状态

其中一个示例看起来像是他们能够从UserState访问变量“name”:

# greetingTemplate
- Hello ${user.name}, how are you?
- Good morning ${user.name}.It's nice to see you again.
- Good day ${user.name}. What can I do for you today?
我已经用几种方法对它进行了测试,但我无法从LG文件访问UserState内存。这可能吗?

k

并不是说您可以直接访问bot状态,而是adaptive/composer bot中的内存(及其作用域)存储在状态中,并且可以通过作用域和LG进行存储和访问。您提供的文章片段中的关键部分是“内存”(在本例中,指的是自适应内存作用域及其值)

例如,我可以提示用户输入他们的名称,并将其存储在
user.name
中。但这与
turn.activity.from.name
(它不是来自状态的东西,但通常保存到状态中)不同<默认情况下,不会填充code>user.name。当然,您可以从
turn.activity.from.name
中获取该值,并将其存储在
user.name
中(可能取决于频道,或者具有其他逻辑,等等)

您可以使用以下方法对此进行更多测试:

对话框: LG: 使用Emulator,您可能会在cosmos中看到类似的内容:

{
    "id": "emulator*2fusers*2fa1464f41-f237-42dd-ad01-ca8fb150b97a",
    "realId": "emulator/users/a1464f41-f237-42dd-ad01-ca8fb150b97a",
    "document": {
        "$type": "System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib],[System.Object, System.Private.CoreLib]], System.Private.CoreLib",
        "name": "DanaVCosmos",
        "gender": "MaleCosmos",
        "age": 45
    },

谢谢你,达娜。我必须说我有点困惑。您发布的对话框的格式是什么?它是由男朋友作曲的吗?另外,如果user.name应该工作,那么我应该将UserState访问器配置为user,然后向其中添加名为“name”的字符串类型字段吗?是的,来自Composer。如果您在Composer中单击“ShowCode”,就可以得到这种json格式。这是实际的声明性对话框。我很抱歉;我可能错误地认为您在链接到Composer文章时使用了Composer,但您也将其标记为c。您是在使用声明性对话框还是在dotnet/c#中编写它们?是的,实际上是在VisualStudio中使用c#编写的。但计划在未来检查作曲家。
# TextInput_Prompt_SOE0Ku()
 - What is your name?
# TextInput_Prompt_3sNA0B()
 - What is your gender?
# NumberInput_Prompt_SsEiOF()
 - What is your age?
# SendActivity_CD7TVN()
 - Your name is ${user.name}, you are ${user.gender} and your age is ${user.age}. You are also ${turn.activity.from.name}
{
    "id": "emulator*2fusers*2fa1464f41-f237-42dd-ad01-ca8fb150b97a",
    "realId": "emulator/users/a1464f41-f237-42dd-ad01-ca8fb150b97a",
    "document": {
        "$type": "System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib],[System.Object, System.Private.CoreLib]], System.Private.CoreLib",
        "name": "DanaVCosmos",
        "gender": "MaleCosmos",
        "age": 45
    },