全部产品
云市场

导游行为检测

更新时间:2020-01-20 09:58:42

1、服务介绍

1.1 模型说明

导游行为监测

  • 在旅游行业内,“黑导游”“黑旅行社”现象层出不穷,主流是以低价吸引游客参团,然后通过带游客进购物店“宰客”。这种现象,严重扰乱市场秩序和侵害游客权益,给旅游目的地口碑造成了不可挽回的影响。
  • 城管、公安、旅游等部门都曾多次对“黑导游”进行联合整治,执法过程中,核心痛点是取证难度高,告警不及时,导致治理效果有限。
  • 本服务通过在购物点及景区出入口部署摄像头,结合云端人脸比对算法,快速定位人员身份,记录购物点、出入口徘徊行为,周期内出现频次,触发应用层告警,实现导游行为自动取证,再出现时自动告警定位的服务。

1.2 接口及收费维度

底库管理

内容 数据来源
黑名单库 黑导游 公安手动标记接口写入/提前导入
白名单库 正规导游库 公安接口/提前导入
灰名单库 周期内数据存储 人脸抓拍,分析,存储

导游行为记录

接口 内容 类型
黑名单告警记录 黑名单ID、抓拍图片、出现时间(如果多次,支持时间list)、次数 列表,按照最新更新时间倒序输出,支持按照次数检索
白名单行为记录 白名单ID、抓拍图片、出现时间(如果多次,支持时间list)、次数 公安接口/提前导入名单后进行行为记录
灰名单行为接口 周期,名单ID、抓拍图片、出现时间(如果多次,支持时间list)、次数 支持后台设置次数阈值,仅输出超出阈值的数据,支持按照最近1天,7天,15天,30天,60天,90天查询

2、接入指南

2.1 API调用方式

SDK依赖

本例提供java sdk pom依赖示例,更多语言SDK详情请参考API调用对接指引

  1. <dependency>
  2. <groupId>com.aliyun.api.gateway</groupId>
  3. <artifactId>sdk-core-java</artifactId>
  4. <version>1.6.0.3</version>
  5. </dependency>

示例代码

  1. HttpClientBuilderParams builderParams = new HttpClientBuilderParams();
  2. builderParams.setAppKey("${appKey}"); // 请填写正确的AppKey
  3. builderParams.setAppSecret("${appSecret}"); // 请填写正确的AppSecret
  4. ApacheHttpClient apacheHttpClient = new ApacheHttpClient(builderParams);
  5. IoTApiRequest request = new IoTApiRequest();
  6. //设置api的版本
  7. request.setApiVer("1.0.0");
  8. //如果需要登陆,设置当前的会话的token
  9. //设置参数
  10. request.putParam("model", "xxxxxx");
  11. request.putParam("projectId", "yyyyy");
  12. Map<String, Object> param = new HashMap<>(8);
  13. param.put("startTime", "2019-01-01");
  14. param.put("endTime", "2019-01-31");
  15. param.put("limit", 10);
  16. request.putParam("paramJson", JSONObject.toJSONString(param));
  17. //请求参数域名、path、request
  18. String host = "api.link.aliyun.com";
  19. String path = "/tourism/statistics/query";
  20. System.out.println(JSON.toJSONString(request));
  21. ApiRequest apiRequest = new ApiRequest(HttpScheme.HTTP, host,
  22. HttpMethod.POST_BODY, path, JSON.toJSONBytes(request));
  23. apiRequest.setHttpConnectionMode(HttpConnectionModel.MULTIPLE_CONNECTION);
  24. ApiResponse response = apacheHttpClient.sendSyncRequest(apiRequest);
  25. System.out.println(request.getId());
  26. System.out.println(
  27. "response code = " + response.getCode() + " response message = " + response.getMessage()
  28. + " response content = " + new String(response.getBody(),
  29. "utf-8"));

2.2 接口详情

2.2.1 黑/白名单用户底库管理

底库管理

查询底库上传地址(最多10条)

路径:/home/face/file/getuploadurl
版本:1.0.0

  1. 入参:
  2. {
  3. "batch": 10 // 非必填,批量个数,小于等于10,可一次请求多个URL
  4. }
  5. 出参:
  6. {
  7. "code": 200,
  8. "message": "success",
  9. "data":[
  10. {
  11. "faceKey":"xxx", // oss文件名
  12. "faceUrl":"http://oss-example.oss-cn-hangzhou.aliyuncs.com/xxx.jpg" // oss文件URL
  13. },
  14. {
  15. "faceKey":"xxx",
  16. "faceUrl":"http://oss-example.oss-cn-hangzhou.aliyuncs.com/xxx.jpg"
  17. }
  18. ]
  19. }

批量添加用户(最多10条/批)

路径:/home/face/user/batchadd
版本:1.0.0

  1. 入参:
  2. userList:[
  3. {
  4. "name": "xxx", // 必填,姓名
  5. "gender": "F", // 必填,性别: F-女,M-男
  6. "age": 10, // 必填,年龄
  7. "faceKey": "xxx", // 非必填,oss人脸图片名称
  8. "faceType": 1 // 必填,0-白名单,1-黑名单
  9. }
  10. ]
  11. 出参:
  12. {
  13. "code": 200,
  14. "message": "success",
  15. "data":[{
  16. "name": "晓筑",
  17. "identityId": "xxx",
  18. "status": true // true-创建成,false-创建失败
  19. },{
  20. "name": "晓筑1",
  21. "identityId": "xxx",
  22. "status": false
  23. }]
  24. }

查询用户

路径:/home/face/user/get
版本:1.0.0

  1. 入参:
  2. {
  3. "identityId": "xxx", // 非必填,identityIdname不能同时为空
  4. "name": "xxx" // 非必填,identityIdname不能同时为空
  5. }
  6. 出参:
  7. {
  8. "code": 200,
  9. "message": "success",
  10. "data": {
  11. "name": "xxx",
  12. "gender": "F",
  13. "age": 10,
  14. "faceId": "xxx", // faceKey二选一
  15. "faceKey": "xxx", // 人脸底库在oss的名字
  16. "faceType": 1 // 0-白名单、1-黑名单
  17. }
  18. }

分页查询用户

路径:/home/face/user/querybypage
版本:1.0.0

  1. 入参:
  2. {
  3. "pageNo": 1, // 必填
  4. "pageSize": 10, // 必填
  5. "faceType": 0 // 非必填,0-白名单、1-黑名单
  6. }
  7. 出参:
  8. {
  9. "code": 200,
  10. "message": "success",
  11. "data": {
  12. "tatal": 10,
  13. "pageNo": 1,
  14. "pageSize": 10,
  15. "data":[{
  16. "identityId": "xxx",
  17. "name": "xxx",
  18. "gender": "F",
  19. "age": 10,
  20. "faceId": "xxx", // faceKey二选一
  21. "faceKey": "xxx", // 人脸底库在oss的名字
  22. "faceType": 1 // 0-白名单、1-黑名单
  23. }]
  24. }

更新用户

路径:/home/face/user/update
版本:1.0.0

  1. 入参:
  2. {
  3. "identityId": "xxx", // 必填,用户身份ID
  4. "name": "xxx", // 非必填,所有非必填字段不能同时为空,姓名
  5. "gender": "F", // 非必填,所有非必填字段不能同时为空,性别: F-女,M-男
  6. "age": 10, // 非必填,所有非必填字段不能同时为空,年龄
  7. "faceKey": "xxx", // 非必填,所有非必填字段不能同时为空,人脸底库在oss的名字
  8. "faceType": 1 // 非必填,所有非必填字段不能同时为空,0-白名单、1-黑名单
  9. }
  10. 出参:
  11. {
  12. "code": 200,
  13. "message": "success",
  14. "data": null
  15. }

批量删除用户

路径:/home/face/user/batchdelete
版本:1.0.0

  1. 入参:
  2. identityIds:[
  3. "xxx","xxx" // 必填,人员身份ID列表,List<identityId>
  4. ]
  5. 出参:
  6. {
  7. "code": 200,
  8. "message": "success",
  9. "data": null
  10. }

查询用户绑定的人脸

路径:/home/face/user/face/query
版本:1.0.0

入参
参数 类型 是否必填 备注
identityId String 用户Id

出参
参数 类型 备注
identityId String 用户Id
faceId String 人脸Id
faceUrl String 人脸图片地址
gmtCreate Data 添加时间

示例

入参示例

  1. {
  2. "identityId":"xxxxx",
  3. "faceIds":["yyyy","zzzz"]
  4. }

出参示例

  1. {
  2. "code": 200,
  3. "message": "success",
  4. "data": [
  5. {
  6. "identityId":"",
  7. "faceId":"",
  8. "faceUrl":"",
  9. "gmtCreate":1578053761000
  10. },
  11. {
  12. "identityId":"",
  13. "faceId":"",
  14. "faceUrl":"",
  15. "gmtCreate":1578053781000
  16. }
  17. ]
  18. }

删除用户的人脸

路径:/home/face/user/face/unbind
版本:1.0.0

入参
参数 类型 是否必填 备注
faceIds JSON 人脸Id
identityId String 用户Id

出参
参数 类型 备注
data Integer 成功删除的个数

示例

入参示例

  1. {
  2. "identityId":"xxxxx",
  3. "faceIds":["yyyy","zzzz"]
  4. }

出参示例

  1. {
  2. "code": 200,
  3. "message": "success",
  4. "data": 2
  5. }

2.2.2 疑似黑导游行为记录

疑似

查询匿名人脸

匿名人脸:摄像头直接抓拍的人脸图片,如果没有绑定用户,就是匿名人脸。该接口用于查询某段时间内出现次数超过阈值caputuredNum的匿名人脸。可以通过绑定接口把匿名人脸绑定到用户下。

路径:/home/face/anonymous/face/query
版本:1.0.0

入参
参数 类型 是否必填 备注
toDate String 格式yyyy-MM-dd,结束日期(含当天),默认昨天
period String 时间段枚举,相对toDate,YESTODAY-昨天,LAST7DAY-近7天,LAST15DAY-近15天,LAST30DAY-近30天,LAST60DAY-近60天,LAST90DAY-近90天
capturedNum Integer 抓拍的次数,YESTODAY 表示一天内抓拍的次数,其他表示抓拍的天数
pageNo Integer 页码
pageSize Integer 分页大小

出参
参数 类型 备注
faceId String 匿名人脸Id
faceUrl String 人脸图片地址

示例

入参示例

  1. {
  2. "period":"LAST90DAY",
  3. "toDate":"2019-11-16",
  4. "campturedLimit":15,
  5. "pageNo":1,
  6. "pageSize":10
  7. }

出参示例

  1. {
  2. "code": 200,
  3. "message": "success",
  4. "data": {
  5. "total":200,
  6. "pageNo":1,
  7. "pageSize":10,
  8. "data":[{
  9. "faceId":"xxx",
  10. "faceUrl":"http://xxx.x"
  11. }]
  12. }
  13. }

查询匿名人脸的抓拍记录

路径:/home/face/anonymous/face/record/query
版本:1.0.0

入参
参数 类型 是否必填 备注
fromTime Long 时间戳,精确到ms
toTime Long 时间戳,精确到ms
faceId String 匿名人脸Id
pageNo Integer 页码
pageSize Integer 分页大小

出参
参数 类型 备注
faceId String 匿名人脸Id
faceUrl String 人脸图片地址
iotId String 设备Id
caputuredTime Date 抓拍时间

示例

入参示例

  1. {
  2. "fromDate":1578053781000,
  3. "toDate":1578056781000,
  4. "faceId":"xxxxx",
  5. "pageNo":1,
  6. "pageSize":10
  7. }

出参示例

  1. {
  2. "code": 200,
  3. "message": "success",
  4. "data": {
  5. "total":200,
  6. "pageNo":1,
  7. "pageSize":10,
  8. "data":[{
  9. "faceId":"xxx",
  10. "faceUrl":"http://xxx.x",
  11. "iotId":"xxxx",
  12. "capturedTime":1578053781000
  13. }]
  14. }
  15. }

添加匿名人脸到黑/白名单

路径:/home/face/user/face/bind
版本:1.0.0

入参
参数 类型 是否必填 备注
faceIds JSON 人脸Id
identityId String 用户Id

出参
参数 类型 备注
data Integer 成功绑定的个数

示例

入参示例

  1. {
  2. "identityId":"xxxxx",
  3. "faceIds":["yyyy","zzzz"]
  4. }

出参示例

  1. {
  2. "code": 200,
  3. "message": "success",
  4. "data": 2
  5. }

2.2.3 黑/白名单导游行为记录及定位

行为记录

轨迹查询

路径:/home/face/user/trace/query
版本:1.0.0

入参
参数 类型 是否必填 备注
faceId String 人脸Id
startTM Long 起始时间,毫秒
endTM Long 结束时间,毫秒

出参
参数 类型 备注
data Json 轨迹信息

示例

入参示例

  1. {
  2. "faceId": "dcac3a6c89a24daeb77f65b8bf1cbf92", //必填, 人脸ID
  3. "startTM": 1578205616000, //必填, 起始时间(毫秒)
  4. "endTM": 1578205666000 //必填, 结束时间(毫秒)
  5. }

出参示例

  1. {
  2. "code": 200,
  3. "message": "success",
  4. "localizedMsg": null,
  5. "data": {
  6. "faceId": "dcac3a6c89a24daeb77f65b8bf1cbf92",
  7. "timeSeries": "{\"1578648767325\":\"1\",\"1578648767953\":\"1\",\"1578648768029\":\"1\",\"1578648768559\":\"1\",\"1578648768661\":\"1\",\"1578648772495\":\"1\",\"1578648772703\":\"1\",\"1578648773217\":\"1\",\"1578648773226\":\"1\",\"1578648776183\":\"1\",\"1578648776288\":\"1\",\"1578648779215\":\"1\",\"1578648779418\":\"1\",\"1578648779753\":\"1\",\"1578648779818\":\"1\",\"1578648785339\":\"1\",\"1578648785347\":\"1\",\"1578648785824\":\"1\",\"1578648786222\":\"1\",\"1578648786541\":\"1\",\"1578648786814\":\"1\",\"1578648802584\":\"1\",\"1578648805305\":\"1\",\"1578648805897\":\"1\",\"1578648813488\":\"1\",\"1578648815022\":\"1\",\"1578648815654\":\"1\",\"1578649407941\":\"1\",\"1578650059893\":\"1\",\"1578650059938\":\"1\",\"1578650076884\":\"1\",\"1578650076947\":\"1\",\"1578650485563\":\"1\",\"1578650485618\":\"1\",\"1578650485651\":\"1\",\"1578650775769\":\"1\",\"1578650775896\":\"1\",\"1578651370740\":\"1\",\"1578651426409\":\"1\",\"1578651426586\":\"1\"}",
  8. "positionMap": "{\"1\":{\"iotId\":\"rDLZdBN1QsERXtr8biXX000100\",\"latitude\":\"30.132176\",\"longitude\":\"120.080502\"}}"
  9. }
  10. }

1V1人脸比对,查询人员信息

路径:/home/face/user/compare
版本:1.0.0

入参
参数 类型 是否必填 备注
faceId String 用户人脸Id
faceKey String 抓拍人脸照片在oss的文件名

出参
参数 类型 备注
data Boolean 比对结果

示例

入参示例

  1. {
  2. "faceId": "dcac3a6c89a24daeb77f65b8bf1cbf92", //必填,人脸ID
  3. "faceKey": "ai/face/xxx/xxx.jpg" //必填
  4. }

出参示例

  1. {
  2. "code": 200,
  3. "message": "success",
  4. "localizedMsg": null,
  5. "data": true
  6. }