Flutter集成Zendesk客服插件zendesk_flutter_combination的使用

Flutter集成Zendesk客服插件zendesk_flutter_combination的使用

Zendesk Flutter支持

  • Native UI
  • 聊天历史
  • 答案机器人
  • 工单列表

如何使用?

初始化

@Override
void initState() {
  super.initState();
  ZendeskFlutterCombination.initialize(
    appId: "{zendeskApplicationId}",
    clientId: "{zendeskMobileClientId}",
    nameIdentifier: "{customerNameIdentifieer}",
    urlString: "{yourCompanyzendeskDomain}"
  );
}

只需调用一次 initialize() 方法

显示帮助中心

ZendeskFlutterCombination.showHelpCenter();

您可以在 onTap() 中使用

显示工单/请求列表

ZendeskFlutterCombination.showRequestList();

您可以在 onTap() 中使用

显示新请求/工单屏幕

ZendeskFlutterCombination.showRequest();

您可以在 onTap() 中使用

示例代码

以下是一个完整的示例代码,展示如何在Flutter应用中集成Zendesk客服插件。

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

import 'package:flutter/services.dart';
import 'package:zendesk_flutter_combination/zendesk_flutter_combination.dart';

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

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = '未知';
  final _zendeskFlutterCombinationPlugin = ZendeskFlutterCombination();
  final List<String> channelMessages = [];

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

    ZendeskFlutterCombination.setMessageHandler((type, arguments) {
      setState(() {
        channelMessages.add("$type - args=$arguments");
      });
    });
  }

  // 平台消息是异步的,所以我们初始化在一个异步方法中。
  Future<void> initPlatformState() async {
    String platformVersion;
    // 平台消息可能会失败,所以我们使用一个try/catch来捕获PlatformException。
    // 我们也处理了消息可能返回null的情况。
    try {
      platformVersion = 
          await _zendeskFlutterCombinationPlugin.getPlatformVersion() ?? '未知平台版本';
    } on PlatformException {
      platformVersion = '获取平台版本失败。';
    }

    // 如果小部件从树中被移除,而异步平台消息正在飞行中,我们希望丢弃回复而不是调用setState来更新我们的非存在的外观。
    if (!mounted) return;

    setState(() {
      _platformVersion = platformVersion;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: Center(
          child: Column(children: [
            Text('运行在: $_platformVersion\n'),
            ElevatedButton(
              style: ElevatedButton.styleFrom(
                shape: RoundedRectangleBorder(
                  borderRadius: BorderRadius.circular(6), // -- 半径
                ),
                elevation: 0,
                primary: Colors.pink,
                minimumSize: const Size.fromHeight(
                    40), // fromHeight 使用double.infinity作为宽度和40作为高度
              ),
              onPressed: () {
                ZendeskFlutterCombination.initialize(
                  appId: "{zendeskApplicationId}",
                  clientId: "{zendeskMobileClientId}",
                  nameIdentifier: "{customerNameIdentifieer}",
                  urlString: "{yourCompanyzendeskDomain}"
                );
              },
              child: Text(
                '初始化',
              ),
            ),
            SizedBox(height: 20,),
            ElevatedButton(
              style: ElevatedButton.styleFrom(
                shape: RoundedRectangleBorder(
                  borderRadius: BorderRadius.circular(6), // -- 半径
                ),
                elevation: 0,
                primary: Colors.pink,
                minimumSize: const Size.fromHeight(
                    40), // fromHeight 使用double.infinity作为宽度和40作为高度
              ),
              onPressed: () {
                ZendeskFlutterCombination.showHelpCenter();
              },
              child: Text(
                '帮助中心',
              ),
            ),
            SizedBox(height: 20,),
            ElevatedButton(
              style: ElevatedButton.styleFrom(
                shape: RoundedRectangleBorder(
                  borderRadius: BorderRadius.circular(6), // -- 半径
                ),
                elevation: 0,
                primary: Colors.pink,
                minimumSize: const Size.fromHeight(
                    40), // fromHeight 使用double.infinity作为宽度和40作为高度
              ),
              onPressed: () {
                ZendeskFlutterCombination.showRequestList();
              },
              child: Text(
                '请求列表',
              ),
            ),
            SizedBox(height: 20,),
            ElevatedButton(
              style: ElevatedButton.styleFrom(
                shape: RoundedRectangleBorder(
                  borderRadius: BorderRadius.circular(6), // -- 半径
                ),
                elevation: 0,
                primary: Colors.pink,
                minimumSize: const Size.fromHeight(
                    40), // fromHeight 使用double.infinity作为宽度和40作为高度
              ),
              onPressed: () {
                ZendeskFlutterCombination.showRequest();
              },
              child: Text(
                '请求',
              ),
            ),
          ]),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中集成并使用zendesk_flutter_combination插件的示例代码。请注意,这个插件可能是一个假设的插件名称,因为实际的Zendesk Flutter插件通常有不同的命名(例如zendesk_flutter_sdk)。不过,为了符合你的要求,我将以zendesk_flutter_combination作为示例插件名称进行说明。如果实际插件名称不同,请相应地调整代码。

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

dependencies:
  flutter:
    sdk: flutter
  zendesk_flutter_combination: ^latest_version  # 替换为实际插件的最新版本号

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

接下来,在你的Flutter项目中初始化并使用Zendesk插件。以下是一个简单的示例,展示了如何初始化Zendesk并启动聊天窗口:

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

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

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

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

class _MyHomePageState extends State<MyHomePage> {
  final Zendesk _zendesk = Zendesk();

  @override
  void initState() {
    super.initState();
    // 初始化Zendesk,替换以下参数为你的实际Zendesk配置
    _initZendesk();
  }

  void _initZendesk() async {
    try {
      await _zendesk.init(
        accountId: 'your_account_id',  // 替换为你的Zendesk账户ID
        appId: 'your_app_id',          // 替换为你的Zendesk应用ID
        clientKey: 'your_client_key',  // 替换为你的Zendesk客户端密钥
      );
      print('Zendesk initialized successfully');
    } catch (e) {
      print('Failed to initialize Zendesk: $e');
    }
  }

  void _startChat() async {
    try {
      await _zendesk.startChat();
    } catch (e) {
      print('Failed to start chat: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Zendesk Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _startChat,
          child: Text('Start Chat'),
        ),
      ),
    );
  }
}

在这个示例中,我们首先导入了zendesk_flutter_combination包,并在MyApp应用的home属性中定义了MyHomePage。在MyHomePage中,我们创建了一个Zendesk实例,并在initState方法中初始化了Zendesk,传入你的Zendesk配置参数。然后,我们定义了一个_startChat方法来启动聊天窗口。

请注意,上述代码中的accountIdappIdclientKey需要替换为你实际的Zendesk配置。此外,如果实际的Zendesk Flutter插件API与上述示例有所不同,你需要参考该插件的官方文档进行相应的调整。

由于zendesk_flutter_combination可能是一个假设的插件名称,如果找不到这个插件,你可能需要查找并使用实际的Zendesk Flutter插件,如zendesk_flutter_sdk或其他类似的插件,并参考其官方文档进行集成。

回到顶部