集成Zendesk收集用户feedback
Zendesk 概述
项目集成Zendesk 可以让应用管理者更加轻松地管理终端客户的服务和支持需求,本文主要是针对iOS 项目集成 Zendesk SDK,收集用户feedback, 并集合到slack channel 实现实时接收用户反馈信息 展开的。
1. 集成Zendesk SDK
和大部分第三方SDK集成方法一样,集成Zendesk 同样有多种方法,包括常用的 CocoaPods 和 Carthage 以及 在Xcode里手动导入到项目 等方法,具体请参考:iOS 项目集成Zendesk SDK 。
创建APP
在正式使用sdk 之前,我们还需要到zendesk官方申请注册并创建我们自己的app, 因为这里是想实现收集用户Feedback,对应Zendesk的产品为support, 可以到这里创建我们的app: https://www.zendesk.com/support/
一旦创建完成app, Zendesk 并会为这个app生成 init SDK 需要用到 appId, clientId 以及 appUrl, 具体可在创建完app后到
https://yourApp.zendesk.com/agent/admin/mobile_sdk 里查看,如下图所示:
init SDK
以上工作完成后 可以在项目初始化 sdk了,参考: init zendesk support sdk
在AppDelegate 导入Zendesk并使用上一步获取到的必要参数进行初始化:
import SupportProvidersSDK
import ZendeskCoreSDK
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
Zendesk.initialize(appId: "appId", clientId: "clientId", zendeskUrl: "url")
Support.initialize(withZendesk: Zendesk.instance)
}
创建一个身份
Zendesk需要一个用户身份,以便该应用可以作为Zendesk支持用户进行身份验证,然后将其设置为Zendesk单例:
let identity = Identity.createAnonymous(name: "\(userName)", email: "\(userEmail)")
Zendesk.instance?.setIdentity(identity)
Zendesk有两种 identity: anonymous 和 JWT. 更多细节参考 identity.
设置身份时注意
-
必须在
Zendesk.initialize
之后且在使用Zendesk API 请求之前设置一个身份。也可以在Support.initialize
之前或之后进行设置,如果使用Support SDK而不设置身份将会导致所有网络请求失败,即发送feedback时无法发送成功。 -
如果设置身份时没有传入用户名等参数,则在Zendesk后台将会以 Mobile App User 名字显示该用户。
-
如果用户第一次发送feedback时没有设置名字或者发送完第一次后更改过名字,则往后发送的所有feedback 在zendesk后台用户名都显示为第一次时的那个(Zendesk后台是用email标记是否同一个用户的)。
-
多次设置同一个用户identity 是无效的,即多次调用
setIdentity ()
无效,但只要identity不一样了,Zendesk则会认为这是一个新的用户。
2. 使用SDK发送feedback
这里使用自定义UI界面,因此在需要发送时直接调用Zendesk提供的api, 详细文档参考:
Working with API providers
let provider = ZDKRequestProvider()
let request = ZDKCreateRequest()
request.subject = "subject string"
request.requestDescription = "detail string"
request.tags = ["iOS"] // 作为zendesk 后台分类使用
zendesk支持 自定义字段,创建自定义字段,首先需要在后台添加自己想要的字段,并获取它的 FieldID
Custom Fields然后 在代码上 进行配置
let customFieldForAppVersion = CustomField(fieldId: 360028685191, value: "\(versionString)")
request.customFields = [ customFieldForAppVersion]
最后发送请求
provider.createRequest(request) { result, error in
}
发完之后则可以到zendesk后台管理平台查看该条feedback:
后台如果需要发送附件,则需要在创建request时加入 UploadResponse
类型的附件文件
request.attachments = UploadResponse
上传到到zendesk的附件不会被压缩,但有大小限制,根据收费不同可支持不同大小的附件体积上传。如果需要压缩建议在上传关本地压缩文件后再上传。
3. 集成到slack channel
参考文章:
https://support.zendesk.com
1. 在Slack上创建一个新的app
需要在Slack上创建一个新的app, 并拿到一个webhook url