feat: notify_event增加wspush以及一些优化
This commit is contained in:
parent
1048fb8d5c
commit
ec8d416e80
|
@ -84,12 +84,9 @@ def get_ep_default():
|
|||
"time2": int(time.time()), # 当前时间戳
|
||||
}
|
||||
|
||||
|
||||
def notify_event(event: Event, voice_msg=''):
|
||||
"""事件后续处理:
|
||||
|
||||
Args:
|
||||
event (Event): _description_
|
||||
def gen_params(event: Event):
|
||||
"""
|
||||
生成短信模板发送参数
|
||||
"""
|
||||
# 生成通知文本
|
||||
ep = event.employee
|
||||
|
@ -114,20 +111,34 @@ def notify_event(event: Event, voice_msg=''):
|
|||
for i in event.cates.all():
|
||||
cats_list.append(i.name)
|
||||
params['event'] = ','.join(cats_list)
|
||||
return params
|
||||
|
||||
|
||||
def notify_event(event: Event):
|
||||
"""事件后续处理:
|
||||
|
||||
Args:
|
||||
event (Event): _description_
|
||||
"""
|
||||
from apps.ecm.tasks import event_push
|
||||
params = {}
|
||||
if event.voice_msg: # 如果已经生成通知文本了就不再处理
|
||||
pass
|
||||
else:
|
||||
params = gen_params(event)
|
||||
if params['employee']:
|
||||
event.voice_msg = '位于{}的{},{},请及时处理'.format(params['area'], params['employee'], params['event'])
|
||||
else:
|
||||
event.voice_msg = '在{}下,发生{},请及时处理'.format(params['area'], params['event'])
|
||||
if voice_msg:
|
||||
event.voice_msg = voice_msg
|
||||
event.save()
|
||||
# 喇叭播放(任何情况下)
|
||||
Thread(target=save_voice_and_speak, args=(event,), daemon=True).start()
|
||||
# 事件ws推送
|
||||
event_push.delay(event.id)
|
||||
# 如果还未创建提醒
|
||||
if not event.is_pushed:
|
||||
if not params:
|
||||
params = gen_params(event)
|
||||
Thread(target=create_remind, args=(event, params), daemon=True).start()
|
||||
|
||||
|
||||
|
@ -169,6 +180,7 @@ def create_remind(event: Event, params: dict):
|
|||
"""
|
||||
创建事件提醒并发送短信/微信
|
||||
"""
|
||||
from apps.ecm.tasks import remind_push
|
||||
# 向当事人本人发送通知
|
||||
# if event.employee and event.employee.phone:
|
||||
# t_sms = Thread(target=send_sms, args=(event.employee.phone, '1001', {'code': '5678'}), daemon=True)
|
||||
|
@ -237,6 +249,7 @@ def create_remind(event: Event, params: dict):
|
|||
})
|
||||
# 开始发送通知
|
||||
for i in Remind.objects.filter(event=event):
|
||||
remind_push.delay(i.id)
|
||||
if i.notify_setting.sms_enable and i.recipient.phone:
|
||||
# 发送短信通知
|
||||
Thread(target=send_sms, args=(i.recipient.phone,
|
||||
|
@ -685,3 +698,23 @@ def snap_and_analyse(vchannel: TDevice, algo_codes: list, opl: Opl = None):
|
|||
if event:
|
||||
notify_event(event)
|
||||
|
||||
|
||||
def handle_xx_event_3(name: str, area: Area):
|
||||
cate = EventCate.objects.filter(code=name).first()
|
||||
if cate:
|
||||
# 告警间隔内不触发
|
||||
last_event = Event.objects.filter(cates=cate, area=area, obj_cate='area').order_by('-create_time').first()
|
||||
same_allow_minute = cate.same_allow_minute
|
||||
if same_allow_minute >0 and last_event and last_event.create_time + timedelta(minutes=cate.same_allow_minute) > timezone.now():
|
||||
return
|
||||
event = Event()
|
||||
event.area = area
|
||||
event.obj_cate = 'area'
|
||||
event.happen_time = timezone.now()
|
||||
event.save()
|
||||
Eventdo.objects.get_or_create(cate=cate, event=event, defaults={
|
||||
'cate': cate,
|
||||
'event': event
|
||||
})
|
||||
voice_msg = area.name + '下有' + str(area.count_people) + '人,' + cate.name + ',请及时处理'
|
||||
notify_event(event, voice_msg=voice_msg)
|
Loading…
Reference in New Issue