让我们说我的机器人与用户进行了持续的对话,我的webhook问道,“你做完了吗?"并且用户回答"是"。 如何通过webhook关闭对话? 我怀疑它是通过followupEventInput但我无法得到任何工作。
我没有使用nodeJS库。用C#编码。
以下是我尝试的内容:我使用输出上下文和事件进行响应:事件与"结束对话"在意向窗口底部的Google智能助理下。
{
"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。记录已被记录。",会话突然结束,谷歌首页说"该应用程序不再响应" (或类似的东西)。有效,但不能接受。
如果我没有放下followupEvent,用户会听到"好的。记录被记录下来。"但是对话并没有结束......那么我需要依靠用户使用另一个意图来关闭它,这是我想要避免的,因为它会是多余的。
答案 0 :(得分:1)
您可以通过两种方式结束使用Dialogflow的Google智能助理对话:
转到Dialogflow中定义的意图并向下滚动并点击from collections.abc import MutableSequence
from threading import RLock
class MD(dict):
# No need for a full MutableMapping subclass, as the use is limited
def __getitem__(self, key):
return super().__getitem__(id(key))
class Reversible(MutableSequence):
def __init__(self, args):
self.seq = list()
self.reverse = MD()
self.lock = RLock()
for element in args:
self.append(element)
def __getitem__(self, index):
return self.seq[index]
def __setitem__(self, index, value):
with self.lock:
del self.reverse[id(self.seq[index])]
self.seq[index] = value
self.reverse[id(value)] = index
def __delitem__(self, index):
if index < 0:
index += len(self)
with self.lock:
# Increase all mapped indexes
for obj in self.seq[index:]:
self.reverse[obj] -= 1
del self.reverse[id(self.seq[index])]
del self.seq[index]
def __len__(self):
return len(self.seq)
def insert(self, index, value):
if index < 0:
index += len(self)
with self.lock:
# Increase all mapped indexes
for obj in self.seq[index:]:
self.reverse[obj] += 1
self.seq.insert(index, value)
self.reverse[id(value)] = index
并选中标有Google Assistant
的复选框
注意:这仅适用于Dialogflow控制台中定义的响应,而不适用于履行创建的响应。
回复Dialogflow的webhook请求,其响应形式为:
End conversation
使用这些方法中的任何一种,您的应用都会说出控制台(#1)或webhook(#2)中指定的内容,并结束与用户的对话。在Dialogflow intent(对于#1)或有效负载对象(对于#2)的响应部分填写值,以在结束对话时向用户发送响应。
<强>来源强>
Dialogflow Webhook Response v2 docs:https://dialogflow.com/docs/reference/api-v2/rest/v2beta1/WebhookResponse
Google webhook响应文档上的操作:https://developers.google.com/actions/reference/rest/Shared.Types/AppResponse#FIELDS.expect_user_response
答案 1 :(得分:0)
行。经过进一步调查,似乎: