IM即时通讯,包含请求IM对话记录、聊天内容、满意度、业务记录、结构化消息等相关文档
请求IM对话记录
请求地址
- URL '/api/v2/im/session'
- VERB GET
- 频率限制 1次/2秒
请求参数
start_time: "2016-08-08 00:00:00", N(非必填) 时间字符串|默认当前开始时间 end_time: "2016-08-08 23:59:59", N(非必填) 时间字符串|默认当前结束时间 page: 1, N(非必填) 页数|默认1页 page_size: 30, N(非必填) |默认30条 sign Y(必填)
- sign 加密签名,对传递的参数和shared_secret进行MD5加密后的字符串[必填]
- shared_secret 公司添加shared_secret [隐藏/计算signature]
sign加密算法:
- 按以下参数传递的顺序拼接字符: start_time/end_time/page/page_size sign_str = "start_time=value&end_time=value&page=value&page_size=value"
- 以上字符串加入 &shared_secret sign_str = sign_str&shared_secret
- 使用 MD5 计算出签字并小写 Digest::MD5.hexdigest(sign_str).downcase
eg start_time=2016-08-01&end_time=2016-08-08&page=1&page_size=30
返回结果
{
"status": 0, //0成功 其他失败
"message": "成功",
"item": [
{
"session_id": 346, //对话ID
"sub_session_id": 390, //子会话ID(唯一标识)
"note_id": null, //业务记录ID
"customer_id": 66, // 客户ID
"customer_name": "聂风", //客户名称
"agent_id": 2, //客服ID
"agent_nick_name": "Tom", //客服名称
"created_at": "2016-08-01T15:39:40.000+08:00",
"closed_at": "2016-08-04T11:10:23.000+08:00",
"resp_seconds": null,
"sustain_seconds": 243043,
"survey_option_id": 2,
"platform": "web", //渠道(web|微信|微博|android|ios|api)
"web_info": {
"login_url": null,
"session_url": null,
"keyword": null,
"src": "直接访问",
"src_url": null,
"device": "Mac",
"bowser": "Firefox47.0",
"generated_channel": "金柚",
"ip": ""
},
"weixin_info": {},
"weibo_info": {},
"android_info": {},
"ios_info": {},
"api_info": {},
}
],
"size": 1,
"total": 1,
"total_pages": 1
}
请求IM聊天内容
请求地址
- URL '/api/v2/im/log'
- VERB GET
- 频率限制 1次/2秒
请求参数
session_id: 1, Y(必填) 对话记录ID start_time: "2016-08-08 00:00:00", N(非必填) 时间字符串|默认当前开始时间 end_time: "2016-08-08 23:59:59", N(非必填) 时间字符串|默认当前结束时间 page: 1, N(非必填) 页数|默认1页 page_size: 30, N(非必填) |默认30条 sign Y(必填)
- sign 加密签名,对传递的参数和shared_secret进行MD5加密后的字符串[必填]
- shared_secret 公司添加shared_secret [隐藏/计算signature]
sign加密算法:
- 按以下参数传递的顺序拼接字符: start_time/end_time/page/page_size sign_str = "start_time=value&end_time=value&page=value&page_size=value"
- 以上字符串加入 &shared_secret sign_str = sign_str&shared_secret
- 使用 MD5 计算出签字并小写 Digest::MD5.hexdigest(sign_str).downcase
eg start_time=2016-08-01&end_time=2016-08-08&page=1&page_size=30
返回结果
{
"status": 0,
"message": "成功",
"item": [
{
"id": 764,
"created_at": "2016-08-09T15:12:04.000+08:00",
"sender": "customer",
"user_id": 66,
"content": "{\"type\":\"message\",\"data\":{\"content\":\"有新的咨询进来了。\"},\"platform\":\"web\",\"version\":2,\"auto\":true}", //json字符串 type=message|image|
"session_id": 367,
"sub_session_id": 390, //子会话ID(唯一标识)
"survey_option_id": 3
}
],
"size": 1,
"total": 1,
"total_pages": 1
}
请求IM满意度
请求地址
- URL '/api/v2/im/vote'
- VERB GET
- 频率限制 1次/2秒
请求参数
start_time: "2016-08-08 00:00:00", N(非必填) 时间字符串|默认当前开始时间 end_time: "2016-08-08 23:59:59", N(非必填) 时间字符串|默认当前结束时间 page: 1, N(非必填) 页数|默认1页 page_size: 30, N(非必填) |默认30条 sign Y(必填)
- sign 加密签名,对传递的参数和shared_secret进行MD5加密后的字符串[必填]
- shared_secret 公司添加shared_secret [隐藏/计算signature]
sign加密算法:
- 按以下参数传递的顺序拼接字符: start_time/end_time/page/page_size sign_str = "start_time=value&end_time=value&page=value&page_size=value"
- 以上字符串加入 &shared_secret sign_str = sign_str&shared_secret
- 使用 MD5 计算出签字并小写 Digest::MD5.hexdigest(sign_str).downcase
eg start_time=2016-08-01&end_time=2016-08-08&page=1&page_size=30
返回结果
{
"status": 0,
"message": "成功",
"item": [
{
"id": 13,
"created_at": "2016-08-02T16:42:21.000+08:00",
"session_id": 346,
"sub_session_id": 390, //子会话ID(唯一标识)
"survey_option_id": 2
}
],
"size": 1,
"total": 1,
"total_pages": 1
}
请求IM业务记录
请求地址
- URL '/api/v2/im/note'
- VERB GET
- 频率限制 1次/2秒
请求参数
start_time: "2016-08-08 00:00:00", N(非必填) 时间字符串|默认当前开始时间 end_time: "2016-08-08 23:59:59", N(非必填) 时间字符串|默认当前结束时间 page: 1, N(非必填) 页数|默认1页 page_size: 30, N(非必填) |默认30条 sign Y(必填)
- sign 加密签名,对传递的参数和shared_secret进行MD5加密后的字符串[必填]
- shared_secret 公司添加shared_secret [隐藏/计算signature]
sign加密算法:
- 按以下参数传递的顺序拼接字符: start_time/end_time/page/page_size sign_str = "start_time=value&end_time=value&page=value&page_size=value"
- 以上字符串加入 &shared_secret sign_str = sign_str&shared_secret
- 使用 MD5 计算出签字并小写 Digest::MD5.hexdigest(sign_str).downcase
eg start_time=2016-08-01&end_time=2016-08-08&page=1&page_size=30
返回结果
{
"status": 0,
"message": "成功",
"item": [
{
"id": 13,
"created_at": "2016-08-01T17:45:46.000+08:00",
"note_type": "im",
"session_id": 366,
"sub_session_id": 354, //子会话ID(唯一标识)
"content": "wewe",
"custom_fields": [
[
"TextField_2",
"eeewe"
]
]
}
],
"size": 1,
"total": 1,
"total_pages": 1
}
IM结构化消息发送API
请求地址
- URL '/api/v2/im/struct/messages?sign=sign'
- VERB POST
- 频率限制 1次/2秒
sign使用说明:
sign页面交互时会提供給客户sign,客户需把接受到的sign传递給消息接口
sign加密算法步骤:
- 按以下参数传递的顺序拼接字符: im_sub_session_id/customer_id/agent_id sign_str = "im_sub_session_id=value&customer_id=value&agent_id=value×tamp=value"
- 以上字符串加入 &struct_api_key(密钥的获取 管理员去结构化消息中查看) sign_str = sign_str&struct_api_key
- 使用 MD5 计算出签字并小写 Digest::MD5.hexdigest(sign_str).downcase
请求参数
{
"im_sub_session_id": 对话ID, //必填
"customer_id": 客户ID, //必填
"agent_id": 客服ID, //必填
"jid_resource": "SDK渠道来源", //选填
"timestamp": 1484273628775, // 必填 13位的当前时间戳
"sign": "", //必填
"data": {
title: String, //标题
description: String, //描述
img_url: String, //图片链接
buttons: [{
type: "link",
text: String,
value: String
},{
type: "phone",
text: String,
value: String
},{
type: "sdk_callback",
callback_name: String, //回调名称
text: String,
value: String
}]
}
}
返回结果
{
"code": 1000 //状态码
"message": "状态说明"
}
code 状态码说明
1000, //成功 2000, //系统错误&缺少参数 2001, //二级域名错误 2002, //签名错,请升级版本后使用 5011, //缺少参数 9010, //发送消息失败 429, //api接口超过请求限制
IM结构化消息iframe嵌入传参
iframe嵌入链接地址
- URL 'Udesk客户系统-结构化消息-iframe嵌入链接地址'
- VERB GET
sign加密算法步骤:
- 按以下参数传递的顺序拼接字符: im_sub_session_id/customer_id/agent_id sign_str = "im_sub_session_id=value&customer_id=value&agent_id=value×tamp=value"
- 以上字符串加入 &struct_api_key(密钥的获取 管理员去结构化消息中查看) sign_str = sign_str&struct_api_key
- 使用 MD5 计算出签字并小写 Digest::MD5.hexdigest(sign_str).downcase
传入参数
{
"im_sub_session_id": 对话ID,
"customer_id": 客户ID,
"agent_id": 客服ID,
"jid_resource": SDK来源,
"timestamp": 1484272693, //10位的当前时间戳
"sign": 签名
}
示例
http://www.xxxx.com?im_sub_session_id=xx&customer_id=xx&agent_id=xx&jid_resource=xx×tamp=1484272693&sign=xxxxx