bytedesk helpdesk system

bytedesk flutter helpdesk sdk

Features

  • support andorid/ios/web
  • chat with agent
  • shopping chat, send commodity info
  • send post script message
  • check online status
  • get history thread
  • message voice && vibrate setting
  • chat with robot
  • send and play video message
  • chat notification

Getting Started

Zero Step: Copy assets dir from bytedesk_demo and add to pubspec.yaml

//
bytedesk_kefu: ^1.6.4
//
assets:
    - assets/audio/
    - assets/images/chat/
    - assets/images/common/
    - assets/images/feedback/

iOS

Add the following keys to your Info.plist file, located in ios/Runner/Info.plist:

<key>NSLocalNetworkUsageDescription</key>
<string>Looking for local tcp Bonjour service</string>
<key>NSBonjourServices</key>
<array>
  <string>mqtt.tcp</string>
</array>

Android

Add the following Android permissions to the AndroidManifest.xml file, located in android/app/src/main/AndroidManifest.xml:

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

First Step: Register Account

Second Step:Login

// appkey和subDomain请替换为真实值
// 获取appkey,登录后台->渠道管理->Flutter->添加应用->获取appkey
String _appKey = '81f427ea-4467-4c7c-b0cd-5c0e4b51456f';
// 获取subDomain,也即企业号:登录后台->客服管理->客服账号->企业号
String _subDomain = "vip";
BytedeskKefu.init(_appKey, _subDomain);

Third Step:Contact

BytedeskKefu.startWorkGroupChat(context, workGroupWid, "title");

Completed

image1 image2 image3

Change UI

  • create new folder: vendors
  • Download latest source code, put into vendors folder
  • integrate source in pubspect.yaml
bytedesk_kefu:
    path: ./vendors/bytedesk_kefu

Support

Other

Libraries

ui/chat/widget/flutter_html/src/anchor
model/answer
model/app
model/bfeedback
model/bfeedbackJsonResult
blocs/contact_bloc/bloc
blocs/thread_bloc/bloc
blocs/message_bloc/bloc
blocs/help_bloc/bloc
blocs/profile_bloc/bloc
blocs/group_bloc/bloc
blocs/login_bloc/bloc
blocs/feedback_bloc/bloc
blocs/friend_bloc/bloc
blocs/ticket_bloc/bloc
blocs/leavemsg_bloc/bloc
blocs/global_bloc/bloc
http/bytedesk_base_api
util/bytedesk_constants
http/bytedesk_device_api
util/bytedesk_eventbus
util/bytedesk_events
util/bytedesk_extraparam
http/bytedesk_faq_api
http/bytedesk_feedback_api
http/bytedesk_friend_api
bytedesk_kefu
bytedesk_kefu_method_channel
bytedesk_kefu_platform_interface
bytedesk_kefu_web
http/bytedesk_leavemsg_api
util/bytedesk_loading
http/bytedesk_message_api
mqtt/bytedesk_mqtt
http/bytedesk_thread_api
http/bytedesk_ticket_api
http/bytedesk_user_api
util/bytedesk_utils
util/bytedesk_uuid
model/category
ui/widget/emoji_picker_flutter/src/category_emoji
ui/widget/emoji_picker_flutter/src/category_icon
ui/widget/emoji_picker_flutter/src/category_icons
mqtt/lib/src/observable/src/change_notifier
ui/channel/page/channel_detail_page
ui/channel/page/channel_page
ui/channel/provider/channel_provider
ui/chat/page/chat_gpt_page
ui/chat/provider/chat_gpt_provider
ui/chat/page/chat_im_page
ui/chat/provider/chat_im_provider
ui/widget/chat_input
ui/chat/page/chat_kf_page
ui/chat/provider/chat_kf_provider
ui/chat/page/chat_ls_page
ui/chat/provider/chat_thread_provider
ui/chat/page/chat_webview_page
model/codeResult
ui/widget/emoji_picker_flutter/src/config
model/contact
blocs/contact_bloc/contact_bloc
blocs/contact_bloc/contact_event
repositories/contact_repository
blocs/contact_bloc/contact_state
ui/chat/widget/flutter_html/src/css_parser
ui/widget/voice_record/custom_overlay
ui/chat/widget/flutter_html/custom_render
ui/widget/emoji_picker_flutter/src/default_emoji_picker_view
ui/widget/emoji_picker_flutter/src/emoji
ui/widget/emoji_picker_flutter/src/emoji_lists
ui/widget/emoji_picker_flutter/src/emoji_picker
ui/widget/emoji_picker_flutter/src/emoji_picker_builder
ui/widget/emoji_picker_flutter/emoji_picker_flutter
ui/widget/emoji_picker_flutter/src/emoji_picker_internal_utils
ui/widget/emoji_picker_flutter/src/emoji_picker_utils
ui/widget/emoji_picker_view
ui/widget/emoji_picker_flutter/src/emoji_skin_tones
ui/widget/emoji_picker_flutter/src/emoji_view_state
ui/widget/empty_widget
ui/widget/expanded_viewport
ui/widget/extra_item
blocs/feedback_bloc/feedback_bloc
blocs/feedback_bloc/feedback_event
ui/feedback/page/feedback_history_page
ui/feedback/provider/feedback_history_provider
ui/feedback/page/feedback_page
ui/feedback/provider/feedback_provider
repositories/feedback_repository
blocs/feedback_bloc/feedback_state
ui/feedback/page/feedback_submit_page
ui/feedback/provider/feedback_submit_provider
ui/chat/widget/flutter_html/flutter_html
model/friend
blocs/friend_bloc/friend_bloc
blocs/friend_bloc/friend_event
repositories/friend_repository
blocs/friend_bloc/friend_state
model/group
blocs/group_bloc/group_bloc
blocs/group_bloc/group_event
repositories/group_repository
blocs/group_bloc/group_state
ui/faq/page/help_article_detail_page
ui/faq/provider/help_article_detail_provider
ui/faq/page/help_article_list_page
ui/faq/provider/help_article_list_provider
blocs/help_bloc/help_bloc
blocs/help_bloc/help_event
ui/faq/page/help_page
ui/faq/provider/help_provider
repositories/help_repository
blocs/help_bloc/help_state
model/helpArticle
model/helpCategory
ui/chat/widget/flutter_html/src/html_elements
ui/chat/widget/flutter_html/html_parser
ui/widget/image_button
ui/widget/image_choose_widget
ui/chat/widget/flutter_html/src/interactable_element
model/jsonResult
ui/chat/widget/flutter_html/src/layout_element
blocs/leavemsg_bloc/leavemsg_bloc
blocs/leavemsg_bloc/leavemsg_event
ui/leavemsg/page/leavemsg_history_page
ui/leavemsg/provider/leavemsg_history_provider
ui/leavemsg/page/leavemsg_page
ui/leavemsg/provider/leavemsg_provider
repositories/leavemsg_repository
blocs/leavemsg_bloc/leavemsg_state
ui/widget/loading_widget
blocs/login_bloc/login_bloc
blocs/login_bloc/login_event
blocs/login_bloc/login_state
model/markThread
ui/widget/media_choose_widget
model/message
protobuf/message.pb
protobuf/message.pbenum
protobuf/message.pbjson
protobuf/message.pbserver
blocs/message_bloc/message_bloc
blocs/message_bloc/message_event
repositories/message_repository
blocs/message_bloc/message_state
ui/chat/widget/message_widget
model/messageProvider
model/messageZhipuAI
model/model
mqtt/lib/mqtt_browser_client
mqtt/lib/mqtt_client
mqtt/lib/mqtt_server_client
ui/widget/my_button
model/oauth
mqtt/lib/src/observable/observable
mqtt/lib/src/observable/src/observable
mqtt/lib/src/observable/src/records
ui/widget/photo_view_wrapper
ui/widget/pop_up_menu
blocs/profile_bloc/profile_bloc
blocs/profile_bloc/profile_event
repositories/profile_repository
blocs/profile_bloc/profile_state
model/queue
ui/rate/page/rate_page
ui/rate/provider/rate_provider
ui/widget/emoji_picker_flutter/src/recent_emoji
ui/chat/widget/flutter_html/src/replaced_element
repositories/repositories
model/requestAnswer
model/requestCategory
model/requestThread
model/requestThreadFileHelper
model/requestThreadZhipuAI
model/robot
ui/widget/send_button_visibility_mode
blocs/global_bloc/settings_bloc
ui/chat/widget/flutter_html/style
ui/chat/widget/flutter_html/src/styled_element
blocs/global_bloc/theme_bloc
model/thread
protobuf/thread.pb
protobuf/thread.pbenum
protobuf/thread.pbjson
protobuf/thread.pbserver
blocs/thread_bloc/thread_bloc
blocs/thread_bloc/thread_event
repositories/thread_repository
blocs/thread_bloc/thread_state
model/threadProvider
model/threadZhipuAI
blocs/ticket_bloc/ticket_bloc
blocs/ticket_bloc/ticket_event
ui/ticket/page/ticket_page
ui/ticket/provider/ticket_provider
repositories/ticket_repository
blocs/ticket_bloc/ticket_state
ui/ticket/page/ticket_submit_page
ui/ticket/provider/ticket_submit_provider
ui/widget/emoji_picker_flutter/src/triangle_shape
model/uploadJsonResult
model/user
protobuf/user.pb
protobuf/user.pbenum
protobuf/user.pbjson
protobuf/user.pbserver
ui/profile/page/user_profile_page
ui/profile/provider/user_profile_provider
repositories/user_repository
model/userJsonResult
ui/chat/widget/flutter_html/src/utils
ui/chat/page/video_play_page
ui/widget/voice_record/voice_animation
ui/widget/voice_record/voice_widget
model/wechatId
model/wechatResult
model/wechatUserinfo
model/workGroup