迁移向导

如果您是从旧版本的Chat SDK (v2之前)迁移过来的,本指南将帮助您突出一些关键差异。

初始化Chat SDK

Chat SDK初始化应该在您的AppDelegate.swift.初始化方法接受以下参数:

  • accountKey -这个可以在聊天仪表板上找到。如果您无法访问仪表板,请向聊天管理员索取密钥。
  • apiConfig -提供配置聊天的方法。
  • thread——要在其上分派操作的线程。默认是主线程。

之前

             
ZDCChat。初始化(withAccountKey accountKey):

             
闲谈,聊天初始化(accountKey: accountKey, queue: .main)

开始聊天

之前

             
ZDCChat。开始(:自我。导航控制器,withConfig: config

             
{做let chatEngine = try chatEngine .engine()let viewController = try message .instance。buildUI(引擎:[chatEngine],配置:[])导航控制器?。pushViewController(viewController, animated: true)} catch {//处理错误

添加访客信息

之前

             
ZDCChat。updateVisitor{用户在user?.name = "姓名"用户?。email = " email地址"用户?。电话=“电话号码”

             
let chatAPIConfiguration = chatAPIConfiguration ()chatAPIConfiguration。visitorInfo = visitorInfo(名称:“名称”,email:“电子邮件地址”,phoneNumber:“电话号码”)Chat.instance ?。configuration = chatAPIConfiguration

设置部门

之前

             
ZDCChat。开始(:自我。navigationController, withConfig: {config inconfig?.department = "部门名称"})

             
let chatAPIConfiguration = chatAPIConfiguration ()chatapiconfigure . Department = "部门名称"Chat.instance ?。configuration = chatAPIConfiguration/ /或let chatProvider = Chat.chatProviderchatProvider。setDepartment(“部门名称”)

发送事件

聊天SDK v1允许您通过ZDCChatAPI实例。在Chat SDK v2中,这些事件通过提供程序下的类似api分组在一起。

提供者 描述
ChatProvider 用于与聊天会话相关的api。
ProfileProvider 用于与访问者相关的api。
PushNotificationsProvider 用于与Push相关的api。
ConnectionProvider 用于与连接相关的api。
SettingsProvider 用于与聊天仪表板设置相关的api。

每个可以发送的事件都可以接受一个可选的完成闭包。闭包提供一个结果> <成功,错误返回以处理请求的结果。

之前

             
ZDCChatAPI.instance () .sendChatMessage(消息)ZDCChatAPI.instance()。uploadFile(with: data, name: fileName).endChat ZDCChatAPI.instance () ()ZDCChatAPI.instance () .setNote(注意)ZDCChatAPI.instance () .setPushToken(数据)

             
let chatProvider = Chat.chatProvider//可选的完成处理程序chatProvider ? .sendMessage(消息)chatProvider ?。sendFile (url: fileURL,onProgress: {(progress) in},补全:{(结果)in}chatProvider ?。endChat{(结果)在切换结果{案例.success:break //聊天结束Case .failure(let error):break //处理错误.setNote(note) {_ in}Chat.pushNotificationsProvider ? .registerPushToken(数据)

观察事件

聊天v1利用NSNotificationCenter来发出事件并处理事件的订阅。Chat v2通过可观察模式实现事件观察器。

订阅事件

之前

             
ZDCChatAPI.instance()。addObserver(self, forConnectionEvents: #selector(onConnectionStateUpdated))ZDCChatAPI.instance()。addObserver(self, forChatLogEvents: #selector(chatLogEvents))ZDCChatAPI.instance()。addObserver(self, forAgentEvents: #selector(onAgentEvent))ZDCChatAPI.instance()。addObserver(self, forUploadEvents: #selector(chatUploadEvent))ZDCChatAPI.instance()。addObserver(self, forAccountEvents: #selector(chatAccountEvent))

             
let stateToken = Chat.chatProvider?observeChatState {(state) in//处理日志、座席事件、队列位置变化等事件let connectionToken = Chat.connectionProvider?observeConnectionState{(连接)在//处理连接状态变化let accountToken = Chat.chatProvider?observeAccount{帐户在//处理部门和帐户状态变更let settingsToken = chat . settingprovider ?observeChatSettings{设置//处理聊天设置的更改var token: [ObservationToken?]] = [stateToken, connectionToken, accountToken, settingsToken]

取消订阅事件

之前

             
ZDCChatAPI.instance()。removeObserver (forConnectionEvents:自我)ZDCChatAPI.instance()。removeObserver (forAgentEvents:自我)ZDCChatAPI.instance()。removeObserver (forChatLogEvents:自我)ZDCChatAPI.instance()。removeObserver (forUploadEvents:自我)ZDCChatAPI.instance()。removeObserver (forAccountEvents:自我)

             
令牌。forEach {$0.cancel()}

名称冲突。框架

如果你正在使用CocoaPods,你可能会得到一个“冲突名称commonuisdk.framework”错误,如果你也在使用支持SDK。您可以通过更新Support SDK来解决这个问题。遵循支持SDK迁移指南,并确保您正在使用亚博ZendeskSupportSDKPod,而不是被弃用的亚博ZendeskSDK豆荚。

以机器人为中心的对话体验

聊天SDK利用统一SDK在对话流程中向用户展示聊天功能。预聊天表单、离线表单和客户满意度请求都通过聊天机器人发送给用户。虽然这个机器人很像回答机器人,但它不是。看到配置聊天机器人