from django.urls import path, include from rest_framework.routers import DefaultRouter from . import views from drf_yasg import openapi websocket_schema = openapi.Schema( type=openapi.TYPE_OBJECT, properties={ 'websocket_url': openapi.Schema( type=openapi.TYPE_STRING, description='WebSocket连接地址', example='ws://your-domain/ws/device/{user_id}/' ), 'message_format': openapi.Schema( type=openapi.TYPE_OBJECT, description='消息格式', properties={ 'type': openapi.Schema( type=openapi.TYPE_STRING, description='消息类型', enum=['chat_message', 'weather', 'sing', 'dance', 'touch', 'flow_light', 'conversation_status', 'factory_reset'] ), 'message': openapi.Schema( type=openapi.TYPE_OBJECT, description='消息内容,根据type不同有不同的格式', oneOf=[ openapi.Schema( type=openapi.TYPE_STRING, description='文本消息内容' ), openapi.Schema( type=openapi.TYPE_OBJECT, description='天气消息', properties={ 'city': openapi.Schema( type=openapi.TYPE_OBJECT, properties={ 'name': openapi.Schema(type=openapi.TYPE_STRING), 'id': openapi.Schema(type=openapi.TYPE_STRING), 'adm1': openapi.Schema(type=openapi.TYPE_STRING), 'adm2': openapi.Schema(type=openapi.TYPE_STRING) } ), 'weather': openapi.Schema( type=openapi.TYPE_OBJECT, properties={ 'code': openapi.Schema(type=openapi.TYPE_STRING), 'updateTime': openapi.Schema(type=openapi.TYPE_STRING), 'fxLink': openapi.Schema(type=openapi.TYPE_STRING), 'now': openapi.Schema( type=openapi.TYPE_OBJECT, properties={ 'temp': openapi.Schema(type=openapi.TYPE_STRING), 'text': openapi.Schema(type=openapi.TYPE_STRING), 'icon': openapi.Schema(type=openapi.TYPE_STRING) } ) } ) } ), openapi.Schema( type=openapi.TYPE_OBJECT, description='唱歌消息', properties={ 'song': openapi.Schema(type=openapi.TYPE_STRING), 'artist': openapi.Schema(type=openapi.TYPE_STRING), 'duration': openapi.Schema(type=openapi.TYPE_STRING) } ), openapi.Schema( type=openapi.TYPE_OBJECT, description='跳舞消息', properties={ 'dance': openapi.Schema(type=openapi.TYPE_STRING), 'style': openapi.Schema(type=openapi.TYPE_STRING), 'duration': openapi.Schema(type=openapi.TYPE_STRING) } ), openapi.Schema( type=openapi.TYPE_OBJECT, description='恢复出厂设置消息', properties={ 'confirm': openapi.Schema(type=openapi.TYPE_BOOLEAN, description='确认恢复出厂设置'), 'backup': openapi.Schema(type=openapi.TYPE_BOOLEAN, description='是否备份用户数据'), 'reset_type': openapi.Schema(type=openapi.TYPE_STRING, description='重置类型:full(完全重置)/partial(部分重置)', enum=['full', 'partial']) } ) ] ), 'user_id': openapi.Schema( type=openapi.TYPE_STRING, description='用户ID' ) }, required=['type', 'message', 'user_id'] ) } ) router = DefaultRouter() # 设备相关路由 router.register(r'device-types', views.DeviceTypeViewSet, basename='device-type') router.register(r'device-batches', views.DeviceBatchViewSet, basename='device-batch') router.register(r'devices', views.DeviceViewSet, basename='device') router.register(r'user-devices', views.UserDeviceViewSet, basename='user-device') # 原有路由 router.register(r'messages', views.MessageViewSet, basename='message') router.register(r'rtc-token', views.VolcEngineTokenViewSet, basename='volcengine-token') urlpatterns = [ path('send_message_to_user//', views.send_message_to_user, name='send_message_to_user'), path('', include(router.urls)), ]