客服后台接入文档

主要内容:

  • 1.游戏推送未回复问题接口
  • 2.游戏接收回复问题接口
  • 3.客服后台获取游戏未回答回答问题接口(非必接)

1.游戏推送未回复问题接口

url地址:

http://www.gzyouai.com/sync/data/question?app_id=xxx&t=xx&sign=xxx(正式地址)
http://10.21.210.18:8009/sync/data/question?app_id=xxx&t=xxx&sign=xxx(北院内网测试地址)

接口描述:游戏方推送未回复问题至客服后台接口

调用方式:POST

请求参数:

URL参数:
字段名称 字段说明 类型 必填 备注
app_id 客服后台分配给接入游戏的唯一标识 string Y
t 时间戳,单位为秒 string Y 10位时间戳
sign 根据url参数、body参数和app_key计算的签名 string Y 签名方式见最后
BODY参数(由字典组成的数组,详情见截图例子):
字段名称 字段说明 类型 必填 备注
id 问题ID int Y
channel_name 渠道名称 string Y
question 问题内容 string Y
question_type 问题类型 int Y
player_name 玩家昵称 string Y
vip VIP级别 int Y
create_time 提问时间 datetime Y 格式如”2022-08-31 16:55:00”
player_id 玩家ID int Y
server_name 服务器名称 string Y
network_type 网络类型 string N
phone_type 手机型号 string N
例子:

请求返回结果:

上传成功返回的信息如下:

{'result' : 'succeed'}

上传失败返回的信息如下:

{'Error':'错误信息'}
玩家评分内容:

当需要更新某问题的玩家评分和查看时间,则上传的body如下(body也是由字典组成的数组,详情见截图例子):

字段名称 字段说明 类型 必填 备注
id 问题ID int Y
channel_name 渠道名称 string Y
server_name 服务器名称 string Y
score 玩家评分 int Y
read_time 玩家查看问题回复时间 datetime Y 格式如”2022-08-31 16:55:00”
例子:

注意事项:

一条问题记录为数组里面的一个字典(哈希),每条问题记录都是数组里的一个元素。

2. 游戏接收回复问题接口(游戏方提供)

http://xxxxxx?app_id=xxx&t=xxx&sign=xxx

接口描述:当客服提交问题回复后,客服后台会把问题回复推送至游戏提供的接口

调用方式:POST

请求参数:

BODY参数(由字典组成的数组,详情见截图例子):
字段名称 字段说明 类型 必填 备注
id 问题ID int Y
answer 客服回复内容 string Y
answer_name 客服姓名 string Y
answer_time 客服回复时间 datatime Y 格式如”2022-08-31 16:55:00”
例子:

请求返回结果:

游戏方成功更新数据后,请用json格式回复:

{'result' : 'succeed'}

失败请用json格式回复:msg为错误信息

{'result' : 'failed', 'msg ': 'error msg'}

3.客服后台获取游戏未回答回答问题接口(游戏方提供,非必接)

http://xxxxxx?app_id=xxx&t=xxx&sign=xxx(跟上面游戏方提供的接口一样,不过请求方式为GET方式)

接口描述:此接口用于客服后台主动获取游戏央服一周内(根据url中的时间戳计算)未回复的问题,当客服后台不幸宕机,游戏方上报问题失败,会漏掉玩家问题,此时由客服后台主动去获取未回复的问题,降低问题丢失率。

调用方式:GET

返回的BODY参数:(跟游戏推送未回复问题的接口是一样的)

字段名称 字段说明 类型 必填 备注
id 问题ID int Y
channel_name 渠道名称 string Y
question 问题内容 string Y
question_type 问题类型 int Y
player_name 玩家昵称 string Y
vip VIP级别 int Y
create_time 提问时间 datetime Y 格式如”2022-08-31 16:55:00”
player_id 玩家ID int Y
server_name 服务器名称 string Y
network_type 网络类型 string N
phone_type 手机型号 string N
例子:

4.sign签名算法

sign由app_key、url中的参数和body里面的参数共同计算出来,计算方法如下:

假设初始的url为:http://xxxxx/sync/data/question?app_id=A&t=B,body为:[{'kB': ‘B1’, ‘kA’: ‘A1’}, {‘kB’: ‘B2’, ‘kA’: ‘A2’}],先根据字母顺序将app_id和t进行排序,得到[‘app_id’, ‘t’],按照这个顺序,以”key=value”的形式,用&连接字符串,即:”app_id=A&t=B”,

然后再添加app_key的值(app_key由客服后台人员提供),用&连接字符串,即:”app_id=A&t=B&C”,

然后遍历body数组中的元素,将每个元素所有的key按照字典顺序排序后,组成key=value的形式,用&连接字符串,比如上述的body会转换为“kA=A1&kB=B1&kA=A2&kB=B2”,将此字符串加入到加密字符串中,用&连接字符串,得到:”app_id=A&t=B&C&kA=A1&kB=B1&kA=A2&kB=B2”,

然后对此字符串做MD5加密得到32位sign的值。

最终请求的url为:http://xxxxx/sync/data/question?app_id=A&t=B&sign=xxx,

body为:[{‘kB’: ‘B1’, ‘kA’: ‘A1’}, {‘kB’: ‘B2’, ‘kA’: ‘A2’}]

注意事项

进行sign签名的字符串不用进行额外的url编码,在签名中如果出现null值,统一使用空字符串,即body里面出现{‘A’=null}的话,加密字符串则为’A=’。