Zendesk 概述
項(xiàng)目集成Zendesk 可以讓?xiě)?yīng)用管理者更加輕松地管理終端客戶(hù)的服務(wù)和支持需求,本文主要是針對(duì)iOS 項(xiàng)目集成 Zendesk SDK,收集用戶(hù)feedback, 并集合到slack channel 實(shí)現(xiàn)實(shí)時(shí)接收用戶(hù)反饋信息 展開(kāi)的。
1. 集成Zendesk SDK
和大部分第三方SDK集成方法一樣,集成Zendesk 同樣有多種方法,包括常用的 CocoaPods 和 Carthage 以及 在Xcode里手動(dòng)導(dǎo)入到項(xiàng)目 等方法,具體請(qǐng)參考:iOS 項(xiàng)目集成Zendesk SDK 。
創(chuàng)建APP
在正式使用sdk 之前,我們還需要到zendesk官方申請(qǐng)注冊(cè)并創(chuàng)建我們自己的app, 因?yàn)檫@里是想實(shí)現(xiàn)收集用戶(hù)Feedback,對(duì)應(yīng)Zendesk的產(chǎn)品為support, 可以到這里創(chuàng)建我們的app: https://www.zendesk.com/support/
一旦創(chuàng)建完成app, Zendesk 并會(huì)為這個(gè)app生成 init SDK 需要用到 appId, clientId 以及 appUrl, 具體可在創(chuàng)建完app后到
https://yourApp.zendesk.com/agent/admin/mobile_sdk 里查看,如下圖所示:

init SDK
以上工作完成后 可以在項(xiàng)目初始化 sdk了,參考: init zendesk support sdk
在AppDelegate 導(dǎo)入Zendesk并使用上一步獲取到的必要參數(shù)進(jìn)行初始化:
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)
}
創(chuàng)建一個(gè)身份
Zendesk需要一個(gè)用戶(hù)身份,以便該應(yīng)用可以作為Zendesk支持用戶(hù)進(jìn)行身份驗(yàn)證,然后將其設(shè)置為Zendesk單例:
let identity = Identity.createAnonymous(name: "\(userName)", email: "\(userEmail)")
Zendesk.instance?.setIdentity(identity)
Zendesk有兩種 identity: anonymous 和 JWT. 更多細(xì)節(jié)參考 identity.
設(shè)置身份時(shí)注意
必須在
Zendesk.initialize之后且在使用Zendesk API 請(qǐng)求之前設(shè)置一個(gè)身份。也可以在Support.initialize之前或之后進(jìn)行設(shè)置,如果使用Support SDK而不設(shè)置身份將會(huì)導(dǎo)致所有網(wǎng)絡(luò)請(qǐng)求失敗,即發(fā)送feedback時(shí)無(wú)法發(fā)送成功。如果設(shè)置身份時(shí)沒(méi)有傳入用戶(hù)名等參數(shù),則在Zendesk后臺(tái)將會(huì)以 Mobile App User 名字顯示該用戶(hù)。
如果用戶(hù)第一次發(fā)送feedback時(shí)沒(méi)有設(shè)置名字或者發(fā)送完第一次后更改過(guò)名字,則往后發(fā)送的所有feedback 在zendesk后臺(tái)用戶(hù)名都顯示為第一次時(shí)的那個(gè)(Zendesk后臺(tái)是用email標(biāo)記是否同一個(gè)用戶(hù)的)。
多次設(shè)置同一個(gè)用戶(hù)identity 是無(wú)效的,即多次調(diào)用
setIdentity ()無(wú)效,但只要identity不一樣了,Zendesk則會(huì)認(rèn)為這是一個(gè)新的用戶(hù)。
2. 使用SDK發(fā)送feedback
這里使用自定義UI界面,因此在需要發(fā)送時(shí)直接調(diào)用Zendesk提供的api, 詳細(xì)文檔參考:
Working with API providers

let provider = ZDKRequestProvider()
let request = ZDKCreateRequest()
request.subject = "subject string"
request.requestDescription = "detail string"
request.tags = ["iOS"] // 作為zendesk 后臺(tái)分類(lèi)使用
zendesk支持 自定義字段,創(chuàng)建自定義字段,首先需要在后臺(tái)添加自己想要的字段,并獲取它的 FieldID

然后 在代碼上 進(jìn)行配置
let customFieldForAppVersion = CustomField(fieldId: 360028685191, value: "\(versionString)")
request.customFields = [ customFieldForAppVersion]
最后發(fā)送請(qǐng)求
provider.createRequest(request) { result, error in
}
發(fā)完之后則可以到zendesk后臺(tái)管理平臺(tái)查看該條feedback:

如果需要發(fā)送附件,則需要在創(chuàng)建request時(shí)加入 UploadResponse類(lèi)型的附件文件
request.attachments = UploadResponse
上傳到到zendesk的附件不會(huì)被壓縮,但有大小限制,根據(jù)收費(fèi)不同可支持不同大小的附件體積上傳。如果需要壓縮建議在上傳關(guān)本地壓縮文件后再上傳。
3. 集成到slack channel
參考文章:
https://support.zendesk.com
1. 在Slack上創(chuàng)建一個(gè)新的app
需要在Slack上創(chuàng)建一個(gè)新的app, 并拿到一個(gè)webhook url
2. 在Zendesk 的extension 中添加一個(gè)target:
