【问题标题】:How to create a Chatbot with response options in flutter?如何在颤动中创建具有响应选项的聊天机器人?
【发布时间】:2019-10-11 12:26:55
【问题描述】:

见下图:

如何在 Flutter 中使用 DialogFlow 或任何其他聊天机器人框架实现自动响应。

我只是想知道在红色区域突出显示所需结果的方法。

【问题讨论】:

    标签: flutter dart dialogflow-es


    【解决方案1】:

    您可以使用 dialogflow 来生成机器人的响应,然后添加芯片 Widegt 来表示一个可操作的按钮,如下所示:

    Chip
    (avatar: CircleAvatar(
    backgroundColor: Colors.grey.shade800,
    child: Text('AB'),
    ),
    label: Text('Aaron Burr'),)
    

    此外,您可以使用 Dialogflow 构建聊天机器人并向用户提供选项按钮。

    添加选项按钮的方式有很多种,例如自定义payload、谷歌助手等。使用custom payload可以添加自定义富消息类型。

    要使用选项按钮构建聊天机器人并将其添加到您的 Flutter 应用程序中,您可以使用Kommunicate 之类的平台,该平台允许您将机器人部署到移动应用程序中。

    要将此聊天机器人集成到您的 Flutter 应用程序中,您可以查看此参考资料documentation

    【讨论】:

    • 是的,但问题是如何在颤振应用程序中访问自定义有效负载。
    • 您只需在 Dialogflow 中添加自定义有效负载,这样一旦您在 Flutter 应用上进行聊天集成,像 Kommunicate 这样的平台就会在您的 Flutter 应用上呈现丰富的消息。
    • 那么我如何在 Flutter 中调用来自 Kommunicate 的渲染消息?
    【解决方案2】:

    编辑:使用dialogflow_v2 似乎你可以做这样的事情来获得自定义建议:

    在 Dialogflow 控制台中,您可以向消息中添加自定义负载,如下所示:

    {"suggestions": ["Reply 1", "Reply 2"]}
    

    创建一个BotSuggestions 类:

    class BotSuggestions {
      List<String> suggestions = [];
    
      BotSuggestions(List<dynamic> messages) {
        messages.forEach((message) {
          if (message['payload'] != null) {
            List<dynamic> suggestionList = message['payload']['suggestions'];
            suggestionList.forEach((suggestion) => suggestions.add(suggestion));
          }
        });
      }
    }
    

    然后,你可以这样使用它:

    var botSuggestions = BotSuggestions(response.getListMessage());
    print(botSuggestions.suggestions);
    

    这是一个完整的使用示例:

    var userMessage = "Hi!!!";
    print('User: $userMessage');
    response = await dialogflow.detectIntent(userMessage);
    var botSuggestions = BotSuggestions(response.getListMessage());
    print('Bot: ${response.getMessage()}');
    print('Suggestions: ${botSuggestions.suggestions}');
    
    userMessage = botSuggestions.suggestions.first;
    print('User: $userMessage');
    response = await dialogflow.detectIntent(userMessage);
    botSuggestions = BotSuggestions(response.getListMessage());
    print('Bot: ${response.getMessage()}');
    print('Suggestions: ${botSuggestions.suggestions}');
    

    这将是输出:

    我/颤动(5917):用户:嗨!!!

    我/颤动(5917):机器人:嗨!你好吗?

    I/flutter (5917):建议:[回复 1,回复 2]

    I/flutter (5917):用户:回复 1

    I/flutter (5917):Bot:抱歉,那是什么?

    I/flutter (5917):建议:[]


    我在包存储库中询问了这个问题,看看是否有其他方法可以做到这一点,您可以在此处关注线程:How to get suggestions in v2?

    【讨论】:

    • 怎样才能使这个功能可用?
    • 正如我在回答中告诉你的那样,你可以在包中发布一个问题以让别人查看它,你也可以尝试使用我提供的信息使其工作。
    • 这对我来说看起来很难,你能帮我多一点吗
    • 我不觉得所以我2个月前才用过,当时有吗?
    • flutter_dialogflow: ^0.1.2 这是我正在使用的
    【解决方案3】:

    我可能会向你推荐本指南

    1. 在这里您将学习如何在您的应用中使用对话框流

      https://medium.com/flutterpub/flutter-and-bots-dialogflow-d490fc7e5aaf

    2. 这里你将学习如何在flutter中使用Chip widget

      https://api.flutter.dev/flutter/material/Chip-class.html

    3. 示例代码

      how to create horizontal and vertical scrollable widgets in flutter

    我希望这一切都会对你有所帮助。

    【讨论】:

    • 我学会了使用对话流制作聊天机器人。但是如何根据机器人提出的问题给用户特定的选项呢?
    • @Maadhav.. 你找到解决方案了吗?我必须创建一个类似的 UI,其中响应包含您突出显示的红框项目
    • @user2570135 不幸的是,由于插件尚未完全开发,我不得不停止该项目。如果您找到合适的解决方案,请告诉我,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    • 2017-03-05
    相关资源
    最近更新 更多