对话管理

用户与机器人进行互动时,除了通过各种按钮与快捷回复的「点击」,还可以通过直接「输入文本」来进行。这就需要我们在设置机器人的时候,对用户可能会输入的问题,进行相应的回复设置,也就是设置「对话」。

下面,我们将从具体的使用场景来介绍,如何通过「对话管理」来让机器人可以理解用户输入的文本内容,并同用户进行「对话」

基本概念介绍

语境

即用户会话的上下文。使用语境,可以帮助我们在复杂的对话中,更好地理解用户的意思,从而提供更智能的回复。

语境的有效期

每个语境,都有一个「有效期」,即在设定的规则范围内,该语境生效;在设定的规则范围外,该语境失效。 目前,我们支持「有效期限」的设置方式包括:

1. 对话时间:从用户进入这个语境里开始计时,当用户在当前语境下的累计时长超过您设定的时间时,则当前语境失效,用户会自动跳转回默认语境。

2. 用户发送的消息数:用户可以触发该语境下 Fallback 的次数。如果用户在一个语境下反复提问均无法得到您设置好的回复,只能走 Fallback 时,当 Fallback 触发的次数达到了您设定的范围,则当前语境失效,用户会自动跳转回默认语境 设置好有效期限,可以防止用户一直陷入死循环中,从而可以根据实际情况开始新的对话。

这两个条件,可以任选其一,也可以两者都选,然后设置成“或”或者“且”的关系。

鼠标 Hover 到您想设置的语境上方,点击「设置」按钮
在这里,您可以修改语境的名称 和 有效期

值得注意的是:

  1. 新建的语境我们会默认把有效期限设置为:当对话时间超过20分钟后,当前语境失效

  2. 「默认语境」不支持修改有效期限

对话基本概念

一个完整的对话,需要至少包括:

对话详情页

1. 当前语境:用户当前所在的语境。 用户同机器人开始对话后,则他一定会在一个「语境」中。我们给所有机器人都预置了一个「默认语境」(将在下文继续讲述如何使用)

2. 用户说:即在「当前语境」下,用户输入了哪些内容,会触发相应的回复内容或者语境的改变 我们目前支持两种处理方式,关键词与意图。

  • 关键词:您可以在这里输入多个关键词,并选择一个匹配方式。当用户输入的内容与您设置的关键词相匹配时,则会触发后续的内容;

    • 模糊匹配:用户输入的内容和您设置的关键词大体一样

    • 精确匹配:用户输入的内容和您设置的关键词一模一样(不区分大小写)

    • 包含匹配:用户输入的内容「包含」您设置的关键词

  • 意图:如果您配置了 NLP 引擎,则可以在这里选择您已经训练好的意图,通过 NLP 引擎来识别用户输入的内容。

3. 机器人回复内容块:即当用户输入的内容符合「用户说」的设置时,机器人会回复什么内容块。您也可以不设置任何内容块,则意味机器人不回复任何内容。

4. 后续语境:即当用户输入的内容符合「用户说」的设置时,需要从「当前语境」切换到哪一个「后续语境」。

基本的对话设置

默认语境

系统为您的机器人预置了一个「默认语境」,当用户同机器人开始对话后,则会自动进行「默认语境」。您可以在「默认语境」中设置一些基本的「对话」,来响应用户输入的内容。

场景:响应用户输入的问候语

场景描述

希望当用户输入类似于“Hi”,”Hello” 的短语时,回复用户“欢迎消息”

场景设置

  1. 前往「人工智能」 -> 「对话管理」

  2. 在中部「默认语境」这个组下面,点击「+对话」,输入名称“问候语”

  3. 在右侧「对话设置」页面,「用户说」这个区域内,选择「模糊匹配」,然后在后面的输入框中输入“Hi”,点击回车后输入下一个关键词 “Hello”

  4. 「机器人回复内容块」中,选择「欢迎消息」

  5. 「后续语境」选择「默认语境」

  6. 确保开关打开,并点击「保存」按钮

场景测试

Fallback

当用户在一个「语境」下,只有触发了您在该「语境」设置中的一个「用户说」,才可以得到相应的「机器人回复」。但,我们总会遇到用户说的内容系统暂时无法覆盖的情况。对于这种情况,我们可以使用 Fallback,设置一个回复来处理用户的问题。

这样,当用户在这个语境下说的内容无法被机器人理解的时候,就会触发 Fallback 的对话设置,给到相应的回复。 每个语境在创建的时候都会有一个 Fallback 对话,您可以配置这个对话里,希望机器人回复的内容和后续语境(我们建议设置为当前所在的语境)。

原有的「默认回复」,现在的 Fallback

如果您是之前在使用 Bothub 产品的用户,一定记得在「内容管理」-「系统内容」中有一个叫做「默认回复」的设置。如果您仍需要设置一个回复内容,来处理用户说的内容无法识别的情况,则可以在不同的语境下设置各自的 Fallback 即可。

场景:设置引导内容,引导用户

场景描述

希望当用户输入了机器人目前不能理解的问题时,委婉地回复用户等待人工客服的解决。

场景设置

1. 在「内容管理」 -> 「自定义内容组」中,添加内容块 “引导内容”。在内容块中设置,当机器人无法理解用户的内容时,您希望回复给用户的消息;

2. 前往「人工智能」 -> 「对话管理」,在中部「默认语境」这个组下面,点击“Fallback”

3. 「机器人回复内容块」中,选择「引导内容」

4. 「后续语境」选择「默认语境」

5. 确保开关打开,并点击「保存」按钮

场景测试

高级对话设置

我们在上文讲述了如何使用「对话管理」,来让机器人可以回复基本的用户输入的内容,但实际的场景可能会比较复杂。 下面,我们将从两个常见的实际场景开始,来讲述如何通过设置「语境」来解决用户的实际问题

场景一:同一个意图或关键词,在不同语境下给到不同回复

假设我们在运营一个酒店类的机器人,一个常见的用户问题是询问价格。当用户询问“Can you tell me the price?”的时候,可能是询问酒店房间的价格,也可能是询问餐厅的价格。如果没有区分不同的语境的话,则往往需要二次询问用户才可以确定用户到底在问哪个的价格。

通过设置场景,我们可以支持用户在不同场景下,询问相同的问题,可以根据用户当前场景直接给到正确的回复,而不需要再次询问。

场景设置

1. 新建内容块,分别设置当用户询问「酒店价格」与「餐厅价格」的相应回复

2. 新建两个语境:点击「+语境」,输入「预订酒店」与「预订餐厅」 。在「预订酒店」与 「预订餐厅」语境中,分别新建对话,设置当用户询问价格时的回复

预订酒店语境
预订餐厅语境

3. 「默认语境」下设置对话「预订酒店」与 「预订餐厅」,来决定当用户输入什么内容的时候将进入相应的语境

默认语境-预订酒店
默认语境-预订餐厅

场景测试

预订酒店的场景下,询问价格时
预订餐厅的场景下,询问价格时

场景二:从用户输入的内容中,提取有效的参数并引用

当用户预订完酒店,需要查询「预订状态」的时候,需要根据用户的订单号码或者留下的邮箱地址来查询。

为了实现上述内容,我们需要引入一个新的概念「参数提取」

参数提取

  1. 提取与引用:即您需要在用户输入的内容中提取到的参数,常见的场景是「预订单查询」。如果用户输入的内容符合「预订单查询」这个意图,则他需要输入自己的「预订单号」才可以成功查询到内容。这时,您就可以使用「参数提取」,来设置您需要提取的参数,并保存成一个自定义名称。接着,在后续的「机器人回复」的内容块中,引用这个参数即可。

  2. 参数存储在「语境」或者「全局」

    1. 对于像“订单号码”、“物流号码”等用户会经常修改的信息,我们建议存储在「语境」中。这意味着,只有当用户在这个「语境」下的时候,这个参数才生效,才能被内容块引用;且当用户离开这个「语境」的时候,这个参数便失效。

    2. 对于像“邮箱地址”“账号名称”等用户很少会修改的信息,我们建议存储在「全局」中。这意味着,即使用户离开了这个「语境」,这个参数也一直生效,可以被任意内容块引用。

  3. 提示:

    1. 当您设置了「参数提取」的规则后,我们的系统会在触发「用户说」的那一句用户输入的内容开始提取有效的参数。但实际上,用户可能不会在第一句话中就带有有效的参数。因此,您可以通过设置「提示」,来提示用户需要填写哪些参数(比如,订单号)。

    2. 「提示」的内容需要通过选择「内容块」来设置。您可以设置多个内容块,所有内容将会按照顺序依次呈现,每个内容块只呈现一次,直到参数成功提取。

  4. 失败时提示:所有「提示」内容都呈现之后,仍没有成功提取到参数,则当前对话会失效,会触发此处设置的「失败时提示」内容(也是选择一个内容块)并自动跳转回「默认语境」。

场景设置

1. 在「内容管理」中添加内容块,用来查询和回复用户的预订单信息

2. 在「默认语境」里添加对话「预订查询」

3. 设置参数提取:添加一个必填项,选择格式为「正则表达式」并输入订单号的格式,设置存储为的参数名称为{{order_num}},添加一句「提取失败时询问」,点击保存。

场景测试

场景三:全局对话,全局生效

比如,您希望当用户输入了一些负面情绪的内容,比如“I’m angry”,则立刻转接人工客服。 这时,您可以在「全局对话」进行设置。

「全局对话」中设置的对话规则,是当用户无论在哪个场景下,都可以触发的。

场景设置

1. 在「内容管理」中添加内容块,设置当用户生气时给到的回复

2. 在「全局对话」里添加对话「愤怒情绪处理」

3. 设置参数提取:添加一个必填项,选择格式为「正则表达式」并输入订单号的格式,设置存储为的参数名称为,添加一句「提取失败时询问」,点击保存。

场景测试

当用户在「默认语境」中,输入了可以触发「全局对话」的内容,会给到相应回复
用户在「预订酒店」语境下,输入可触发「全局对话」的内容,也会给到相应回复

需要注意的⚠️:

  • 全局对话的识别优先级高于默认语境与其他语境,意味着在全局和默认语境下设置相同意图或关键词的对话,全局下的对话会优先进行识别。

  • 除全局对话与默认语境之外,其他新建语境下的对话,需要勾选“设置为入口对话”,才能开启识别效果,否则只能通过成为“后续语境”来开启入口。

G_general_problem语境下的对话G_general_problem

使用「对话管理」,我们可以配置内容来处理「用户输入」的消息。对于用户「点击按钮」的消息,我们则可以使用「语境跳转插件」来处理语境和对话的切换。