You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
2.9 KiB

4 years ago
import 'package:bytedesk_kefu/bytedesk_kefu.dart';
import 'package:bytedesk_kefu/util/constants.dart';
import 'package:bytedesk_kefu/util/events.dart';
import 'package:flutter/material.dart';
void main() {
// runApp(MyApp());
runApp(MaterialApp(
debugShowCheckedModeBanner: false, // 去除右上角debug的标签
home: MyApp(),
));
// 管理后台https://www.bytedesk.com/antv/user/login
// 参考文档https://github.com/pengjinning/bytedesk-android
// appkey和subDomain请替换为真实值
// 获取appkey登录后台->客服管理->渠道管理->添加应用->appkey
String _appKey = "201809171553112";
// 获取subDomain也即企业号登录后台->客服管理->客服账号->企业号
String _subDomain = "vip";
// 第一步:匿名登录
BytedeskKefu.anonymousLogin(_appKey, _subDomain);
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
//
String _title = '萝卜丝客服Demo';
// 到 客服管理->技能组-有一列 唯一IDwId, 默认设置工作组wid
String _workGroupWid = "201807171659201";
//
@override
void initState() {
super.initState();
_listener();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(_title),
elevation: 0,
),
body: ListView(
children: <Widget>[
ListTile(
title: Text('联系客服'),
trailing: Icon(Icons.keyboard_arrow_right),
onTap: () {
print('chat');
// 第二步:联系客服,完毕
BytedeskKefu.startWorkGroupChat(context, _workGroupWid, "技能组客服");
},
)
],
),
);
}
// 监听状态
_listener() {
// 监听连接状态
eventBus.on<ConnectionEventBus>().listen((event) {
print('长连接状态:' + event.content);
if (event.content == BDConstants.USER_STATUS_CONNECTING) {
setState(() {
_title = "萝卜丝客服Demo(连接中...)";
});
} else if (event.content == BDConstants.USER_STATUS_CONNECTED) {
setState(() {
_title = "萝卜丝客服Demo(连接成功)";
});
} else if (event.content == BDConstants.USER_STATUS_DISCONNECTED) {
setState(() {
_title = "萝卜丝客服Demo(连接断开)";
});
}
});
// 监听消息
eventBus.on<ReceiveMessageEventBus>().listen((event) {
// print('receive message:' + event.message.content);
if (event.message.type == BDConstants.MESSAGE_TYPE_TEXT) {
print('文字消息: ' + event.message.content);
} else if (event.message.type == BDConstants.MESSAGE_TYPE_IMAGE) {
print('图片消息:' + event.message.imageUrl);
} else {
print('其他类型消息');
}
});
}
}