Flutter集成支持插件atlas_support_sdk的使用

Flutter集成支持插件atlas_support_sdk的使用

获取开始

要使用此插件,首先需要确保在 AndroidManifest.xml 文件中包含以下权限:

<uses-permission android:name="android.permission.INTERNET" />

使用方法

你可以通过修改示例应用中的凭据来运行示例应用。示例应用的代码位于 这里

添加聊天窗口

通过以下方式将聊天窗口添加到你的应用中:

import 'package:atlas_support_sdk/atlas_support_widget.dart';

// 使用小部件:
AtlasSupportWidget(
  appId: "...", 
  userId: "...", 
  userHash: "...", 
  onError: print
)

监听统计信息的变化

每个会话统计实例包含 idunread(未读消息的数量)和 closed 标志。

import 'package:atlas_support_sdk/watch_atlas_support_stats.dart';

// 监听统计变化:
class _MyWidgetState extends State<MyWidget> {
  int _unreadCount = 0;
  Function? _unsubscribe = null;

  [@override](/user/override)
  void initState() {
    super.initState();
    _unsubscribe = watchAtlasSupportStats(
        appId: "...",
        userId: "...",
        userHash: "...",
        onStatsChange: (stats) {
          setState(() {
            _unreadCount = stats.conversations
                .fold(0, (sum, conversation) => sum + conversation.closed ? 0 : conversation.unread);
          });
        },
        onError: print);
  }

  [@override](/user/override)
  void dispose() {
    _unsubscribe?.call();
    super.dispose();
  }

  // ...
}

更新用户自定义字段

import 'package:atlas_support_sdk/update_atlas_custom_fields.dart';

AtlasSupportWidget(
  appId: "...",
  onNewTicket: (data) {
    updateAtlasCustomFields(
      "...", // atlasId
      data["ticketId"], // ticketId
      {"prop": "value"}, // 自定义字段
      // 如果需要:
      userHash: "...",
    );
  },
);

使用具有共享设置的实例

通过调用 sdk.identify(userId: "...", userHash: "...") 可以更改所有小部件和监听器的用户。

import 'package:atlas_support_sdk/atlas_support_sdk.dart';

// 监听:
class _MyWidgetState extends State<MyWidget> {
  int _unreadCount = 0;
  Function? _unsubscribe = null;
  AtlasSupportSDK atlasSdk = createAtlasSupportSDK(
    appId: "...",
    userId: "...",
    userHash: "...",
    onError: print,
  );

  [@override](/user/override)
  void initState() {
    super.initState();
    _unsubscribe = atlasSdk.watchStats((stats) {
      setState(() {
        _unreadCount = stats.conversations
            .fold(0, (sum, conversation) => sum + conversation.closed ? 0 : conversation.unread);
      });
    });
  }

  [@override](/user/override)
  void dispose() {
    _unsubscribe?.call();
    super.dispose();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: atlasSdk.Widget(
        onNewTicket: (data) {
          atlasSdk.updateCustomFields(
            data["ticketId"], // ticketId
            {"prop": "value"}, // 自定义字段
          );
        },
      )
    );
  }

  // ...
}

// 当通过 SDK 实例使用小部件时,还可以持久化其状态以防止多次加载 Atlas。
// 使用 `persist` 属性并传递唯一的字符串值,加载后应用将立即渲染:
sdk.Widget(persist: "main")

小部件的 query 参数

可选的 query 参数以字符串格式提供。query 用于配置嵌入式聊天小部件的行为或内容。

// 初始化小部件并立即启动聊天机器人(chatbotKey: report_bug),或者打开最后一个聊天机器人(prefer: last)
AtlasSupportWidget(appId: "...", query: "chatbotKey: report_bug; prefer: last")
// 或者
atlasSdk.Widget(query: "chatbotKey: report_bug; prefer: last")

// 初始化小部件并立即打开帮助中心
atlasSdk.Widget(query: "open: helpcenter")
  • <code>chatbotKey: key</code>: (可选)指定必须立即启动的聊天机器人。
  • <code>prefer: last</code>: (可选)不是每次都要启动新的聊天机器人,而是打开最后一个未完成的聊天机器人(如果存在)。
  • <code>open: helpcenter</code>: 启动带有帮助中心屏幕的小部件。

完整示例代码

以下是完整的示例代码,展示了如何集成 atlas_support_sdk 插件:

// ignore_for_file: avoid_print

import 'package:atlas_support_sdk/atlas_support_sdk.dart';
import 'package:flutter/material.dart';
import 'package:badges/badges.dart' as badges;
import 'test_users.dart';

var firstUser = user;
var secondUser = userEmpty;
var currentUser = secondUser;

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;
  int _unreadCount = 0;
  Function? _unsubscribe;
  AtlasSupportSDK sdk = createAtlasSupportSDK(
    appId: appId,
    userId: currentUser['id'],
    userHash: currentUser['hash'],
    onError: (error) => print("onError($error)"),
    onNewTicket: (data) => print("onNewTicket($data)"),
    onChangeIdentity: (identity) => print("onChangeIdentity($identity)"),
  );

  [@override](/user/override)
  void initState() {
    super.initState();
    _unsubscribe = sdk.watchStats((stats) {
      setState(() {
        _unreadCount = stats.conversations
            .fold(0, (sum, conversation) => sum + conversation.unread);
      });
    });
  }

  [@override](/user/override)
  void dispose() {
    _unsubscribe?.call();
    super.dispose();
  }

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
        actions: [
          badges.Badge(
            showBadge: _unreadCount > 0,
            badgeContent: Text(_unreadCount.toString()),
            position: badges.BadgePosition.topEnd(top: 5, end: 5),
            child: IconButton(
              icon: const Icon(Icons.help),
              onPressed: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) {
                    return Scaffold(
                      appBar: AppBar(
                        title: const Text('Help'),
                        actions: [
                          IconButton(
                            onPressed: () {
                              currentUser = currentUser == firstUser
                                  ? secondUser
                                  : firstUser;
                              sdk.identify(
                                  userId: currentUser['id'],
                                  userHash: currentUser['hash']);
                            },
                            icon: const Icon(Icons.refresh),
                          )
                        ],
                      ),
                      body: sdk.Widget(
                        persist: "main",
                        query: "chatbotKey: embed_test",
                        onNewTicket: (data) {
                          sdk.updateCustomFields(
                              data['ticketId'], {'test': 'flutter-sourced'});
                        },
                      ),
                    );
                  }),
                );
              },
            ),
          )
        ],
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const Text('You have pushed the button this many times:'),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}
1 回复

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


atlas_support_sdk 是一个用于集成支持功能的 Flutter 插件,通常用于在应用中集成客户支持、帮助中心、FAQ、聊天等功能。以下是如何在 Flutter 项目中集成和使用 atlas_support_sdk 的步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 atlas_support_sdk 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  atlas_support_sdk: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 初始化 SDK

在你的 Flutter 项目中,通常需要在 main.dart 文件中初始化 atlas_support_sdk

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 Atlas Support SDK
  await AtlasSupportSdk.initialize(
    apiKey: 'YOUR_API_KEY',  // 替换为你的 API Key
    appId: 'YOUR_APP_ID',    // 替换为你的 App ID
  );

  runApp(MyApp());
}

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

3. 使用 SDK 功能

初始化完成后,你可以在应用中使用 atlas_support_sdk 提供的功能,例如打开帮助中心、聊天窗口等。

打开帮助中心

你可以在应用的任何地方调用以下代码来打开帮助中心:

AtlasSupportSdk.openHelpCenter();

打开聊天窗口

你可以通过以下代码打开聊天窗口:

AtlasSupportSdk.openChat();

设置用户信息

你可以设置用户信息,以便在支持系统中识别用户:

AtlasSupportSdk.setUserInfo(
  userId: 'USER_ID',
  userName: 'USER_NAME',
  userEmail: 'USER_EMAIL',
);

4. 处理回调(可选)

如果你需要处理 SDK 的回调(例如聊天消息的接收),你可以设置回调监听器:

AtlasSupportSdk.setMessageListener((message) {
  print('Received message: $message');
});

5. 自定义 UI(可选)

atlas_support_sdk 可能支持自定义 UI,你可以根据插件的文档进行配置。

6. 调试和发布

在开发过程中,确保你在调试模式下测试所有功能。发布应用时,确保你已经正确配置了所有必要的 API Key 和 App ID。

7. 处理错误和异常

在使用 SDK 时,可能会遇到错误或异常。你可以使用 try-catch 块来捕获并处理这些异常:

try {
  await AtlasSupportSdk.openHelpCenter();
} catch (e) {
  print('Error opening help center: $e');
}

8. 参考文档

为了更深入地了解 atlas_support_sdk 的功能和配置选项,建议查阅官方文档或插件的源代码。

9. 保持更新

确保你定期检查 atlas_support_sdk 的更新,以获取新功能和修复的 bug。

示例代码

以下是一个完整的示例代码,展示了如何在 Flutter 应用中集成 atlas_support_sdk

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 Atlas Support SDK
  await AtlasSupportSdk.initialize(
    apiKey: 'YOUR_API_KEY',  // 替换为你的 API Key
    appId: 'YOUR_APP_ID',    // 替换为你的 App ID
  );

  runApp(MyApp());
}

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

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Atlas Support SDK Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: () {
                AtlasSupportSdk.openHelpCenter();
              },
              child: Text('Open Help Center'),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {
                AtlasSupportSdk.openChat();
              },
              child: Text('Open Chat'),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!