我有一个名为的意图intent_yes,它在几个不同的会话流中共享。当用户说“是”或“是”等时,它将调用我的 webhook / Rasa 操作。我需要知道他们对什么表示同意。我们如何从 Rasa webhook 操作中获取之前的意图名称?
我想我同意OP的观点。有时,某个意图会因完全不同的原因而被激活。
例如,你有“为什么?”之类的词。“如何?” 对于某些特定的意图,其相应的动作会被无差别地触发。如何防止在最不可能的情况下触发此类基本表达式?
当然,为“为什么”和“如何”的每个可以想象的对话轮流写故事是效率不高的。
这就是为什么我想要一个解决方案来检查对话的状态并确定在运行之前是否已触发特定意图。
汤姆上面的解决方案是有道理的。我会尝试一下。
更新:这是我的解决方案:
def get_latest_event(events)
latest_actions = []
for e in events:
if e['event'] == 'action':
latest_actions.append(e)
return latest_actions[-2:][0]['name']
get_latest_event(tracker.events)
Run Code Online (Sandbox Code Playgroud)
action事件,我会将其推入上面的空列表中。假设我们正在寻找最后触发的操作。
同样,我的用例是,我想要一种方法来控制我对一般后续问题的回答。
例如,用户问why?
我想知道机器人所说的最后一句话(动作)触发了该事件why。
如果我感兴趣的是边缘情况,我会以不同的方式处理。如果没有,我一般性地回答。
这是哈克吗?或许。但是,直到我找到一种方法来阻止自己为用户可以问“为什么?”的所有可能方式编写故事之前,这都可以。我愿意接受更好的建议。
| 归档时间: |
|
| 查看次数: |
1951 次 |
| 最近记录: |