123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- # from browserUtil import browserUtil
- import json
- import webbrowser
- from WebSocketServer import WebSocketServer
- class BusinessHadler:
- def __init__(self):
- print('__init__ socket')
- self.websocket_server = WebSocketServer()
- self.websocket_server.start()
- def send_message_to_clients(self, message):
- self.websocket_server.sendToAllClients(message)
- def cleanup(self):
- print('cleanup')
- self.websocket_server.stop()
- def handler(self, intent_action, intent_solts):
- # 遍历词槽,提取并转换关键信息
- solts = {}
- for item in intent_solts:
- if item["name"] == "xs_date" or item["name"] == "plan_month" or item["name"] == "time" or item[
- "name"] == "start_time":
- timedata = json.loads(item["normValue"])
- solts[item["name"]] = timedata["datetime"]
- else:
- solts[item["name"]] = item["normValue"]
- print("解析后的intent_solts: ", solts)
- tts_text = ""
- # 打开系统网页
- if intent_action == "open_system":
- # 使用webbrowser.open,会阻塞程序,导致AIUI发送2次NLP回调,打开2次浏览器页面,需要在调用前断开信号
- webbrowser.open('http://101.37.148.192:8080?socket=1')
- # 使用以下方式打开,也可以避免打开2次web页面问题
- # import os
- # os.system('start http://101.37.148.192:8080/')
- # 返回主页面
- elif intent_action == "main_page":
- message = '{"pageName":"map","type":"page_change"}'
- self.send_message_to_clients(message)
- # 查看系统模块
- elif intent_action == "open_modules":
- print(solts)
- if solts['charts'] == "今日线下门户流量":
- pageName = "offline"
- elif solts['charts'] == "平均用户类别排布":
- pageName = "userIdentityCategory"
- elif solts['charts'] == "用户数据状态":
- pageName = "userSitua"
- elif solts['charts'] == "关联数据类别分布":
- pageName = "browseCategories"
- elif solts['charts'] == "今日流量态势":
- pageName = "trafficSitua"
- message = '{"pageName":"' + pageName + '","type":"page_change"}'
- print(message)
- self.send_message_to_clients(message)
- # 查询在线/离线用户数
- elif intent_action == "query_online_user":
- message = '{"type":"user_query","userDialog":{"date":"' + solts['time'] + '","status":"' + solts[
- 'onlineState'] + '","number":"87"}}'
- print(message)
- self.send_message_to_clients(message)
- # 查询今日服务次数,并播报
- elif intent_action == "query_server_times":
- tts_text = '今日服务次数53461次 服务质量90%'
- else:
- print("无效意图")
- tts_text = "我没有理解您的话"
- print('handler end')
- return tts_text
- def handler_dipai(self, intent_action, intent_solts):
- solts = intent_solts[0]
- print("解析后的intent_solts: ", solts)
- tts_text = ""
- # 打开系统网页
- if intent_action == "open_system":
- # 使用webbrowser.open,会阻塞程序,导致AIUI发送2次NLP回调,打开2次浏览器页面,需要在调用前断开信号
- webbrowser.open('http://101.37.148.192:8080?socket=1')
- # 使用以下方式打开,也可以避免打开2次web页面问题
- # import os
- # os.system('start http://101.37.148.192:8080/')
- # 返回主页面
- elif intent_action == "main_page":
- message = '{"pageName":"map","type":"page_change"}'
- self.send_message_to_clients(message)
- # 查看系统模块
- elif intent_action == "open_modules":
- print(solts)
- if solts['slot_value'] == "今日线下门户流量":
- pageName = "offline"
- elif solts['slot_value'] == "平均用户类别排布":
- pageName = "userIdentityCategory"
- elif solts['slot_value'] == "用户数据状态":
- pageName = "userSitua"
- elif solts['slot_value'] == "关联数据类别分布":
- pageName = "browseCategories"
- elif solts['slot_value'] == "今日流量态势":
- pageName = "trafficSitua"
- elif solts['slot_value'] == "主界面":
- pageName = "map"
- message = '{"pageName":"' + pageName + '","type":"page_change"}'
- print(message)
- self.send_message_to_clients(message)
- # 查询在线/离线用户数
- elif intent_action == "query_online_user":
- message = '{"type":"user_query","userDialog":{"date":"' + solts['time'] + '","status":"' + solts[
- 'onlineState'] + '","number":"87"}}'
- print(message)
- self.send_message_to_clients(message)
- # 查询今日服务次数,并播报
- elif intent_action == "query_server_times":
- tts_text = '今日服务次数53461次 服务质量90%'
- else:
- print("无效意图")
- tts_text = "我没有理解您的话"
- print('handler end')
- return tts_text
- def handler_grpc(self, intent_action, intent_solts):
- # 遍历词槽,提取并转换关键信息
- solts = intent_solts
- tts_text = ""
- # 打开系统网页
- if intent_action == "open_web":
- # 使用webbrowser.open,会阻塞程序,导致AIUI发送2次NLP回调,打开2次浏览器页面,需要在调用前断开信号
- webbrowser.open('http://101.37.148.192:8080?socket=1')
- # 使用以下方式打开,也可以避免打开2次web页面问题
- # import os
- # os.system('start http://101.37.148.192:8080/')
- # 返回主页面
- elif intent_action == "main_page":
- message = '{"pageName":"map","type":"page_change"}'
- self.send_message_to_clients(message)
- # 查看系统模块
- elif intent_action == "open_modules":
- print(solts)
- if solts['charts'] == "今日线下门户流量":
- pageName = "offline"
- elif solts['charts'] == "平均用户类别排布":
- pageName = "userIdentityCategory"
- elif solts['charts'] == "用户数据状态":
- pageName = "userSitua"
- elif solts['charts'] == "关联数据类别分布":
- pageName = "browseCategories"
- elif solts['charts'] == "今日流量态势":
- pageName = "trafficSitua"
- message = '{"pageName":"' + pageName + '","type":"page_change"}'
- print(message)
- self.send_message_to_clients(message)
- # 查询在线/离线用户数
- elif intent_action == "query_online_user":
- message = '{"type":"user_query","userDialog":{"date":"' + solts['time'] + '","status":"' + solts[
- 'onlineState'] + '","number":"87"}}'
- print(message)
- self.send_message_to_clients(message)
- # 查询今日服务次数,并播报
- elif intent_action == "query_server_times":
- tts_text = '今日服务次数53461次 服务质量90%'
- else:
- print("无效意图")
- tts_text = "我没有理解您的话"
- print('handler end')
- return tts_text
- def handler_dipai(self, intent_action, intent_solts):
- solts = intent_solts[0]
- print("解析后的intent_solts: ", solts)
- tts_text = ""
- # 打开系统网页
- if intent_action == "open_system":
- # 使用webbrowser.open,会阻塞程序,导致AIUI发送2次NLP回调,打开2次浏览器页面,需要在调用前断开信号
- webbrowser.open('http://101.37.148.192:8080?socket=1')
- # 使用以下方式打开,也可以避免打开2次web页面问题
- # import os
- # os.system('start http://101.37.148.192:8080/')
- # 返回主页面
- elif intent_action == "main_page":
- message = '{"pageName":"map","type":"page_change"}'
- self.send_message_to_clients(message)
- # 查看系统模块
- elif intent_action == "open_modules":
- print(solts)
- if solts['slot_value'] == "今日线下门户流量":
- pageName = "offline"
- elif solts['slot_value'] == "平均用户类别排布":
- pageName = "userIdentityCategory"
- elif solts['slot_value'] == "用户数据状态":
- pageName = "userSitua"
- elif solts['slot_value'] == "关联数据类别分布":
- pageName = "browseCategories"
- elif solts['slot_value'] == "今日流量态势":
- pageName = "trafficSitua"
- elif solts['slot_value'] == "主界面":
- pageName = "map"
- message = '{"pageName":"' + pageName + '","type":"page_change"}'
- print(message)
- self.send_message_to_clients(message)
- # 查询在线/离线用户数
- elif intent_action == "query_online_user":
- message = '{"type":"user_query","userDialog":{"date":"' + solts['time'] + '","status":"' + solts[
- 'onlineState'] + '","number":"87"}}'
- print(message)
- self.send_message_to_clients(message)
- # 查询今日服务次数,并播报
- elif intent_action == "query_server_times":
- tts_text = '今日服务次数53461次 服务质量90%'
- else:
- print("无效意图")
- tts_text = "我没有理解您的话"
- print('handler end')
- return tts_text
|