C# 正在尝试使用Dialogflow V2 API中的自定义事件更新intent参数,但该参数未传递到intent

C# 正在尝试使用Dialogflow V2 API中的自定义事件更新intent参数,但该参数未传递到intent,c#,.net-core,google-cloud-platform,dialogflow-es,chatbot,C#,.net Core,Google Cloud Platform,Dialogflow Es,Chatbot,在我们的Dialogflow代理中,我们用一个名为“updateParams”的事件设置了一个意图,该事件与意图关联。intent有一个名为“ExampleEntity”的参数,我希望通过使用Detect intent API调用事件来使用c#更新该参数。我们正在使用这个版本的sdkGoogle.Cloud.Dialogflow.V2“version=“1.0.0-beta02” 此处可以看到一个响应示例。正如您所看到的,“ExampleEntity”参数没有按照请求进行更新: 关于哪里出错有

在我们的Dialogflow代理中,我们用一个名为“updateParams”的事件设置了一个意图,该事件与意图关联。intent有一个名为“ExampleEntity”的参数,我希望通过使用Detect intent API调用事件来使用c#更新该参数。我们正在使用这个版本的sdkGoogle.Cloud.Dialogflow.V2“version=“1.0.0-beta02”

此处可以看到一个响应示例。正如您所看到的,“ExampleEntity”参数没有按照请求进行更新:

关于哪里出错有什么提示吗?我们对Dialogflow还比较陌生,所以它可能很简单。

您的代码看起来不错。
但是,在您的意图中,您需要提供实体
ExampleEntity
默认值

将其命名为:
\event\u name.entity\u name

您的事件是
updateParams
,实体名称是
ExampleEntity
,因此在这种情况下,默认值将是
#updateParams.ExampleEntity

这样,当通过传递值的事件调用您的意图时,
ExampleEntity
将知道从何处获取默认值

您也可以查看答案以了解详细信息


希望有帮助。

您如何在代理中将响应返回到Dialogflow?如果您使用从WebhookResponse到Json的默认Json.NET转换,这就可以解释了。(您需要使用Protobuf Json转换。)在这个项目中,我们使用df作为自然语言处理器来实现一个.net核心项目。短语到达该项目的端点,我们使用df Detectinent API来确定意图,然后使用实现文本决定应该向用户发送什么响应。在某些情况下,如果可以在不提示用户的情况下获取这些参数,我们可能希望通过编程方式在intent上填充一些空参数,因此我们使用上面的调用对Detectinent执行第二次调用,以传递填充了参数的自定义事件,这正是我们遇到问题的地方.因此,要明确的是,您根本没有使用web钩子,只是完全单独调用Detectinent?(使用C#中的Dialogflow的大多数问题都与web钩子的JSON编码/解码有关。)没错。我们的dialogflow代理根本不使用webhook功能。相反,我们使用它来管理我们的所有意图、实体、闲聊等,并使用它来引导对话的流程,但所有这些都是通过一个单独的.net核心项目来控制的,该项目基于bot framework/。对用户的响应是使用该组件完成的nt,不是dialogflow。当允许dialogflow提示填充空的必需参数时,这工作正常,我们只是在没有用户交互的情况下尝试在检测到的意图上“预填充”参数时遇到了这个问题。希望这是有意义的。嗯……我以后必须看一看。(我今天休假,正要出去。)C代码在我看来还行……是的,这对我们来说很有效!在我们的示例中,我们必须在默认值中使用#updateParams.ExampleEntity。
            queryInput.Event = new EventInput
            {
                Name = "updateParams",

                Parameters = new Struct
                {                        
                    Fields = {{ "ExampleEntity",Value.ForString("Bla")}} 
                },
                LanguageCode = languageCode
            };