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

步骤:
  1. 在DOO仪表板中创建一个网站频道。
  2. 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

步骤:
  1. 在DOO仪表盘中创建API收件箱。
  2. 创建自定义聊天UI并使用DOOClient加载和发送消息。当创建客户端实例时传递的DOOCallback参数会触发如onMessageSentonMessageReceived等消息事件。
注意事项:
  • 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");
});
1 回复

更多关于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'),
          ),
        ),
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!