import json vendor_group_id = params_kw.get('vendor_group_id', '') source_url = params_kw.get('source_url', '') asset_type = params_kw.get('asset_type', 'Image') name = params_kw.get('name', '') if not vendor_group_id or not source_url: return json.dumps({ "widgettype": "Message", "options": {"message": "请选择认证组合并提供素材URL", "type": "error"} }) # If source_url is base64 data or local path, convert to public URL if source_url.startswith('data:') or (not source_url.startswith('http') and len(source_url) < 8000): source_url = await b64media2url(request, source_url) if not source_url: return json.dumps({ "widgettype": "Message", "options": {"message": "素材文件转换失败", "type": "error"} }) org_id = (await get_userorgid()) or '0' user_id = (await get_user()) or '' result = await rl_upload_user(org_id, vendor_group_id, source_url, asset_type, name, user_id) if result.get('success'): asset_id = result.get('vendor_asset_id', '') return json.dumps({ "widgettype": "Message", "options": {"message": f"素材上传成功!资产ID: {asset_id}", "type": "success"} }) else: return json.dumps({ "widgettype": "Message", "options": {"message": result.get('message', '上传失败'), "type": "error"} })