0

我目前正在尝试学习 Chatscript,但文档似乎很差。我当前的问题是如何响应输入的多语句匹配。所以,如果我说“嗨。告诉我关于你自己”并且我有一个匹配“嗨”和“关于你自己”的匹配项,它将响应第一个匹配而不是最后一个匹配。我很确定我需要更改控制脚本来解决这个问题,但不确定要使用哪些命令。也许可以将所有匹配项存储在最后一个输入中并可以选择一个特定的匹配项?

4

1 回答 1

1

您可以创建 au: 响应,该响应使用 ^next 和细化() 来遍历以 ~greeting 之类的开头的句子。这是伪代码

u: ( ~greeting ) 

   ^refine()

 a: ( %more ) 

    ^next(input) 
    ^refine()

    b: ( you be ? )

       I'm good!

    b: ( %lenght==0 ) 

       Hi!

( ChatScript 系统功能手册)

^next(what label) – 给定 GAMBIT 或 RESPONDER 或 REJOINDER 或 RULE 的内容以及规则标签或标记,找到该内容的下一个规则。如果没有找到则失败。如果 REJOINDER 达到下一个顶级规则,它将失败。如果 label 为“~”,它将以最后一次通话的应答为起点,使您能够连续走规则。还有 ^next(FACT @xxx) – 见事实手册。对于 ^next(input),系统将读取下一个句子并为系统做好准备。这意味着此后执行的所有模式和代码都将在下一个输入句子的上下文中。那个句子现在用完了,当当前修改的句子完成时,下一个就看不到了。

于 2014-12-04T22:30:58.043 回答