无法将事件数据传递给 Api.ai
Unable to pass Event data to Api.ai
我正在尝试将事件提升到 Api.ai 并在 python 客户端中传递数据
ai = apiai.ApiAI(CLIENT_ACCESS_TOKEN)
parm = {}
parm['amount'] = 222
parm['CName'] = 'CustName'
event1 = apiai.events.Event("MyCustomEvent")
event1.data = parm
request = ai.event_request(event1)
MyCustomEvent 已定义并链接到正确的意图。
Intent 具有定义的强制参数 CName 和 amount
事件和意图在发送请求时被触发。
但是数据没有被映射
我做错了什么?有人可以帮忙吗
或者指出一些示例以使其正常工作
这有点棘手,这是我在使用 API.ai 时发现的。据我所知,API.ai 有很多 "undocumented features",这是其中之一。
您实际上可以在触发事件时设置参数,除非您尝试触发的事件与您在触发时传递给该意图的参数具有相同的参数。然后会发生以下情况:API.ai 将神秘而神奇地 "blank" 输出这些参数,就好像它们正在被意图重置一样。
我已经在 API.ai 论坛上发布了有关此问题的帖子,无论是实际功能还是错误,但到目前为止我还没有收到任何回复。
所以给你一个具体的例子,假设我们有:
Intent: "customIntent"
Entity: "amount"
Entity: "cname"
Event: "myCustomEvent"
ContextIn: "testIn"
ContextOut: "testOut"
如果我使用来自 webhook 的事件触发此意图,其中包含以下 JSON:
{
"followupEvent": {
"name": "myCustomEvent",
"data": {
"amount": "2222",
"Cname": "a persons name",
"testentity": "this shouldn't be blank"
}
}
}
amount 和 Cname 将被留空并按意图重置,您可以在 API.ai 控制台中查找上下文以查看此结果,但是,testentity 不会留空并重置,因为 testentity 不是' t 在意图的参数列表中。
这很奇怪和令人困惑,但这就是我 运行 通过多次测试所发生的事情。为了解决这个问题,我创建了一个解决方法,方法是使用与我首先尝试触发的意图相同的 "user sentences" 和 contextin 和 contextout 创建一个额外的意图,但不同之处在于不添加任何此新意图的参数。
看起来像这样:
Intent: "customIntent"
Entity: "amount"
Entity: "cname"
ContextIn: "testIn"
ContextOut: "testOut"
Intent: "workaroundIntent"
Event: "myCustomEvent"
ContextIn: "testIn"
ContextOut: "testOut"
这就是我自己解决的方法,至于为什么会这样,我仍在等待一位 API.ai 工作人员的回应。
我正在尝试将事件提升到 Api.ai 并在 python 客户端中传递数据
ai = apiai.ApiAI(CLIENT_ACCESS_TOKEN)
parm = {}
parm['amount'] = 222
parm['CName'] = 'CustName'
event1 = apiai.events.Event("MyCustomEvent")
event1.data = parm
request = ai.event_request(event1)
MyCustomEvent 已定义并链接到正确的意图。 Intent 具有定义的强制参数 CName 和 amount
事件和意图在发送请求时被触发。 但是数据没有被映射
我做错了什么?有人可以帮忙吗 或者指出一些示例以使其正常工作
这有点棘手,这是我在使用 API.ai 时发现的。据我所知,API.ai 有很多 "undocumented features",这是其中之一。
您实际上可以在触发事件时设置参数,除非您尝试触发的事件与您在触发时传递给该意图的参数具有相同的参数。然后会发生以下情况:API.ai 将神秘而神奇地 "blank" 输出这些参数,就好像它们正在被意图重置一样。
我已经在 API.ai 论坛上发布了有关此问题的帖子,无论是实际功能还是错误,但到目前为止我还没有收到任何回复。
所以给你一个具体的例子,假设我们有:
Intent: "customIntent"
Entity: "amount"
Entity: "cname"
Event: "myCustomEvent"
ContextIn: "testIn"
ContextOut: "testOut"
如果我使用来自 webhook 的事件触发此意图,其中包含以下 JSON:
{
"followupEvent": {
"name": "myCustomEvent",
"data": {
"amount": "2222",
"Cname": "a persons name",
"testentity": "this shouldn't be blank"
}
}
}
amount 和 Cname 将被留空并按意图重置,您可以在 API.ai 控制台中查找上下文以查看此结果,但是,testentity 不会留空并重置,因为 testentity 不是' t 在意图的参数列表中。
这很奇怪和令人困惑,但这就是我 运行 通过多次测试所发生的事情。为了解决这个问题,我创建了一个解决方法,方法是使用与我首先尝试触发的意图相同的 "user sentences" 和 contextin 和 contextout 创建一个额外的意图,但不同之处在于不添加任何此新意图的参数。
看起来像这样:
Intent: "customIntent"
Entity: "amount"
Entity: "cname"
ContextIn: "testIn"
ContextOut: "testOut"
Intent: "workaroundIntent"
Event: "myCustomEvent"
ContextIn: "testIn"
ContextOut: "testOut"
这就是我自己解决的方法,至于为什么会这样,我仍在等待一位 API.ai 工作人员的回应。