import json from appPublic.log import debug # Vendor callback: GET or POST # Volcengine example (GET): # ?bytedToken=xxx&resultCode=10000&algorithmBaseRespCode=0 # &reqMeasureInfoValue=1&verify_type=real_time # Return format depends on vendor requirements. debug(f"[rl_callback] params_kw keys: {list(params_kw.keys())}") debug(f"[rl_callback] params_kw: {params_kw}") body_str = http_request.get("body", "") or "" byted_token = "" result_code = "" # 1. Try POST body (JSON) try: body = json.loads(body_str) if body_str else {} byted_token = (body.get("BytedToken") or body.get("bytedToken") or body.get("byted_token") or body.get("Token") or "") result_code = body.get("resultCode") or body.get("ResultCode") or "" except: pass # 2. Fallback: query string params (GET callback) if not byted_token: byted_token = (params_kw.get("bytedToken") or params_kw.get("BytedToken") or params_kw.get("byted_token") or params_kw.get("BytedToken") or "") if not result_code: result_code = params_kw.get("resultCode", "") debug(f"[rl_callback] byted_token={byted_token}, resultCode={result_code}") if not byted_token: return json.dumps({"code": "400", "message": "Missing bytedToken"}) # Process callback result = await rl_handle_callback(byted_token, project_name="default") debug(f"[rl_callback] handle_callback result: {result}") # Volcengine expects HTTP 200 with any body for success. # Return a simple success/failure response. if result.get("success"): return json.dumps({"code": "200", "message": "ok"}) else: return json.dumps({"code": "500", "message": result.get("message", "callback error")})