# -*- coding: utf-8 -*- # demo/api/presence.dspy —— W-07j 多人预览加入/离开 # 入参: session_id(必填), action(必填 join/leave), user_id(可选), user_name(可选) try: if not params_kw.get('session_id') or not params_kw.get('action'): return {"status": 400, "message": "session_id 与 action 不能为空"} action = str(params_kw.get('action')).lower() if action not in ('join', 'leave'): return {"status": 400, "message": "action 只能为 join/leave"} if action == 'join': data = await presence_join( session_id=params_kw.get('session_id'), user_id=params_kw.get('user_id', ''), user_name=params_kw.get('user_name', ''), ) else: data = await presence_leave( session_id=params_kw.get('session_id'), user_id=params_kw.get('user_id', ''), ) return {"status": 200, "data": data} except DemoParamError as e: return {"status": 400, "message": str(e)} except DemoNotFoundError as e: return {"status": 404, "message": str(e)} except DemoStateError as e: return {"status": 400, "message": str(e)} except Exception as e: return {"status": 500, "message": "presence 内部错误: %s" % e}