Flutter聊天集成插件flutter_chatwoot_sdk的使用

Flutter聊天集成插件flutter_chatwoot_sdk的使用

通过在Flutter应用中集成Chatwoot客户端,您可以实时与访客聊天并提供卓越的支持。Chatwoot帮助您与访客进行实时交流,并提供出色的支持服务。要在您的Flutter应用中使用Chatwoot,请按照以下步骤操作。

chatwoot截图

1. 将插件添加到项目中

在终端运行以下命令:

flutter pub add flutter_chatwoot_sdk

或者

在项目的pubspec.yaml文件中添加:

dependencies:
  flutter_chatwoot_sdk: <<版本号>>

您可以在这里查看最新版本。

2. 如何使用

a. 使用ChatwootWidget

步骤:

  1. 在Chatwoot服务器上创建一个网站频道,具体步骤可以参考这里
  2. 替换websiteTokenbaseUrl

完整示例代码:

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

步骤:

  1. 在Chatwoot中创建一个API收件箱,具体步骤可以参考这里
  2. 创建自定义聊天界面,并使用ChatwootClient加载和发送消息。消息事件如onMessageSentonMessageReceived将在创建客户端实例时传递的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

1 回复

更多关于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();
回到顶部