Flutter集成特定服务插件doo_cx_flutter_sdk的使用
Flutter集成特定服务插件doo_cx_flutter_sdk的使用
DOO CX Flutter SDK
一个用于将DOO CX集成到您的Flutter移动应用程序中的包,适用于Android和iOS。DOO CX通过无缝整合AI与现有工具和工作流,帮助企业自动化日常任务、优化销售和服务流程,并提供个性化的交互。
1. 将插件添加到您的项目
在终端运行以下命令:
flutter pub add doo_cx_flutter_sdk
或者手动将其添加到项目的pubspec.yaml
文件中:
dependencies:
flutter:
sdk: flutter
doo_cx_flutter_sdk:
git:
url: https://github.com/doo-inc/doo-cx-flutter-sdk.git
完成后运行以下命令以安装依赖项:
flutter pub get
2. 使用SDK
a. 使用DOOWidget
步骤:
- 在DOO仪表板中创建一个网站频道。
- 在
main.dart
文件中替换your_website_token
。
示例代码:
class _MyHomePageState extends State<MyHomePage> {
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: DOOWidget(
websiteToken: "your_website_token", // 替换为您的网站令牌
baseUrl: "https://cx.doo.ooo", // DOO安装地址
user: DOOUser(
identifier: "flutter_tester", // 用户唯一标识符
name: "Flutter Tester", // 用户名
email: "someone@example.com", // 用户邮箱
),
locale: "en", // 用户语言
closeWidget: _handleCloseWidget, // 关闭小部件事件
onAttachFile: _handleAttachFile, // 文件附加事件
onLoadStarted: () {
if (kDebugMode) {
print("Loading Widget");
}
},
onLoadProgress: (int progress) {
if (kDebugMode) {
print("Loading... $progress");
}
},
onLoadCompleted: () {
if (kDebugMode) {
print("Widget Loaded");
}
},
),
);
}
void _handleCloseWidget() {
if (Platform.isAndroid) {
SystemNavigator.pop(); // Android关闭方式
} else if (Platform.isIOS) {
exit(0); // iOS关闭方式
}
}
Future<List<String>> _handleAttachFile() async {
return _mobileFilePicker();
}
Future<List<String>> _mobileFilePicker() async {
final picker = ImagePicker();
final photo = await picker.pickImage(source: 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 |
DOO安装地址 |
user |
- | DOOUser |
用户信息(如邮箱、用户名、头像URL) |
locale |
en |
String |
用户语言 |
closeWidget |
- | void Function() |
小部件关闭事件 |
customAttributes |
- | dynamic |
客户的额外信息 |
onAttachFile |
- | Future<List> |
小部件附件事件,应返回文件URI列表 |
onLoadStarted |
- | void Function() |
小部件加载开始事件 |
onLoadProgress |
- | void Function(int) |
小部件加载进度事件 |
onLoadCompleted |
- | void Function() |
小部件加载完成事件 |
b. 使用DOOClient
步骤:
- 在DOO仪表盘中创建API收件箱。
- 创建自定义聊天UI并使用
DOOClient
加载和发送消息。当创建客户端实例时传递的DOOCallback
参数会触发如onMessageSent
和onMessageReceived
等消息事件。
注意事项:
- DOO客户端使用Hive进行本地存储。
示例代码:
final dooCallbacks = DOOCallbacks(
onWelcome: () {
print("Welcome");
},
onPing: () {
print("Ping");
},
onConfirmedSubscription: () {
print("Confirmed subscription");
},
onConversationStartedTyping: () {
print("Conversation started typing");
},
onConversationStoppedTyping: () {
print("Conversation stopped typing");
},
onPersistedMessagesRetrieved: (persistedMessages) {
print("Persisted messages retrieved");
},
onMessagesRetrieved: (messages) {
print("Messages retrieved");
},
onMessageReceived: (dooMessage) {
print("Message received");
},
onMessageDelivered: (dooMessage, echoId) {
print("Message delivered");
},
onMessageSent: (dooMessage, echoId) {
print("Message sent");
},
onError: (error) {
print("Sorry! Something went wrong. Error: ${error.cause}");
},
);
DOOClient.create(
baseUrl: widget.baseUrl,
inboxIdentifier: widget.inboxIdentifier,
user: widget.user,
enablePersistence: widget.enablePersistence,
callbacks: dooCallbacks,
).then((client) {
client.loadMessages();
}).onError((error, stackTrace) {
print("DOO client creation failed with error $error: $stackTrace");
});
更多关于Flutter集成特定服务插件doo_cx_flutter_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
要在Flutter项目中集成并使用 doo_cx_flutter_sdk
插件,你需要按照以下步骤进行操作:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 doo_cx_flutter_sdk
插件的依赖。
dependencies:
flutter:
sdk: flutter
doo_cx_flutter_sdk: ^1.0.0 # 请根据实际情况填写版本号
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 doo_cx_flutter_sdk
插件。
import 'package:doo_cx_flutter_sdk/doo_cx_flutter_sdk.dart';
3. 初始化 SDK
在使用 SDK 之前,通常需要先进行初始化。你可以在 main.dart
或某个合适的时机调用初始化方法。
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 SDK
await DooCxFlutterSdk.initialize(
apiKey: 'YOUR_API_KEY', // 替换为你的 API Key
environment: Environment.production, // 选择环境,如 production 或 sandbox
);
runApp(MyApp());
}
4. 使用 SDK 功能
根据 doo_cx_flutter_sdk
提供的功能,你可以在应用中使用相应的 API。例如,假设 SDK 提供了用户登录功能,你可以这样调用:
void loginUser(String username, String password) async {
try {
final user = await DooCxFlutterSdk.login(username: username, password: password);
print('Login successful: ${user.name}');
} catch (e) {
print('Login failed: $e');
}
}
5. 处理 SDK 事件
如果 SDK 提供了事件监听功能,你可以注册监听器来处理这些事件。
void setupEventListeners() {
DooCxFlutterSdk.onEvent.listen((event) {
print('Event received: $event');
});
}
6. 配置其他设置
根据 SDK 的文档,可能还需要配置其他设置,例如设置用户信息、配置推送通知等。
void configureUserProfile() async {
await DooCxFlutterSdk.setUserProfile(
userId: '12345',
userName: 'John Doe',
userEmail: 'john.doe@example.com',
);
}
7. 处理生命周期
确保在应用的生命周期中正确处理 SDK 的初始化和销毁。
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
[@override](/user/override)
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
// 初始化 SDK 或其他设置
}
[@override](/user/override)
void dispose() {
WidgetsBinding.instance.removeObserver(this);
// 清理 SDK 或其他资源
super.dispose();
}
[@override](/user/override)
void didChangeAppLifecycleState(AppLifecycleState state) {
switch (state) {
case AppLifecycleState.resumed:
// 应用进入前台
break;
case AppLifecycleState.paused:
// 应用进入后台
break;
case AppLifecycleState.inactive:
// 应用不活跃
break;
case AppLifecycleState.detached:
// 应用被销毁
break;
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Doo CX SDK Example'),
),
body: Center(
child: Text('Hello, Doo CX SDK!'),
),
),
);
}
}
8. 调试和测试
在开发过程中,确保对 SDK 的集成进行充分的调试和测试,以确保其正常工作。
9. 发布应用
在发布应用之前,确保所有 SDK 相关的配置都已正确设置,并且应用在不同设备和环境下都能正常运行。
10. 参考文档
最后,建议详细阅读 doo_cx_flutter_sdk
的官方文档,以获取更多详细的使用说明和最佳实践。
示例代码
以下是一个简单的示例代码,展示了如何集成和使用 doo_cx_flutter_sdk
:
import 'package:flutter/material.dart';
import 'package:doo_cx_flutter_sdk/doo_cx_flutter_sdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 SDK
await DooCxFlutterSdk.initialize(
apiKey: 'YOUR_API_KEY',
environment: Environment.production,
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Doo CX SDK Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
try {
final user = await DooCxFlutterSdk.login(
username: 'testuser',
password: 'testpassword',
);
print('Login successful: ${user.name}');
} catch (e) {
print('Login failed: $e');
}
},
child: Text('Login'),
),
),
),
);
}
}