#flutter #dart #bots #dialogflow-es
# #трепетание #dart #боты #dialogflow-es
Вопрос:
Я клонировал этот проект с Github https://github.com/neon97/chatbot_dialogflow но я не получаю ответа от бота.
Я добавил правильные учетные данные Dialogflow JSON в папку YAML, и, похоже, они в порядке. Любая помощь будет высоко оценена.
Ниже я добавляю код main.dart и pubspec
Main.dart
import 'package:bubble/bubble.dart';
import 'package:flutter/material.dart';
import 'package:flutter_dialogflow/dialogflow_v2.dart';
void main() {
runApp(MaterialApp(
home: MyApp(),
debugShowCheckedModeBanner: false,
));
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
void response(query) async {
AuthGoogle authGoogle = await AuthGoogle(
fileJson: "assets/smartstudentguide-vfml-3892228c2f8e.json")
.build();
Dialogflow dialogflow =
Dialogflow(authGoogle: authGoogle, language: Language.english);
AIResponse aiResponse = await dialogflow.detectIntent(query);
setState(() {
messsages.insert(0, {
"data": 0,
"message": aiResponse.getListMessage()[0]["text"]["text"][0].toString()
});
});
}
final messageInsert = TextEditingController();
// ignore: deprecated_member_use
List<Map> messsages = List();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
"Smart Student Guide",
),
backgroundColor: Colors.deepOrange,
),
body: Container(
child: Column(
children: <Widget>[
Flexible(
child: ListView.builder(
reverse: true,
itemCount: messsages.length,
itemBuilder: (context, index) => chat(
messsages[index]["message"].toString(),
messsages[index]["data"]))),
Divider(
height: 5.0,
color: Colors.deepOrange,
),
Container(
padding: EdgeInsets.only(left: 15.0, right: 15.0),
margin: const EdgeInsets.symmetric(horizontal: 8.0),
child: Row(
children: <Widget>[
Flexible(
child: TextField(
controller: messageInsert,
decoration: InputDecoration.collapsed(
hintText: "Send your message",
hintStyle: TextStyle(
fontWeight: FontWeight.bold, fontSize: 18.0)),
)),
Container(
margin: EdgeInsets.symmetric(horizontal: 4.0),
child: IconButton(
icon: Icon(
Icons.send,
size: 30.0,
color: Colors.deepOrange,
),
onPressed: () {
if (messageInsert.text.isEmpty) {
print("empty message");
} else {
setState(() {
messsages.insert(0,
{"data": 1, "message": messageInsert.text});
});
response(messageInsert.text);
messageInsert.clear();
}
}),
)
],
),
),
SizedBox(
height: 15.0,
)
],
),
),
);
}
//for better one i have use the bubble package check out the pubspec.yaml
Widget chat(String message, int data) {
return Padding(
padding: EdgeInsets.all(10.0),
child: Bubble(
radius: Radius.circular(15.0),
color: data == 0 ? Colors.deepOrange : Colors.orangeAccent,
elevation: 0.0,
alignment: data == 0 ? Alignment.topLeft : Alignment.topRight,
nip: data == 0 ? BubbleNip.leftBottom : BubbleNip.rightTop,
child: Padding(
padding: EdgeInsets.all(2.0),
child: Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
CircleAvatar(
backgroundImage: AssetImage(
data == 0 ? "assets/bot.png" : "assets/user.png"),
),
SizedBox(
width: 10.0,
),
Flexible(
child: Text(
message,
style: TextStyle(
color: Colors.white, fontWeight: FontWeight.bold),
))
],
),
)),
);
}
}
pubspec.yaml
name: chatbot_dialogflow
description: A new Flutter project.
publish_to: 'none'
version: 1.0.0 1
environment:
sdk: ">=2.7.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.3
flutter_dialogflow: ^0.1.3
bubble: ^1.1.9 1
dev_dependencies:
flutter_test:
sdk: flutter
flutter:
uses-material-design: true
assets:
- assets/smartstudentguide-vfml-3892228c2f8e.json
- assets/bot.png
- assets/user.png
Я создал учетную запись служб и создал учетные данные JSON, загрузил файл и добавил его в папку активов. приложение успешно запускается, но бот не отвечает на запросы. Пожалуйста, помогите мне с тем, что я новичок в flutter и только начал его изучать.
Заранее благодарю.
Ответ №1:
Я не знаю точной проблемы в вашем коде. Просто чтобы внести свой вклад. Я хочу упомянуть об этом репозитории. Этот подход идеально подходит для меня при интеграции чат-бота dialogflow в мое приложение flutter
https://github.com/Aditsyal/flutter_chatBot
Просто скопируйте dialog_flow.dart и fact_message.перейдите из библиотеки, перейдите к классу FlutterFactsChatBot(), когда ваш виджет нажат. пользовательский виджет чата, который я использую, упоминается ниже.
// страница 3 упоминается FlutterFactsChatbot() в main.dart в качестве маршрута. Виджет factBot(контекст BuildContext) { возвращает контейнер (выравнивание: Alignment.bottomRight, дочерний элемент: FloatingActionButton( materialTapTargetSize: MaterialTapTargetSize.padded, дочерний элемент: Центр (дочерний элемент: значок (Icons.chat), ), высота: 4.0, цвет фона: Colors.blue, onPressed: () => Navigator.pushNamed(контекст, ‘/ page3’), ) ); }
Ответ №2:
Если вы все еще сталкиваетесь с проблемой интеграции чат-бота Dialogflow в свое приложение Flutter, то существует множество платформ, поддерживающих интеграцию чат-бота Dialogflow.
Ниже приведены шаги для достижения того же результата:
- Интегрируйте чат-бота Dialogflow в стороннюю платформу, такую как Kommunicate
- После завершения интеграции бота добавьте функцию чата в свое приложение flutter. Ознакомьтесь с документацией по интеграции чата в приложение flutter.