如何在 Dialogflow 中处理用户名?

How to handle user names in Dialogflow?

首先,我是 Dialogflow 的新手,也是一般编码的新手。我正在尝试构建一个处理订阅暂停的机器人。 我已经为以下步骤设置了一些意图和实体:

我(几乎)对此感到满意,但我想实现一个输入用户名的提示。我不知道是否有任何内置变量可以帮助我。

这就是我希望对话的样子:

(User): Hi, I would like to pause my subscription for [SUB_NAME] from [START_DATE] to [END_DATE]

(Assistant): What is your user name for the subscription?

(User): [user_name_123 or UserName123 or USER_NAME] (alphanumeric, not following a certain pattern)

(Assistant): Done. You requested a pause for [SUB_NAME] from [START_DATE] to [END_DATE] for [user_name_123]. Please check your e-mails and confirm your request.

我(我认为)需要的是一个非常简单的自定义变量。在 Python 我会选择这样的东西:

user_name = input("What's your user name?")

我想将其存储为一个变量,我可以用“$”引用它。 有什么方法可以用 Dialogflow 做到这一点吗?

另外,是否可以如上所示提取用户名,即没有与 ML 兼容的周围句子结构? 我不希望对话像这样被强制重复:

(Assistant): What's your user name?

(User): My user name is [user_name_123]

如果您在 Google 上使用操作,您可以使用 userStorage 保存用户的用户名,然后访问它以执行任务(在您的情况下暂停订阅)

假设您的意图是 returns 用户名,在存储中设置用户名非常简单:

app.intent('ask_username', (conv, params) => {

   conv.user.storage.username = params.username; // use $ as conv.user.storage.$ if you want
   conv.ask(`Ok, What would I help you with ?.`);

});

然后您可以简单地访问用户名:

conv.user.storage.username

希望对您有所帮助!

你可以在Dialogflow的训练短语中标记特定的词,类型为@sys.any,这将能够抓取一部分输入。然后你可以把它作为参数抓取。

Sys.any 在这些类型的抽象输入类型中非常有用,但将需要更多的训练短语,因为仅匹配用户名变得更加困难。

您可能想查看 Google 登录或 OAuth,而不是使用用户名,因为用户名似乎未针对您的服务进行身份验证。上面的建议可行,但不是处理用户名的最佳方式。