avcon.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from fastapi import APIRouter, Request, Depends,Query,HTTPException
  4. from database import get_db
  5. from sqlalchemy.orm import Session
  6. from sqlalchemy import case,or_
  7. from sqlalchemy import text
  8. from utils import *
  9. from utils.ry_system_util import *
  10. from utils.video_util import *
  11. from common.security import valid_access_token
  12. from fastapi.responses import JSONResponse
  13. import traceback
  14. import base64
  15. from datetime import datetime
  16. from common import AvconH5API, AvconMiniAPI
  17. from models import *
  18. '''
  19. 融合通信相关接口
  20. '''
  21. router = APIRouter()
  22. @router.get('/get_video_list')
  23. async def get_video_list(
  24. db: Session = Depends(get_db)
  25. ):
  26. return AvconH5API.get_channel_all()
  27. @router.get('/get_mini_video_list')
  28. async def get_mini_video_list(
  29. db: Session = Depends(get_db)
  30. ):
  31. # domain = AvconMiniAPI.get_config("DOMAIN")
  32. # rsa_public_key = AvconMiniAPI.get_config("RSA_PUBLIC_KEY")
  33. # return domain + " / " + rsa_public_key
  34. # return AvconMiniAPI.get_group_page()
  35. # return AvconMiniAPI.get_group_device("G6@mm.zw.yj")
  36. # return AvconMiniAPI.get_device_info("19.152.196.150@mm.zw.yj")
  37. # return AvconMiniAPI.get_device_all()
  38. # return AvconMiniAPI.get_device_channel("19.152.196.150@mm.zw.yj")
  39. # return AvconMiniAPI.get_device_channel_gps("19.152.196.150@mm.zw.yj")
  40. return AvconMiniAPI.get_channel_all()
  41. @router.post("/get_start_mini_param")
  42. async def get_start_mini_param(
  43. body = Depends(remove_xss_json),
  44. db: Session = Depends(get_db)
  45. ):
  46. userid = get_req_param(body, "userid")
  47. password = "123"
  48. # 自动入会时的会议ID,若不传roomid或roomid为空,则程序会自动召开一个会议,并将dev-list对应的人员拉入会议中
  49. roomid = get_req_param_optional(body, "roomid")
  50. # 进入会议后需要广播的人员列表
  51. dev_list = get_req_param(body, "dev-list")
  52. params = {
  53. "mode": "mini",
  54. "cmd": "enterroom",
  55. "serverip": "19.152.196.106",
  56. "userid": userid,
  57. "password": password,
  58. "roomid": roomid,
  59. "windowpos": {"x": 0,"y": 0,"width": 1000,"height": 700,"top": True},
  60. "members": {
  61. "num": 10,
  62. "dev-list": [
  63. {
  64. "id": "cs0030@xf"
  65. },
  66. {
  67. "id": "cs0028@xf",
  68. "avtype": "a"
  69. }
  70. ],
  71. "sip-list": [
  72. {
  73. "id": "60002"
  74. },
  75. {
  76. "id": "60008",
  77. "avtype": "a"
  78. }
  79. ]
  80. }
  81. }
  82. params['members']['num'] = len(dev_list)
  83. params['members']['dev-list'] = dev_list
  84. logger.info("发起融合通信mini客户端: {}", params)
  85. json_str = json.dumps(params, ensure_ascii=False)
  86. base64_str = base64.b64encode(json_str.encode('utf-8')).decode('utf-8')
  87. return {
  88. "code": 0,
  89. "msg": "success",
  90. "data": "" + "avcon6://" + base64_str
  91. }