【问题标题】:How to handle user names in Dialogflow?如何在 Dialogflow 中处理用户名?
【发布时间】:2019-08-14 15:44:54
【问题描述】:

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

  • 问候用户并解释机器人可以做什么
  • 请求暂停服务订阅(来自约 10 服务)
  • 询问暂停的开始时间和结束时间(两个不同的值)
  • 总结请求并重复键值

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

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

(用户):您好,我想暂停对 [SUB_NAME] 的订阅 [START_DATE] 到 [END_DATE]

(助理):您订阅的用户名是什么?

(用户):[user_name_123 or UserName123 or USER_NAME](字母数字,不遵循特定模式)

(助理):完成。您为 [user_name_123] 请求从 [START_DATE] 到 [END_DATE] 暂停 [SUB_NAME]。请检查您的电子邮件并确认您的请求。

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

user_name = input("你的用户名是什么?")

我想把它存储为一个变量,我可以用“$”来引用它。 有没有办法用 Dialogflow 做到这一点?

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

(助理):你的用户名是什么?

(用户):我的用户名是 [user_name_123]

【问题讨论】:

    标签: dialogflow-es actions-on-google


    【解决方案1】:

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

    假设您的意图返回用户名,在存储中设置用户名很简单:

    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
    

    希望有帮助!

    【讨论】:

    • 感谢您的回答,绝对有帮助。我认为这正是我正在寻找的。不幸的是,我不知道如何实现它。据我了解,我可以通过 Webhook 或内联编辑器访问外部函数,这两个我都没有使用过。是否有任何关于如何实现此代码的初学者友好教程?或者您知道以易于理解的方式记录在哪里?
    • 很高兴它有帮助。请投票并将答案标记为已接受!您可以查看codelab 以开始使用。
    【解决方案2】:

    您可以使用@sys.any 类型标记 Dialogflow 的训练短语中的特定单词,这将能够获取输入的一部分。然后您可以将其作为参数获取。

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

    您可能希望查看 Google 登录或 OAuth,而不是使用似乎未对您的服务进行身份验证的用户名。上述建议可行,但不是创建用户名的最佳方式。

    【讨论】:

    • 感谢您的回答!我将尝试使用 sys.any,看看它是否可以为我完成这项工作。在这一点上,我实际上并没有尝试将其链接到与服务器通信并验证用户的 API。目前,我只希望聊天机器人结构能够正常工作,即提取并重复用户名,如果您愿意,可以使用一个假人。也感谢您建议 Google 登录和 OAuth。我一定会在稍后的某个时间看看这种事情。
    猜你喜欢
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多