作者:张振琦
网站登录用户通过web im进行聊天对话时,可以将客户信息通过链接转给Udesk,这样客服在与客户对话时,就可以直接查看客户信息。通过客户信息辅助组件也可以进一步了解此客户的订单等其他信息。
我们就来一步一步实现WebIM插件的客户信息传入,核心还是一个身份签名算法。我们需要如下参数:
参数名称 | 类型 | 值 | 说明 |
---|---|---|---|
nonce | String | 随机数 | 随机数,动态的比静态随机数安全系数更高 |
timestamp | String | 时间戳 | 当前时间戳(13位毫秒) |
web_token | String | 客户ID | 客户唯一标示,推荐使用邮箱、手机号等仅支持字母、数字及下划线,禁用特殊字符 |
im_user_key | String | 系统获取 | 添加客户信息的KEY |
im_user_key,在WebIM插件的基本信息选项卡内获取。
生成签名只需要三步:
- 拼接原始字符串 格式:sign_str = nonce=value×tamp=value&web_token=value&im_user_key
- 使用加密算法计算出签名字符串 sign_str = sha1(sign_str) 或者 sign_str = sha256(sign_str)
- 将字符串转换为大写 sign_str = sign_str.toUpperCase()
签名都需要在服务端实现,我们使用Java来实现一个获取签名的服务,使用Servlet实现,签名加密支持SHA1和SHA256两种,我们选用SHA1。代码如下。
WebIM.java
package com.udesk.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import com.google.gson.Gson;
import com.udesk.common.SHA1;
import com.udesk.common.SignInput;
import com.udesk.common.SignResult;
public class WebIM extends