Flutter对话流管理插件flutter_dialogflow的使用
Flutter对话流管理插件flutter_dialogflow的使用
Dialogflow v1 & v2 for Flutter apps.
❤️ Star ❤️ 仓库以支持项目。谢谢!
这是一个新的Flutter包。

精彩教程
- Flutter 和 Bots (DialogFlow). 作者: Aseem Wangoo
- 使用 Flutter、DialogFlow 和 GCP 实现库存跟踪 iOS & Android 应用程序. 作者: Alfian Losari
感谢这些教程!
安装
- 在项目的
pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter_dialogflow: ^0.1.0
- 使用命令行安装包:
$ flutter packages get
- 导入包(对于 Dialogflow v1 或 v2):
// 对于 Dialogflow v1
import 'package:flutter_dialogflow/flutter_dialogflow.dart';
// 对于 Dialogflow v2
import 'package:flutter_dialogflow/dialogflow_v2.dart';
使用
Dialogflow v1
- 在 Dialogflow 注册并创建一个新的代理。
- 复制 API 密钥(Token)。
- 编写代码:
// 初始化 Dialogflow 并发送查询
Dialogflow dialogflow = Dialogflow(token: "Your Token");
AIResponse response = await dialogflow.sendQuery("Your Query");
// 打印响应消息
print(response.getMessageResponse());
- 示例代码:
void Response(String query) async {
Dialogflow dialogflow = Dialogflow(token: "10178f9cb6cf12321asdf4aae75c87cd");
AIResponse response = await dialogflow.sendQuery(query);
print(response.getMessageResponse()); // 打印消息响应
}
Dialogflow v2
- 在 Dialogflow 注册并创建一个新的代理。
- 设置 Google Cloud 项目和认证:
- 创建或选择一个现有的 GCP 项目。
- 在 GCP 控制台中,转到“API 和服务” -> “凭据”。
- 点击“创建凭据”,然后选择“服务账号密钥”。
- 从下拉菜单中选择您的服务账号,选择 JSON 格式并点击“创建”。这将下载 JSON 密钥文件到您的计算机。
- 将下载的 JSON 文件移动到项目中的
assets
文件夹。
- 在
pubspec.yaml
中配置资源:
flutter:
uses-material-design: true
assets:
- assets/your_file_downloaded_google_cloud.json
- 导入
dialogflow_v2
包:
import 'package:flutter_dialogflow/dialogflow_v2.dart';
- 编写代码:
AuthGoogle authGoogle = await AuthGoogle(fileJson: "Asset Your File Json").build();
Dialogflow dialogflow = Dialogflow(authGoogle: authGoogle, language: Language.ENGLISH);
AIResponse response = await dialogflow.detectIntent("Your Query");
// 打印消息
print(response.getMessage());
- 示例代码:
AuthGoogle authGoogle = await AuthGoogle(fileJson: "assets/your_file_downloaded_google_cloud.json").build();
Dialogflow dialogflow = Dialogflow(authGoogle: authGoogle, language: Language.ENGLISH);
AIResponse response = await dialogflow.detectIntent("Hi!!!");
print(response.getMessage()); // 打印消息
- 获取卡片类型的消息列表:
List<dynamic> listMessages = response.getListMessage(); // 获取消息列表
CardDialogflow card = new CardDialogflow(listMessages[0]); // 转换第一个消息为卡片
String title = card.title; // 获取标题
String subtitle = card.subtitle; // 获取副标题
String imageUri = card.imageUri; // 获取图片链接
List<Button> buttons = card.buttons; // 获取按钮列表
Dialogflow for Flutter Web
访问仓库: Flutter Dialogflow Web 🚀
示例代码
以下是完整的示例代码,展示了如何在 Flutter 中使用 flutter_dialogflow
插件。
import 'package:example/dialogflow_v1.dart';
import 'package:example/dialogflow_v2.dart';
import 'package:flutter/material.dart';
import 'google_assistant.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Example Dialogflow Flutter',
theme: new ThemeData(
primarySwatch: Colors.deepOrange,
),
home: new MyHomePage(title: 'Flutter Demo Dialogflow'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
[@override](/user/override)
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
[@override](/user/override)
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new Column(children: <Widget>[
new Container(
margin: EdgeInsets.all(10.0),
child: new RaisedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => PageDialogflowV1()),
);
},
child: Text("Dialogflow v1"),
),
),
new Container(
margin: EdgeInsets.all(10.0),
child: new RaisedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => HomePageDialogflowV2()),
);
},
child: Text("Dialogflow v2"),
),
),
new Container(
margin: EdgeInsets.all(10.0),
child: new RaisedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => GoogleAssistant()),
);
},
child: Text("Google Assistant"),
),
)
]),
);
}
}
更多关于Flutter对话流管理插件flutter_dialogflow的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter对话流管理插件flutter_dialogflow的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_dialogflow
是一个用于在 Flutter 应用中集成 Google Dialogflow 的插件。Dialogflow 是一个自然语言处理平台,可以帮助你构建对话式界面,如聊天机器人、语音助手等。通过 flutter_dialogflow
,你可以轻松地将 Dialogflow 的功能集成到你的 Flutter 应用中。
安装 flutter_dialogflow
首先,你需要在 pubspec.yaml
文件中添加 flutter_dialogflow
依赖:
dependencies:
flutter:
sdk: flutter
flutter_dialogflow: ^0.1.0
然后运行 flutter pub get
来安装依赖。
配置 Dialogflow
-
创建 Dialogflow 代理:在 Dialogflow 控制台 中创建一个新的代理。
-
获取服务账号密钥:
- 在 Google Cloud Console 中,创建一个新的项目或使用现有项目。
- 启用 Dialogflow API。
- 创建一个服务账号并下载其 JSON 密钥文件。
-
将密钥文件添加到 Flutter 项目:将下载的 JSON 密钥文件放在
assets
目录下,并在pubspec.yaml
中声明:
flutter:
assets:
- assets/your-service-account-key.json
使用 flutter_dialogflow
以下是一个简单的示例,展示如何使用 flutter_dialogflow
与 Dialogflow 进行交互:
import 'package:flutter/material.dart';
import 'package:flutter_dialogflow/dialogflow_v2.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Dialogflow Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: ChatScreen(),
);
}
}
class ChatScreen extends StatefulWidget {
[@override](/user/override)
_ChatScreenState createState() => _ChatScreenState();
}
class _ChatScreenState extends State<ChatScreen> {
final List<Map<String, String>> _messages = [];
final TextEditingController _controller = TextEditingController();
Future<void> _sendMessage(String message) async {
setState(() {
_messages.add({"message": message, "isUser": "true"});
});
AuthGoogle authGoogle = await AuthGoogle(
fileJson: "assets/your-service-account-key.json",
).build();
Dialogflow dialogflow = Dialogflow(authGoogle: authGoogle, language: "en");
AIResponse response = await dialogflow.detectIntent(message);
setState(() {
_messages.add({"message": response.getMessage() ?? "No response", "isUser": "false"});
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Chat with Dialogflow'),
),
body: Column(
children: <Widget>[
Expanded(
child: ListView.builder(
itemCount: _messages.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(_messages[index]["message"]!),
subtitle: Text(_messages[index]["isUser"] == "true" ? "You" : "Bot"),
);
},
),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
children: <Widget>[
Expanded(
child: TextField(
controller: _controller,
decoration: InputDecoration(
hintText: "Type a message",
),
),
),
IconButton(
icon: Icon(Icons.send),
onPressed: () {
_sendMessage(_controller.text);
_controller.clear();
},
),
],
),
),
],
),
);
}
}