Flutter客服支持插件usedesk的使用

好的,我会根据您的要求回答关于“Flutter客服支持插件usedesk的使用”的内容,并提供完整的示例代码。以下是详细内容:


Flutter客服支持插件usedesk的使用

Pure dart SDK实现的usedesk.com服务 现在仅添加了UsedeskChat SDK。

开始使用

在Example目录下,有一个完全集成的Flutter聊天示例,使用了flutter_chat_ui包。

步骤:

  1. 实现token存储,例如使用shared_preferences:
import 'package:shared_preferences/shared_preferences.dart';
import 'package:usedesk/usedesk.dart';

class SharedPreferencesUsedeskChatStorage extends UsedeskChatStorageProvider {
  SharedPreferencesUsedeskChatStorage(this.prefs);
  final SharedPreferences prefs;

  [@override](/user/override)
  Future<String?> getToken() async {
    return prefs.getString('token');
  }

  [@override](/user/override)
  Future<void> setToken(String token) {
    return prefs.setString('token', token);
  }

  [@override](/user/override)
  Future<void> clearToken() {
    return prefs.remove('token');
  }
}
  1. 初始化聊天
final usedeskChat = await UsedeskChat.init(
    // 必填项
    storage: SharedPreferencesUsedeskChatStorage(prefs),
    companyId: companyId,

    // 可选项
    channelId: channelId,
    apiConfig: const ChatApiConfiguration(
        urlChat: 'https://pubsubsec.usedesk.ru',
        urlOfflineForm: 'https://secure.usedesk.ru/',
        urlToSendFile: 'https://secure.usedesk.ru/uapi/v1/send_file',
    ),
);
  1. 识别客户/传递附加数据
usedeskChat
  ..identify = IdentifyConfiguration(
      // 所有参数均为可选
      name: 'Serge Shkurko',
      email: 'mySuper@email.com',
      phoneNumber: 88005553535,
      additionalId: 'uuid_in_my_system',
  )
  ..additionalFields = { 
    '99999': 'v$appVersion:$appBuildNumber' 
  };
  1. 订阅消息流
usedeskChat.messagesStream.listen((List<MessageBase> message) { 
    MessageBase message = message.first;

    final isMyMessage = message is MessageFromClient;

    // 处理不同类型的消息
    if (message is MessageTextBase) {
        print(message.text);
    } else if (message is MessageImageBase) {
        print(message.file);
    } else if (message is MessageFileBase) {
        print(message.file);
    }
});
  1. 控制连接
usedeskChat.connect(); // 接收usedesk消息

usedeskChat.disconnect(); // 断开连接
  1. 发送消息
// 文本消息
usedeskChat.sendText('My cool message');

// 文件消息
usedeskChat.sendFile('My_cool_image.jpg', fileBytes);

示例代码

以下是完整的示例代码,展示了如何使用usedesk插件进行Flutter应用中的聊天功能集成。

import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

import 'package:usedesk/usedesk.dart';
import 'package:usedesk_example/pages/specify_project_page.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  final prefs = await SharedPreferences.getInstance();
  runApp(
    MaterialApp(
      home: SpecifyProjectPage(
        prefs: prefs,
      ),
    ),
  );
}

SpecifyProjectPage

import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:usedesk/usedesk.dart';

class SpecifyProjectPage extends StatefulWidget {
  final SharedPreferences prefs;

  SpecifyProjectPage({required this.prefs});

  [@override](/user/override)
  _SpecifyProjectPageState createState() => _SpecifyProjectPageState();
}

class _SpecifyProjectPageState extends State<SpecifyProjectPage> {
  late UsedeskChat usedeskChat;
  int? companyId;
  int? channelId;

  [@override](/user/override)
  void initState() {
    super.initState();
    initUsedesk();
  }

  Future<void> initUsedesk() async {
    // 初始化companyId和channelId
    companyId = 12345;
    channelId = 67890;

    usedeskChat = await UsedeskChat.init(
      storage: SharedPreferencesUsedeskChatStorage(widget.prefs),
      companyId: companyId!,
      channelId: channelId,
      apiConfig: const ChatApiConfiguration(
        urlChat: 'https://pubsubsec.usedesk.ru',
        urlOfflineForm: 'https://secure.usedesk.ru/',
        urlToSendFile: 'https://secure.usedesk.ru/uapi/v1/send_file',
      ),
    );

    // 识别客户
    usedeskChat
      ..identify = IdentifyConfiguration(
        name: 'Serge Shkurko',
        email: 'mySuper@email.com',
        phoneNumber: 88005553535,
        additionalId: 'uuid_in_my_system',
      )
      ..additionalFields = {
        '99999': 'v$appVersion:$appBuildNumber'
      };

    // 订阅消息流
    usedeskChat.messagesStream.listen((List<MessageBase> messages) {
      MessageBase message = messages.first;

      final isMyMessage = message is MessageFromClient;

      if (message is MessageTextBase) {
        print(message.text);
      } else if (message is MessageImageBase) {
        print(message.file);
      } else if (message is MessageFileBase) {
        print(message.file);
      }
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Usedesk Chat'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            // 连接聊天
            usedeskChat.connect();
          },
          child: Text('Start Chat'),
        ),
      ),
    );
  }
}

更多关于Flutter客服支持插件usedesk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter客服支持插件usedesk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter项目中集成UseDesk客服支持插件,可以帮助你快速实现客服聊天功能。下面是一个简单的代码示例,展示如何在Flutter应用中使用UseDesk插件。

首先,确保你已经在pubspec.yaml文件中添加了UseDesk插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  usedesk_flutter_sdk: ^最新版本号  # 请替换为当前最新版本号

然后,运行flutter pub get来安装依赖。

接下来,在你的Flutter应用中,你需要初始化UseDesk SDK并配置相关参数。以下是一个完整的示例代码:

import 'package:flutter/material.dart';
import 'package:usedesk_flutter_sdk/usedesk_flutter_sdk.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter UseDesk Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  void initState() {
    super.initState();
    // 初始化UseDesk SDK
    _initUseDesk();
  }

  void _initUseDesk() async {
    // 替换为你的UseDesk App ID和App Key
    final String appId = 'your_app_id';
    final String appKey = 'your_app_key';

    // 初始化UseDesk
    await UseDesk.init(
      appId: appId,
      appKey: appKey,
      // 其他可选配置
      // locale: 'zh', // 设置语言,默认为英文
      // customData: {'key': 'value'}, // 自定义数据
    );

    // 可以在这里添加其他初始化逻辑,比如检查用户登录状态等
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter UseDesk Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            // 打开UseDesk聊天窗口
            UseDesk.openChatWindow();
          },
          child: Text('打开客服聊天'),
        ),
      ),
    );
  }
}

在这个示例中,我们首先导入了usedesk_flutter_sdk包,然后在_MyHomePageStateinitState方法中初始化了UseDesk SDK。你需要将your_app_idyour_app_key替换为你自己的UseDesk App ID和App Key。

然后,我们创建了一个简单的按钮,当用户点击按钮时,会调用UseDesk.openChatWindow()方法打开UseDesk的聊天窗口。

这个示例代码展示了基本的UseDesk集成流程。根据你的具体需求,你可能需要添加更多的配置和处理逻辑,比如处理用户登录状态、传递自定义数据等。请参考UseDesk的官方文档以获取更多详细信息和高级用法。

回到顶部