集成Zendesk Chat
运行机制
集成Zendesk Chat后可将您项目的艾克索拉登录管理器用户与向您的支持团队提交了问题的Zendesk Chat访客关联。Zendesk侧使用的external_id
参数对应您的登录管理器项目中的用户ID。如果访客识别为是艾克索拉登录管理器用户,则您即可在发布商帐户中管理其帐户。
适用对象
集成了登录管理器并拥有Zendesk Chat帐户的合作伙伴。
如何获取
要关联访客:
生成Zendesk JWT
Zendesk JWT基于在您的艾克索拉登录管理器项目中认证用户时从商店登录管理器服务器收到的令牌。您可以将令牌存储在相关域名的Cookie文件中,然后在生成Zendesk JWT时添加到HTTP请求中。
您也可以自己设置实现该调用时的响应格式。
以下是基于Go的Zendesk JWT获取流程的简化版本。完整的Zendesk JWT生成代码见GitHub。
生成JWT之前安装以下包:
Copy
- curl
go get github.com/dgrijalva/jwt-go
go get github.com/rs/cors
要获取Zendesk JWT:
验证JWT
从Cookie文件中提取JWT,并使用在发布商帐户 > 登录管理器项目 > 常规设置 > 密钥中找到密钥验证该令牌。Copy
- go
cookie, err := r.Cookie("token")
token, err := jwt.Parse(cookie.Value, func(token *jwt.Token) (interface{}, error) {
if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
return nil, errors.New("unexpected signing method")
}
return []byte(loginSecret), nil
})
var loginClaims jwt.MapClaims
var ok bool
if loginClaims, ok = token.Claims.(jwt.MapClaims); !ok || !token.Valid {
writeErrorResponse(w, "00-01", "Token is invalid", http.StatusUnauthorized)
return
}
解码JWT
解码JWT并从中提取以下声明的值:email
— 邮箱地址sub
— 用户ID
Copy
- go
var sub, email string
sub, _ = loginClaims["sub"].(string)
email, _ = loginClaims["email"].(string)
形成JWT声明列表
形成一列JWT的声明。各声明的描述见Copy
- go
zendeskClaims := jwt.MapClaims{}
zendeskClaims["name"] = email
zendeskClaims["email"] = email
zendeskClaims["external_id"] = sub
zendeskClaims["iat"] = time.Now().UTC().Unix()
签名JWT
使用您Zendesk Chat帐户的密钥给令牌签名。该密钥可在Copy
- go
zendeskToken := jwt.NewWithClaims(jwt.SigningMethodHS256, zendeskClaims)
zendeskTokenString, _ := zendeskToken.SignedString([]byte(zendeskSecret))
认证访客进入Zendesk Chat
这样可将以下访客数据添加到Zendesk Chat:
- 名称
- 邮箱地址
- 标识符
使用收到的Zendesk JWT将访客认证进入Zendesk Chat。通过以下方式使用
Copy
- javascript
zChat.init({
account_key: ACCOUNT_KEY,
authentication: {
jwt_fn: function(callback) {
fetch('https://example.com:8001/generate/token', {
credentials: "include"
}).then(function(res) {
res.text().then(function(body) {
const jwt = JSON.parse(body).token;
callback(jwt)
});
});
}
}
});
注:
社交网络可能不会传入用户的邮箱地址数据。请参阅此说明请求邮箱地址。
对访客进行操作
访客认证成功后,将在您的Zendesk Chat帐户 >如果要使用
获取访客数据
要执行Copy
http
- http
- curl
GET https://www.zopim.com/api/v2/visitors/9855790-xjj3u5xPWhW1Fv HTTP/1.1
Authorization: Bearer <token>
curl --request GET \
--url https://www.zopim.com/api/v2/visitors/9855790-xjj3u5xPWhW1Fv \
--header 'authorization: bearer_token'
响应示例:
Copy
http
- http
- curl
HTTP/1.1 200 OK
Content-Type: application/json
{
"banned": false,
"notes": "",
"id": "9855790.xjj3ukxyIhn6j3",
"email": "email@email.com",
"phone": "",
"created": 1586950554,
"name": "email@email.com",
"external_id": "82cd5e0c-c3ff-11e9-b199-c1e5fc81c37f"
}
{
"banned": false,
"notes": "",
"id": "9855790.xjj3ukxyIhn6j3",
"email": "email@email.com",
"phone": "",
"created": 1586950554,
"name": "email@email.com",
"external_id": "82cd5e0c-c3ff-11e9-b199-c1e5fc81c37f"
}
检查访客是否与登录管理器项目关联
如果访客与您的登录管理器项目关联,则收到的数据中的external_id
参数与用户ID一致。您可在发布商帐户 > 登录管理器项目 > 用户 > 用户名/ID中找到用户ID。本文对您的有帮助吗?
感谢您的反馈!
我们会查看您的留言并运用它改进用户体验。发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。