gpt4 book ai didi

rivescript - 如何在 Rivescript-Python 中预处理特殊触发器?

转载 作者:行者123 更新时间:2023-12-04 16:05:05 24 4
gpt4 key购买 nike

我的机器人将用户名存储在数据库中,并且数据库不时向 session 发送一条消息“setname username”。示例脚本:

+ setname *
- <set name=<formal>>

+ (what is my name|who am i)
- You're <get name>, right?

+ didntlike
- {topic=nlike}Why?

> topic nlike

+ *
- {topic=random}Thanks for charing.

< topic

+ *
- I don't have a reply for that.
- Try asking that a different way.

问题是当用户在一个像“nlike”这样的主题中时,由 * 退出并且我发送消息来设置名称,然后对话退出该主题。

预期对话:
Me: hello
Bot: I don't have a reply for that.
Me: didntlike
Bot: Why?
Me: setname John
Bot:
Me: I didn't like because you are ugly.
Bot: Thanks for charing.
Me: Who am I?
Bot: You're John, right?

有没有办法在开始块中处理它?我尝试了不同的语法,但没有积极的结果。我想到了这样的事情:
> begin

+ setname *
- <set name=<formal>>

+ request
- {ok}

< begin

一种解决方法是在所有主题中添加相同的触发器,但我需要一个更好的解决方案,因为随着我的 rive 文件变大,这种方法很容易出错。

==== 根据纳尔逊的回答尝试的代码 =====
> begin
+ request
- {ok}{topic=specialtriggers}
< begin

> topic specialtriggers

+ setname *
- <set name=<formal>>

< topic

+ (what is my name|who am i)
- You're <get name>, right?

+ didntlike
- {topic=nlike}Why?

> topic nlike

+ *
- {topic=random}Thanks for charing.

< topic

+ *
- I don't have a reply for that.
- Try asking that a different way.

我认为将主题添加到 {ok}{topic=specialtriggers} 会使该主题之外的所有触发器失败。预处理后,Rivescript 应该回答它是否是特殊触发器,否则搜索正常触发器。

最佳答案

如果您的问题只是关于如何始终使用 begin 预处理用户消息块,答案是:

  • 不需要在开始块中输入触发器。一个 + request是任何用户消息的通用表示。
  • 如果您想限制在开始块中匹配的触发器 只有来自当前主题,{ok}标签就足够了。

  • 修改你的代码如下
    + didntlike
    - {topic=nlike}Why?

    > topic nlike
    + *
    - Thanks for charing.
    < topic

    > begin
    + request
    - {ok} (Preprocessed in begin)
    < begin

    尝试以下消息序列 didntlike , hello ,你会看到回复附有 (Preprocessed in begin) .
  • 否则,开始块中的回复需要添加一个主题 where(哪个主题)来获取触发器和回复。如果您想获取 setname 的触发器在 random主题,您可以将 begin 块添加到第一个代码片段的末尾。

  • RiveScript 代码
    > begin
    + request
    - {ok}{topic=random}
    < begin

    在这种情况下,将请求提供给 setname 后的主题是话题 random .

    关于rivescript - 如何在 Rivescript-Python 中预处理特殊触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48007450/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com