C# 如何通过webhook(api v2)基于用户输入评估终止对话

C# 如何通过webhook(api v2)基于用户输入评估终止对话,c#,dialogflow-es,C#,Dialogflow Es,假设我的机器人正在与用户进行对话,我的webhook问“完成了吗?”用户回答“是”。 如何通过webhook结束对话? 我怀疑这是通过FollowEventInput实现的,但我无法让任何东西正常工作 我没有使用nodeJS库。用C#编码 下面是我尝试过的:我用一个输出上下文和一个事件来响应:该事件与位于intent窗口底部的Google助手下的“End conversation”相关联 { "fulfillmentText": "OK. The note was recorded."

假设我的机器人正在与用户进行对话,我的webhook问“完成了吗?”用户回答“是”。 如何通过webhook结束对话? 我怀疑这是通过FollowEventInput实现的,但我无法让任何东西正常工作

我没有使用nodeJS库。用C#编码

下面是我尝试过的:我用一个输出上下文和一个事件来响应:该事件与位于intent窗口底部的Google助手下的“End conversation”相关联

 {  
  "fulfillmentText": "OK. The note was recorded.",
  "fulfillmentMessages": [
  {
  "text": {
    "text": [
      "OK. The note was recorded."
    ]
  }
}
],
  "outputContexts": [
{
  "lifespanCount": 2,
  "name": "projects/xxx/agent/sessions/1512399774430/contexts/note-end"
}
],
"followupEventInput": {
"name": "end-event",
"languageCode": "en"
  }
}
在上面的代码中,用户从未听到过“OK,便条被录制了”。会话突然结束,Google Home说“应用程序不再响应”(或类似的话)。工作正常,但不可接受


如果我不放置followupEvent,用户会听到“OK,便条已录制”。但对话不会结束。。。然后我需要依靠用户使用另一个意图来关闭它,这是我想要避免的,因为这是多余的。

好的。经进一步调查,似乎:

  • 履行的文本永远不会发送给用户,但需要将其设置为“有效”,否则用户将被告知应用程序没有响应,他/她必须稍后重试
  • 上下文和事件是正确和必要的。(我发现)让用户听到“OK.注释已录制”的唯一方法是将此消息作为与事件相关的意图的文本响应。当设置为这种方式时,应用程序将以可接受的方式关闭

使用Dialogflow结束Google Assistant对话有两种选择:

  • Dialogflow中定义的响应
  • 转到Dialogflow中定义的意图,向下滚动并单击
    Google Assistant
    ,然后选中标有
    End conversation
    注意:这只适用于Dialogflow控制台中定义的响应,而不适用于由履行创建的响应

  • webhook中定义的响应
  • 使用以下形式的响应响应Dialogflow的webhook请求:

    {
    “完成消息”:[
    {
    {
    “平台”:“谷歌行动”,
    “paylaod”:{
    {
    “expectUserResponse”:false,
    ...
    }
    }
    }
    }
    ],
    ...
    }
    

    使用这两种方法中的任何一种,你的应用程序都会说出控制台(对于#1)或webhook(对于#2)中指定的内容,并结束与用户的对话。在Dialogflow intent(用于#1)或payload对象(用于#2)的response部分中填写值,以便在结束对话时向用户发送响应

    来源

    Dialogflow Webhook响应v2文档:


    对Google webhook响应文档的操作:

    如果您尝试了一些方法,发布您使用的无效代码将有助于我们帮助您。刚刚编辑了我的问题。