Access Token
您需要在【设置 / 开发者 / APIs】中获取工作台的 Access Token,后续调用以下 APIs 时都需要使用 Token。目前 Token 的有效期是永久,重复获取将导致上次获取的 Token 失效。
$ curl -s https://api.meiqia.com/v1/conversations/<conv_id> -H Authorization:Bearer <access_token>对话
对话是在线客服与顾客沟通的载体。顾客或客服发送消息后,会以对话的形式显示在对话页。
对话模型
| 参数 | 类型 | 说明 |
| enterprise_id | Integer | 美洽定义的企业唯一标识 |
| dev_client_id | String | 第三方系统定义并传递给美洽的顾客唯一标识 |
| page_from_url | String | 对话的来源页 URL |
| page_land_url | String | 对话的着陆页 URL |
| page_land_title | String | 对话的着陆页标题 |
| page_conv_url | String | 对话的对话页 URL |
| page_conv_title | String | 对话的对话页标题 |
| search_engine_name | String | 对话的访问来源是搜索引擎时,搜索引擎的名称 |
| search_engine_kw | String | 搜索关键词 |
| visitor_ip | String | 顾客的 IP |
| visitor_location | String | 顾客的地理位置 |
| visitor_os | String | 顾客的设备操作系统 |
| visitor_browser | String | 顾客的浏览器 |
| visitor_tags | List | 顾客的顾客标签 |
| client_id | Integer | 第三方系统定义并传递给美洽的顾客唯一标识 |
| client_info | Object | 顾客的详细信息 |
| agent_account | String | 客服的账号邮箱 |
| agent_name | String | 客服的名字 |
| agent_ID | String | 美洽定义的客服唯一标识 |
| agent_nick_name | String | 客服的昵称 |
| group_id | String | 美洽定义的客服组 ID |
| group_name | String | 客服组的名称 |
| conv_id | Integer | 美洽定义的对话唯一标识 |
| conv_start_tm | String | 对话的创建时间 |
| conv_end_tm | String | 对话的结束时间 |
| conv_first_resp_wait_in_secs | Integer | 对话的首次响应时长,单位为秒 |
| conv_content | List | 对话的消息 |
| conv_agent_msg_count | String | 客服在对话中发送的消息数 |
| conv_visitor_msg_count | String | 顾客在对话中发送的消息数 |
| conv_quality_grade | String | 对话的评级 |
| conv_leads | String | 对话中收集的线索 |
| comment_level | String | 质检时对话的得分 |
| comment_content | String | 质检时对话的评语 |
| platform | String | 顾客在对话时的设备类型,值有 pc、mobile、tablet |
| conv_tags | String | 对话的对话标签 |
| summary_content | String | 对话小结的内容 |
| summary_update_at | String | 对话小结的最后更新时间 |
| source_type | String | 对话的访问来源类型 |
| source_field | String | 对话的访问来源的值 |
| agent_resp_duration | String | 客服平均响应时长 |
| effective | String | 对话是有效对话还是无效对话 |
| missed | String | 对话是否为遗漏对话 |
| converse_duration | String | 对话的持续时长 |
| app_name | String | 部署了 SDK 的 App 名称,SDK 渠道特有 |
| main_channel | String | 对话渠道 |
| sub_channel | String | 对话子渠道 |
| search_engine | String | 搜索引擎 |
查询单个对话
curl https://api.meiqia.com/v1/conversations/<conv_id>请求
| 参数 | 能否为空 | 说明 |
| enterprise_id | 不能 | 美洽定义的企业唯一标识 |
| app_id | 不能 | 美洽定义的工作台唯一标识 |
| sign | 不能 | 美洽定义的工作台访问签名 |
| conv_id | 不能 | 美洽定义的对话ID |
响应
请求成功后,响应会包含相应对话的对话模型。
查询多个对话(V1.0)
您可以从对话结束时间的维度,查询某个时间段的多个对话。每次查询时,接口规则:
offset对话的偏移量。例如,第一次查询时offset是 0,limit是10,那么第二次查询时,offset要设置为 10,则能查询剩余的对话。limit每次请求查询的对话数,上限是 20,如果超过 20,请求将失败。
curl https://api.meiqia.com/v1/conversations请求
| 参数 | 能否为空 | 说明 |
| enterprise_id | 不能 | 美洽定义的企业唯一标识 |
| app_id | 不能 | 美洽定义的工作台唯一标识 |
| sign | 不能 | 美洽定义的工作台访问签名 |
| offset | 不能 | 对话的偏移量 |
| limit | 不能 | 每次请求拉取对话的最大数量 |
| conv_start_from_tm | 不能 | 对话时间段的开始时间 |
| conv_start_to_tm | 不能 | 对话时间段的结束时间 |
响应
请求成功后,响应会包含相应对话的对话模型,对话按 conv_id 升序排列。
查询多个对话(V2.0)
V2.0 在 V1.0 的基础上提高了安全性,优化了批量查询的逻辑。您可以从对话结束时间维度,查询某个时间段的多个对话,每次查询时,接口规则:
page_token查询时使用,初始时设置为page_token= “”,之后每次设置request.page_token等于上次response.next_page_token;当某一次response.next_page_token== “” 时,说明对话已被全部拉取,查询结束。
- limit 每次请求查询的对话数,上限是 20,如果超过 20,请求将失败。
curl https://api.meiqia.com/v2/conversations请求
| 参数 | 能否为空 | 说明 |
| X-App-ID | 不能 | 美洽定义的工作台唯一标识 |
| X-Sign | 不能 | 美洽定义的工作台访问签名 |
| 参数 | 能否为空 | 说明 |
| enterprise_id | 不能 | 美洽定义的企业唯一标识 |
| limit | 不能 | 每次请求拉取的最大数量 |
| from_tm | 不能 | 对话结束时间段开始时间,可以精确到秒或微秒 us |
| to_tm | 不能 | 对话结束时间段结束时间,可以精确到秒或微秒 us |
| page_token | 不能 | 查询使用的 token |
响应
请求成功后,响应会包含相应对话的对话模型,顾客按 conv_id 升序排列。
响应中会带有 next_page_token ,用于做下一次请求的 page_token。
顾客
顾客是通过各个对话渠道,与客服进行沟通的人。如果顾客拥有了电话号码、微信、QQ、微博四种联系方式里其中一个时,您可以通过接口访问到该顾客资源。
顾客模型
顾客模型包含顾客的自定义参数,响应中不会包含值为空的自定义参数。
| 参数 | 类型 | 说明 |
| __follow_source | String | 微信公众号的关注来源 |
| __openid | String | 微信公众号定义的顾客唯一标识 |
| address | String | 顾客的地址 |
| age | String | 顾客的年龄 |
| comment | String | 顾客的备注 |
| contact | String | 顾客的联系人 |
| String | 顾客的邮箱 | |
| enterprise_id | String | 美洽定义的企业唯一标识 |
| gender | String | 顾客的性别 |
| name | String | 顾客的姓名 |
| String | 顾客的 QQ | |
| tel | String | 顾客的电话号码 |
| track_id | String | 美洽定义的顾客唯一标识 |
| String | 顾客的微博 | |
| weixin | String | 顾客的微信 |
根据创建时间查询多个顾客
您可以从顾客创建时间的维度,查询某个时间段的多个顾客。每次查询时,接口规则:
page_token查询时使用,初始时设置为page_token= “”,之后每次设置request.page_token等于上次response.next_page_token;当某一次response.next_page_token== “” 时,说明顾客已被全部拉取,查询结束。limit每次请求查询的顾客数,上限是 20,如果超过 20,请求将失败。
curl https://api.meiqia.com/v2/clients请求
| 参数 | 能否为空 | 说明 |
| X-App-ID | 不能 | 美洽定义的工作台唯一标识 |
| X-Sign | 不能 | 美洽定义的工作台访问签名 |
| 参数 | 能否为空 | 说明 |
| enterprise_id | 不能 | 美洽定义的企业唯一标识 |
| limit | 不能 | 每次请求拉取的最大数量 |
| from_tm | 不能 | 顾客信息创建时间段开始时间,可以精确到秒或微秒 us |
| to_tm | 不能 | 顾客信息创建时间段结束时间,可以精确到秒或微秒 us |
| page_token | 不能 | 查询使用的 token |
响应
请求成功后,响应会包含相应顾客的顾客模型,顾客按 ticket_id 升序排列。
响应中会带有 next_page_token ,用于做下一次请求的 page_token。
根据最后更新时间查询多个顾客
您可以从顾客最后更新时间维度,查询某个时间段的多个顾客。每次查询时,接口规则:
page_token查询时使用,初始时设置为page_token= “”,之后每次设置request.page_token等于上次response.next_page_token;当某一次response.next_page_token== “” 时,说明顾客已被全部拉取,查询结束。limit每次请求查询的顾客数,上限是 20,如果超过 20,请求将失败。
curl https://api.meiqia.com/v2/clients/updated请求
| 参数 | 能否为空 | 说明 |
| X-App-ID | 不能 | 美洽定义的工作台唯一标识 |
| X-Sign | 不能 | 美洽定义的工作台访问签名 |
| 参数 | 能否为空 | 说明 |
| enterprise_id | 不能 | 美洽定义的企业唯一标识 |
| limit | 不能 | 每次请求拉取对话的最大数量 |
| from_tm | 不能 | 顾客信息更新时间段开始时间,可以精确到秒或微秒 us |
| to_tm | 不能 | 顾客信息更新时间段结束时间,可以精确到秒或微秒 us |
| page_token | 不能 | 查询使用的 token |
响应
请求成功后,响应会包含相应顾客的顾客模型,顾客按 track_id 升序排列。
响应中会带有 next_page_token ,用于做下一次请求的 page_token。
留言
留言模型
| 参数 | 类型 | 说明 |
| enterprise_id | Integer | 美洽定义的企业唯一标识 |
| dev_client_id | String | 第三方系统定义并传递给美洽的顾客唯一标识 |
| ticket_id | Integer | 美洽定义的留言唯一标识 |
| ticket_title | String | 留言的标题 |
| ticket_status | String | 留言的状态 |
| ticket_source | String | 留言的渠道 |
| ticket_category | String | 留言的分类 |
| ticket_create_tm | String | 留言的创建时间 |
| resolved_tm | String | 留言的关闭时间 |
| owner | Object | 留言的创建人 |
| assignee | Object | 留言的处理人 |
| resolver | Object | 留言的关闭人 |
| cc_agent_groups | LIst | 留言的抄送客服组 |
| cc_agent | LIst | 留言的抄送人 |
| client_id | Integer | 第三方系统定义并传递给美洽的顾客唯一标识 |
| client_info | Object | 顾客的详细信息 |
| visitor_tags | LIst | 顾客的顾客标签 |
| ticket_content | Object | 留言的内容 |
| page_from_url | String | 留言的来源页 URL |
| page_land_url | String | 留言的着陆页 URL |
| page_land_title | String | 留言的着陆页标题 |
| search_engine_name | String | 搜索引擎的名称 |
| search_engine_kw | String | 搜索关键词 |
| visitor_ip | String | 顾客的 IP |
| visitor_location | String | 顾客的地理信息 |
| visitor_os | String | 顾客的操作系统 |
| visitor_browser | String | 顾客的浏览器 |
| 参数 | 类型 | 说明 |
| id | String | 创建人 / 处理人 / 抄送人的身份唯一标识 |
| name | String | 创建人 / 处理人 / 抄送人的姓名 |
| account | String | 创建人 / 处理人 / 抄送人的账号信息 |
| 参数 | 类型 | 说明 |
| from | String | 发送消息 |
| timestamp | String | 消息的发送时间 |
| content | String | 消息的内容 |
| action_type | String |
| 参数 | 类型 | 说明 |
| from | String | 发送消息 |
| timestamp | String | 消息的发送时间 |
| content | String | 消息的内容 |
| action_type | String | 消息对应的回复类型 |
查询单条留言
curl https://api.meiqia.com/v1/tickets/<track_id>请求
| 参数 | 能否为空 | 说明 |
| enterprise_id | 不能 | 美洽定义的企业唯一标识 |
| app_id | 不能 | 美洽定义的工作台唯一标识 |
| sign | 不能 | 美洽定义的工作台访问签名 |
| ticket_id | 不能 | 美洽定义的留言ID |
响应
请求成功后,响应会包含相应留言的留言模型。
查询多个留言
您可以从留言创建时间维度,查询某个时间段的多个留言。每次查询时,接口规则:
offset留言的偏移量。例如,第一次查询时offset是 0,limit是10,那么第二次查询时,offset要设置为 10,则能查询剩余的留言。limit每次请求查询的留言数,上限是 20,如果超过 20,请求将失败。
curl https://api.meiqia.com/v1/tickets请求
| 参数 | 能否为空 | 说明 |
| enterprise_id | 不能 | 美洽定义的企业唯一标识 |
| app_id | 不能 | 美洽定义的工作台唯一标识 |
| sign | 不能 | 美洽定义的工作台访问签名 |
| offset | 不能 | 留言的偏移量 |
| limit | 不能 | 每次请求拉取留言的最大数量 |
| ticket_start_from_tm | 不能 | 开始时间 |
| ticket_start_to_tm | 不能 | 结束时间 |
响应
请求成功后,响应会包含相应留言的留言模型,留言按 ticket_id 升序排列。
报表
在线时长
GET /unified-api/datagateway/v1/reports/agent_online_stats
| 请求参数 | 能否为空 | 说明 |
| from_tm | 不能 | 开始时间 (yyyy-mm-dd hh-mm-sss) |
| to_tm | 不能 | 结束时间 (yyyy-mm-dd hh-mm-sss) |
{
"rows": [
{
"agent_id": 10004906, // 客服ID
"agent_name": "超级管理员x", // 客服名称
"group_id": 4372, // 客服组ID
"group_name": "默认分组", // 客服组名称
"work_num": "", // 工号
"online_offduty": 0, // 隐身时长
"online_onduty": 0, // 在线时长
"pns_onduty": 0, // 推送开启时长
"pns_offduty": 0, // 推送关闭时长
"offline": 50400 // 离线时长
}
]
}
客服评价
GET /unified-api/datagateway/v1/reports/agent_evaluation
| 请求参数 | 能否为空 | 说明 |
| from_tm | 不能 | 开始时间 (yyyy-mm-dd hh:mm:sss) |
| to_tm | 不能 | 结束时间 (yyyy-mm-dd hh:mm:sss) |
{
"rows": [
{
"agent_id": 10004906,
"agent_name": "超级管理员x",
"group_id": 4372,
"group_name": "默认分组",
"work_num": "",
"conv_cnt": 0, // 对话数
"effective_conv_cnt": 0, // 有效对话数
"good_conv_cnt": 0, // 好评数
"medium_conv_cnt": 0, // 中评数
"bad_conv_cnt": 0, // 差评数
"solveed_cnt": 0, // 解决数
"unsolved_cnt": 0 // 未解决数
}
]
}
客服服务量
GET /unified-api/datagateway/v1/reports/agent_service
| 请求参数 | 能否为空 | 说明 |
| from_tm | 不能 | 开始时间 (yyyy-mm-dd hh-mm-sss) |
| to_tm | 不能 | 结束时间 (yyyy-mm-dd hh-mm-sss) |
{
"rows": [
{
"agent_id": 10004906,
"agent_name": "超级管理员x",
"group_id": 4372,
"group_name": "默认分组",
"work_num": "",
"conv_cnt": 0, // 对话数
"effective_conv_cnt": 0, // 有效对话数
"missed_conv_cnt": 0, // 遗漏对话数
"delayed_conv_cnt": 0, // 延误对话数
"msg_cnt": 0, // 消息数
"duration_time": 0, // 对话持续时长
"conv_first_response_wait_time": 0, // 对话首次响应时长
"agent_first_response_wait_time": 0, // 客服首次响应时长
"avg_response_wait_time": 0, // 平均响应时长
"gold_conv_cnt": 0, // 金牌对话数
"silver_conv_cnt": 0, // 银牌对话数
"bronze_conv_cnt": 0, // 铜牌对话数
"nograde_conv_cnt": 0, // 无评级对话数
"good_conv_cnt": 0, // 好评数
"medium_conv_cnt": 0, // 中评数
"bad_conv_cnt": 0, // 差评数
"clues_cnt": 0, // 线索数
"remark_cnt": 0, // 备注数
"transfer_in_cnt": 0, // 被动转接数
"transfer_out_cnt": 0, // 主动转接数
"clue_conv_cnt": 0 // 线索对话数
}
]
}
错误提示
请求 APIs 出错时美洽会返回错误码以及响应的错误提示。
| errno | errmsg |
| 10011 | Authentication failed. Please check app_id and sign. |
| 10012 | URL is error. Please check url. |
| 10013 | The param of limit in request is xxx, exceed max value xxx. |
| 10014 | Request api exceed specified times. Please request later. |
| 10015 | Server-side internal logic error. Please try again later. |
| 10016 | The param of xxx is invalid. |