# 游戏接入视频号直播任务指引

[注] 当前接口只支持微信区用户携带票据请求,暂不支持QQ区!

接口:https://game.weixin.qq.com/cgi-bin/gameliveapi/gettaskdetailforgame
外网: game.weixin.qq.com

内网L5
正式环境:64028801:65536
测试环境: 64028801:131072

请求/回包均为json,建议直接走正式环境测试,无需配置host
接口有access_token鉴权,access_token为微信登陆态

curl "https://game.weixin.qq.com/cgi-bin/gameliveapi/gettaskdetailforgame?access_token=51_MLJ3r4CmcrHc5ill2OS46Ns-ZzDfzbK1PPCjU3r1eg2--qSDcmrzVWbJDOqkHJej_jgn6cvtMWSqxpI5VcblfVAFVILZPWNSC6_dTBtMRHk" -H 'Content-Type:application/json' -d '{"appid":"wx76fc280041c16519", "task_auth_list":[{"task_id":"test","task_key":"test"}]}'

task_id和task_key由微信运营分配

接口支持批量传task_id拉取任务列表详情,如同时有多个任务,请务必一次性传过来task_auth_list,不要分批请求!

enum TaskCondtionType {
  // 观众指标:2、6、7;主播指标:1、2、3、4、5
  // 对于主播来说,观时就是指“该直播被所有观众观看的总时长”;直播时长是“该场直播的总持续时间”。 
  TaskConditionTypeUV = 1;               // uv
  TaskConditionTypeWatchTime = 2;        // 观时,主播和观众共用
  TaskConditionTypeRewardValue = 3;      // 打赏
  TaskConditionTypeIncreaseFansNum = 4;  // 粉丝增加数量
  TaskConditionTypeLiveDuration = 5;     // 直播时长

  TaskConditionTypeLikeCount = 6;        // 点赞次数, for观众
  TaskConditionTypeShareCount = 7;       // 分享次数, for观众  
}
message TaskAuth {
  optional string task_id = 1;  // 确认任务内容后联系@v_ynyaoliao配置并告知task_id&task_key
  optional string task_key = 2;
}

enum GeneralTaskType {
  GeneralTaskTypeAnchor = 0;    // 主播任务
  GeneralTaskTypeAudience = 1;  // 观众任务
}

message GetTaskDetailForGameRequest {
  optional string  appid    = 1;             // 游戏appid
  repeated TaskAuth task_auth_list = 2;  // 获取的任务列表
  optional string user_id = 3;           // 用户身份信息,ex. openid、游戏侧id等,建议传,便于排查问题
  optional uint32 general_task_type = 4; // 观众任务or主播任务  enum GeneralTaskType
}

message TaskConditionList {
  repeated TaskCondition condition_list = 1;  // 条件列表
  optional uint32 task_relation = 2;          // 1与/2或
}

message TaskCondition {
  optional string condition_desc = 1;  // 任务描述
  optional uint64 value = 2;           // 任务进度(管理端配置允许返回才返回)
  optional uint64 target_value = 3;    // 条件目标值
  optional bool is_satisfied = 4;      // 是否满足条件
  optional uint32 condition_type = 5;  // TaskCondtionType     
  optional uint32 period_time = 6;     // 周期时间(秒),0代表统计当前任务起止时间内的历史所有数据
  optional string condition_id = 7;    // 条件id
}

message TaskDetail {
  optional string task_id = 1;
  optional string task_desc = 2;
  optional TaskConditionList task_condition_list = 3;
  optional bool is_satisfied = 4;  // 是否满足条件
}

message GetTaskDetailForGameResponse {
  required int32 errcode = 1;
  optional string errmsg = 2;
  optional OkResult data = 3;

  message OkResult {
    repeated TaskDetail task_detail_list = 1;
  }
}


json示例

{
  "task_detail_list": [
    {
      "task_id": "65",
      "task_desc": "斗地主十月主播招募活动任务1、2 测试",
      "task_condition_list": {
        "condition_list": [
          {
            "target_value": 1,      // 目标值
            "is_satisfied": true,   // 是否满足条件
            "condition_type": 1,    // uv 条件类型 见 TaskCondtionType
            "period_time": 86400,   // 任务周期
            "condition_id": "330",  // 条件id
            "value":1                 // 当前进度
          },
          {
            "target_value": "1",
            "is_satisfied": true,
            "condition_type": 5,
            "period_time": 86400,
            "condition_id": "331"
          }
        ],
        "task_relation": 1 // 1与/2或
      },
      "is_satisfied": true
    }
  ]
}

# 常见错误码说明

错误码 说明 解决方案
42001、40001 登录态过期 access_token过期,申请新的access_token来访问接口。
-10129018 appid错误,例如为空或含有空格等 检查appid传参是否正确。
-10129019 task_id不存在 1.先看请求是否有携带general_task_type,如果没有,需要带上来标识观众任务/主播任务。 2.查看task_id是否和提供的配置相同,如果相同,联系@v_ynyaoliao检查提供的配置是否正确。
-10129020 task_id存在但task_key错误 和上面错误码-10129019类似。
-10098108 请求携带的access_token对应的游戏和请求中的appid游戏不一致 不允许游戏A请求游戏B的主播任务列表。 请检查access_token和appid是否均为本游戏的。

# 常见异常情况

异常情况 说明 解决方案
用户反馈完成任务但状态仍为未完成 两次授权,一次微信授权,一次微信视频号授权,如果两次授权的微信账号不同,就会出现开播正常但是任务查询未完成的问题。 微信授权和视频号授权对应的微信账号应该一致,如果有用户反馈,可以先联系用户确认。
接口拉取不到is_satisfied字段 img.png 微信侧管理端配置某条任务时,配置了多个子任务但并未配置子任务的逻辑关系(与/或),就会出现这种情况,本质是任务配置错误。 提供任务task_id,联系@v_ynyaoliao检查管理端任务配置情况。