Flutter聊天集成插件flutter_chatwoot_sdk的使用
Flutter聊天集成插件flutter_chatwoot_sdk的使用
通过在Flutter应用中集成Chatwoot客户端,您可以实时与访客聊天并提供卓越的支持。Chatwoot帮助您与访客进行实时交流,并提供出色的支持服务。要在您的Flutter应用中使用Chatwoot,请按照以下步骤操作。
1. 将插件添加到项目中
在终端运行以下命令:
flutter pub add flutter_chatwoot_sdk
或者
在项目的pubspec.yaml
文件中添加:
dependencies:
flutter_chatwoot_sdk: <<版本号>>
您可以在这里查看最新版本。
2. 如何使用
a. 使用ChatwootWidget
步骤:
- 在Chatwoot服务器上创建一个网站频道,具体步骤可以参考这里。
- 替换
websiteToken
和baseUrl
。
完整示例代码:
import 'dart:io';
import 'package:flutter_chatwoot_sdk/flutter_chatwoot_sdk.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:image/image.dart' as image;
import 'package:image_picker/image_picker.dart' as image_picker;
import 'package:path_provider/path_provider.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Chatwoot Example"),
),
body: ChatwootWidget(
websiteToken: "您的Website Token", // 替换为实际值
baseUrl: "https://app.chatwoot.com", // 替换为实际值
user: ChatwootUser(
identifier: "test@test.com",
name: "Tester test",
email: "test@test.com",
),
locale: "en",
closeWidget: () {
if (Platform.isAndroid) {
SystemNavigator.pop();
} else if (Platform.isIOS) {
exit(0);
}
},
// 附件功能目前仅支持Android
onAttachFile: _androidFilePicker,
onLoadStarted: () {
print("加载小部件...");
},
onLoadProgress: (int progress) {
print("加载进度: ${progress}%");
},
onLoadCompleted: () {
print("小部件加载完成");
},
),
);
}
Future<List<String>> _androidFilePicker() async {
final picker = image_picker.ImagePicker();
final photo = await picker.pickImage(source: image_picker.ImageSource.gallery);
if (photo == null) {
return [];
}
final imageData = await photo.readAsBytes();
final decodedImage = image.decodeImage(imageData)!;
final scaledImage = image.copyResize(decodedImage, width: 500);
final jpg = image.encodeJpg(scaledImage, quality: 90);
final filePath = (await getTemporaryDirectory()).uri.resolve(
'./image_${DateTime.now().microsecondsSinceEpoch}.jpg',
);
final file = await File.fromUri(filePath).create(recursive: true);
await file.writeAsBytes(jpg, flush: true);
return [file.uri.toString()];
}
}
可用参数说明:
参数名称 | 默认值 | 类型 | 描述 |
---|---|---|---|
websiteToken | - | String | 网站收件箱通道令牌 |
baseUrl | - | String | Chatwoot安装地址 |
user | - | ChatwootUser | 用户信息,如电子邮件、用户名等 |
locale | en | String | 用户语言 |
closeWidget | - | void Function() | 关闭小部件事件 |
customAttributes | - | dynamic | 关于客户的其他信息 |
onAttachFile | - | Future<List> | 小部件附加文件事件,应返回文件URI列表 |
onLoadStarted | - | void Function() | 小部件加载开始事件 |
onLoadProgress | - | void Function(int) | 小部件加载进度事件 |
onLoadCompleted | - | void Function() | 小部件加载完成事件 |
b. 使用Chatwoot Client
步骤:
- 在Chatwoot中创建一个API收件箱,具体步骤可以参考这里。
- 创建自定义聊天界面,并使用
ChatwootClient
加载和发送消息。消息事件如onMessageSent
和onMessageReceived
将在创建客户端实例时传递的ChatwootCallback
中触发。
示例代码:
final chatwootCallbacks = ChatwootCallbacks(
onWelcome: (){
print("欢迎事件触发");
},
onPing: (){
print("Ping事件触发");
},
onConfirmedSubscription: (){
print("订阅确认事件触发");
},
onConversationStartedTyping: (){
print("会话开始输入事件触发");
},
onConversationStoppedTyping: (){
print("会话停止输入事件触发");
},
onPersistedMessagesRetrieved: (persistedMessages){
print("已保存的消息已检索到");
},
onMessagesRetrieved: (messages){
print("消息已检索到");
},
onMessageReceived: (chatwootMessage){
print("接收到消息");
},
onMessageDelivered: (chatwootMessage, echoId){
print("消息已送达");
},
onMessageSent: (chatwootMessage, echoId){
print("消息已发送");
},
onError: (error){
print("出错!错误原因: ${error.cause}");
},
);
ChatwootClient.create(
baseUrl: widget.baseUrl,
inboxIdentifier: widget.inboxIdentifier,
user: widget.user,
enablePersistence: widget.enablePersistence,
callbacks: chatwootCallbacks
).then((client) {
client.loadMessages();
}).onError((error, stackTrace) {
print("Chatwoot客户端创建失败,错误信息: $error");
});
更多关于Flutter聊天集成插件flutter_chatwoot_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter聊天集成插件flutter_chatwoot_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_chatwoot_sdk
是一个用于在 Flutter 应用中集成 Chatwoot 聊天功能的插件。Chatwoot 是一个开源的多渠道客户支持工具,可以帮助你轻松地与客户进行沟通。
安装插件
首先,你需要在 pubspec.yaml
文件中添加 flutter_chatwoot_sdk
依赖:
dependencies:
flutter:
sdk: flutter
flutter_chatwoot_sdk: ^latest_version
然后运行 flutter pub get
来安装插件。
基本用法
1. 初始化 Chatwoot SDK
在使用 Chatwoot SDK 之前,你需要先初始化它。通常你可以在 main.dart
文件的 main
函数中进行初始化:
import 'package:flutter/material.dart';
import 'package:flutter_chatwoot_sdk/flutter_chatwoot_sdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Chatwoot.initialize(
baseUrl: 'https://your-chatwoot-instance.com', // Chatwoot 实例的 URL
websiteToken: 'your-website-token', // 网站令牌
);
runApp(MyApp());
}
2. 启动聊天界面
你可以通过调用 Chatwoot.showChat()
来启动聊天界面:
import 'package:flutter/material.dart';
import 'package:flutter_chatwoot_sdk/flutter_chatwoot_sdk.dart';
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Chatwoot Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
Chatwoot.showChat();
},
child: Text('Open Chat'),
),
),
),
);
}
}
3. 设置用户信息(可选)
你可以设置当前用户的信息,以便在聊天界面中显示:
Chatwoot.setUser(
identifier: 'user-123',
name: 'John Doe',
email: 'john.doe@example.com',
);
4. 监听聊天事件(可选)
你可以监听聊天事件,例如新消息、聊天状态变化等:
Chatwoot.onMessageReceived.listen((message) {
print('New message received: ${message.content}');
});
Chatwoot.onChatStatusChanged.listen((status) {
print('Chat status changed: $status');
});
其他功能
发送消息
你可以通过编程方式发送消息:
Chatwoot.sendMessage('Hello, this is a test message');
设置自定义属性
你可以设置自定义属性,这些属性将与聊天会话一起保存:
Chatwoot.setCustomAttributes({
'plan': 'premium',
'signup_date': '2023-10-01',
});
重置用户会话
如果你想重置当前用户的会话,可以使用 reset
方法:
Chatwoot.reset();