集成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 里查看,如下图所示:

appId/clientId/appUrl

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.

设置身份时注意

  1. 必须在Zendesk.initialize之后且在使用Zendesk API 请求之前设置一个身份。也可以在Support.initialize之前或之后进行设置,如果使用Support SDK而不设置身份将会导致所有网络请求失败,即发送feedback时无法发送成功。

  2. 如果设置身份时没有传入用户名等参数,则在Zendesk后台将会以 Mobile App User 名字显示该用户。

  3. 如果用户第一次发送feedback时没有设置名字或者发送完第一次后更改过名字,则往后发送的所有feedback 在zendesk后台用户名都显示为第一次时的那个(Zendesk后台是用email标记是否同一个用户的)。

  4. 多次设置同一个用户identity 是无效的,即多次调用 setIdentity ()无效,但只要identity不一样了,Zendesk则会认为这是一个新的用户。

2. 使用SDK发送feedback

这里使用自定义UI界面,因此在需要发送时直接调用Zendesk提供的api, 详细文档参考:
Working with API providers

UI
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

2. 在Zendesk 的extension 中添加一个target:

image.png

3. 在Zendesk 添加一个trigger 触发这个extension.

你可能感兴趣的:(集成Zendesk收集用户feedback)