def deleteUser(request): try: args = request.args Userid = getUserList(request)[args.get('Userid')] if request.args.get('Userid') == None: return encode({"status": "400|missing necessary key Userid"}, 400) url = "http://{host_ip}/permit/enterprise/{enterprise}/user/{Userid}/delete_user".format( host_ip=const.MANAGE_USER_API_IP, enterprise=const.ENTERPRISE, Userid=request.args.get('Userid')) log.info('deleteUser url: ' + url) headers = { "Content-Type": "application/json", "Authorization": "Bearer " + getBearerToken(request) } data = {"id": request.args.get('Userid'), "status": 0} callApi = service_sso.CallApi() response = callApi.post_request(url, headers, data) log.info(response.text) dic_resp = json.loads(response.text) log.info(dic_resp.get('result')) return dic_resp.get('result') except Exception as e: log.error("getRoleList error: " + utils.except_raise(e)) return utils.except_raise(e)
def getUserList(request): try: url = "http://{host_ip}/permit/enterprise/{enterprise}/users".format( host_ip=const.MANAGE_USER_API_IP, enterprise=const.ENTERPRISE) log.info('getUserList: ' + url) headers = { "Content-Type": "application/json", "Authorization": "Bearer " + getBearerToken(request) } # data = {"enterpriseId": const.ENTERPRISE} callApi = service_sso.CallApi() response = callApi.get_request(url, headers) dic_resp = json.loads(response.text) log.debug(str(json.dumps(dic_resp.get('result')))) args = request.args log.info('getUserList with objectType:' + str(args.get('objectType')) + ', Userid:' + str(args.get('Userid'))) if args.get('objectType') == None or args.get('objectType') == u'User': user_map = {} for user in dic_resp.get('result'): user_map[user.get('user_name')] = user.get('id') return user_map if args.get('objectType') == u'UserAuth': result = '' for user in dic_resp.get('result'): if user.get('user_name') == args.get('Userid'): result = user log.debug(str(json.dumps(result))) if result == '': return encode({'ReturnStatus': '403|Userid not exist'}, 403) if result.get('type') == 1: return encode({ 'ReturnStatus': '0|success', 'Role': 'ADMIN' }, 200) elif result.get('type') == 2: role = 'MEMBER' for roleObj in result.get('organization')[0].get( 'products')[1].get('roles').get('items'): if roleObj.get('rolename') == 'CC_BOT_MANAGER': role = 'MANAGER' return encode({'ReturnStatus': '0|success', 'Role': role}, 200) else: return encode({'ReturnStatus': '403|invalid user'}, 403) elif args.get('objectType') == u'RoleAuth': # return encode({'ReturnStatus':0}) + '&' + encode({'Role':'ADMIN'}) + '&' + encode({'Role':'MANAGER'}) + '&' + encode({'Role':'MEMBER'}, 200) resp = Response( response= "ReturnStatus=0|success&Role=MANAGER|MANAGER&Role=MEMBER|MEMBER", status=200, mimetype="text/plain") return resp except Exception as e: log.error("getUserList error: " + utils.except_raise(e)) return utils.except_raise(e)
def hide_user(request, status): try: args = request.args user_uuid = getUserList(request)[args.get('Userid')] log.info('user_uuid:' + user_uuid) url = "http://{host_ip}/permit/enterprise/{enterprise}/user/{user_uuid}/put_status".format( host_ip=const.MANAGE_USER_API_IP, enterprise=const.ENTERPRISE, user_uuid=user_uuid) log.info('disable user url: ' + url) headers = { "Content-Type": "application/json", "Authorization": "Bearer " + getBearerToken(request) } data = {"id": user_uuid, "status": status} callApi = service_sso.CallApi() response = callApi.post_request(url, headers, data) log.info(response.text) dic_resp = json.loads(response.text) if dic_resp.get('status') == 0: return encode({'ReturnStatus': '0|success'}, 200) elif dic_resp.get('status') == -1: return encode({'ReturnStatus': '403|delete user fail'}, 403) else: return encode( { 'ReturnStatus': str(dic_resp.get('status')) + '|' + dic_resp.get('result') }, dic_resp.get('status')) except Exception as e: log.error("delete_user error: " + utils.except_raise(e)) return encode({'ReturnStatus': '500|' + utils.except_raise(e)}, 500)
def post(self): json_from_request = json.loads( Converter('zh-hans').convert( request.stream.read().decode('utf-8'))) user_execute_work = json_from_request['task_info']['bot_execute'] log.info(json.dumps(json_from_request)) app_id = json_from_request['app_id'] log.info('app_id: ' + app_id) work_stats = 0 update_kv_map = {} try: conn = pymysql.Connect(host=const.DB_HOST, user=const.DB_ACCOUNT, passwd=const.DB_PASSWORD, charset='utf8') data = dao.Database(conn).query_bot_work_list(app_id) log.debug(data) if len(data) == 1: work_stats = data[0][1] except Exception as e: log.info("query_bot_work_list occured some error: " + utils.except_raise(e)) finally: conn.close() if work_stats == 0: try: data = {} data['bot_id'] = json_from_request['app_id'] data['work'] = user_execute_work conn = pymysql.Connect(host=const.DB_HOST, user=const.DB_ACCOUNT, passwd=const.DB_PASSWORD, charset='utf8') update_row = dao.Database(conn).insert_work_to_bot_work_list( data) except Exception as e: log.info("insert_work_to_bot_work_list occured some error: " + utils.except_raise(e)) finally: conn.close() log.info(user_execute_work) update_kv_map = { "bot_response": work_num_to_str(int(user_execute_work)) + '派車,成功' } else: update_kv_map = { "bot_response": '正在執行' + work_num_to_str(work_stats) + '任務,請稍後在下命令' } ret = encapsule_rtn_format(update_kv_map, None) return Response(json.dumps(ret), status=200)
def migrate_db_test(): try: conn = pymysql.Connect(host='0.0.0.0',user='******',passwd='password',charset='utf8') dao.Database(conn).executeScriptsFromFile('./migrate/010200001_init.db') except Exception as e: log.info("SQL occured some error: "+utils.except_raise(e)) finally: try: conn.close() except Exception as e: log.info("SQL occured some error: "+utils.except_raise(e))
def valid_update_role(request): try: url = "http://{host_ip}/permit/enterprise/{enterprise}/users".format( host_ip=const.MANAGE_USER_API_IP, enterprise=const.ENTERPRISE) log.info('getUserList: ' + url) headers = { "Content-Type": "application/json", "Authorization": "Bearer " + getBearerToken(request) } # data = {"enterpriseId": const.ENTERPRISE} callApi = service_sso.CallApi() response = callApi.get_request(url, headers) dic_resp = json.loads(response.text) log.debug(str(json.dumps(dic_resp.get('result')))) args = request.args input_role = args.get('Role') result = '' role = '' for user in dic_resp.get('result'): if user.get('user_name') == args.get('Userid'): result = user log.debug(str(json.dumps(result))) if result == '': return False if result.get('type') == 1: role = "ADMIN" elif result.get('type') == 2: role = 'MEMBER' for roleObj in result.get('organization')[0].get( 'products')[1].get('roles').get('items'): if roleObj.get('rolename') == 'CC_BOT_MANAGER': role = 'MANAGER' else: return False log.info('input_role: ' + str(input_role) + ', original_role: ' + str(role)) if input_role == 'ADMIN' and role == 'MANAGER': return False elif input_role == 'ADMIN' and role == 'MEMBER': return False elif input_role == 'MANAGER' and role == 'ADMIN': return False elif input_role == 'MEMBER' and role == 'ADMIN': return False else: return True except Exception as e: log.error("getUserList error: " + utils.except_raise(e)) return utils.except_raise(e)
def get(self): bot_id = request.args.get('bot_id') if bot_id == None: return { 'status': 422, 'message': "Missing required parameters [bot_id]", 'result': {}, }, 422 try: conn = pymysql.Connect(host=const.DB_HOST, user=const.DB_ACCOUNT, passwd=const.DB_PASSWORD, charset='utf8') data = dao.Database(conn).query_bot_work_list(bot_id) log.info(data) if len(data) == 1: return { 'status': 200, 'message': 'success', 'result': { 'bot_id': data[0][0], 'work': data[0][1], 'return_flag': data[0][2], 'return_finish': data[0][3] }, }, 200 else: return { 'status': 204, 'message': "bot_id: " + bot_id + " doesn't exist", 'result': {}, }, 204 except Exception as e: log.info("query_bot_work_list occured some error: " + utils.except_raise(e)) return { 'status': 500, 'message': "[{}] {}".format(e.__class__.__name__, e.args[0]) }, 500 finally: try: conn.close() except Exception as e: log.info("close connection error: " + utils.except_raise(e)) return { 'status': 500, 'message': "[{}] {}".format(e.__class__.__name__, e.args[0]) }, 500
def post(self): try: token = request.cookies.get('access_token') log.info(token) if utils.JWTdecode(token) == False: return redirect("/login", code=302) input_data = json.loads(request.data) log.info(input_data) univerList = dao_university.Database().getUniversity(input_data) if len(univerList) > 0: return { "status": 400, "message": "新增失敗,學校 [ " + input_data.get('u_name') + " ] 已存在" }, 200 result = dao_university.Database().addUniversity(input_data) if result: data = dao_university.Database().getUniversity(None) return {"data": data, "status": 200, "message": "success"}, 200 except Exception as e: log.error("AddUniversity error: " + utils.except_raise(e)) return { "status": 400, "message": "insert error: {}".format(e) }, 200
def post_request(self, url, headers, data): try: if headers.get("Content-Type") == "application/json": log.debug("application/json") data = json.dumps(data) elif headers.get( "Content-Type") == "application/x-www-form-urlencoded": log.debug("application/x-www-form-urlencoded") data = parse.urlencode(data) log.info("call api: " + str(url) + "\nwith data: " + str(json.dumps(data))) log.info("header: " + str(json.dumps(headers))) response = requests.request("POST", url, data=data, headers=headers) if response.status_code != 200: raise Exception('Response status: ' + str(response.status_code) + ', message: ' + response.text) return response except Exception as e: log.error(utils.except_raise(e)) raise Exception(e)
def post(self): try: key='super-secret' payload={"id":"1","email":"*****@*****.**" } token = jwt.encode(payload, key) log.info (token) # decoded = jwt.decode(token, verify=False) decoded = jwt.decode(token, options={"verify_signature": False}) # works in PyJWT >= v2.0 log.info(decoded) log.info(decoded["user"]) except Exception as e: log.error("Recaptcha error: "+utils.except_raise(e)) return 'false' # def secure_filename(filename): # if isinstance(filename, text_type): # from unicodedata import normalize # filename = normalize("NFKD", filename).encode("utf-8", "ignore") # if not PY2: # filename = filename.decode("utf-8") # for sep in os.path.sep, os.path.altsep: # if sep: # filename = filename.replace(sep, " ") # _filename_ascii_add_strip_re = re.compile(r'[^A-Za-z0-9_\u4E00-\u9FBF.-]') # filename = str(_filename_ascii_add_strip_re.sub('', '_'.join(filename.split()))).strip('._') # if ( # os.name == "nt" # and filename # and filename.split(".")[0].upper() in _windows_device_files # ): # filename = "_" + filename # return filename
def transmitToArms(self, dataForRakuten): # dataForRakuten['data'][0]['session_id'] = str(uuid.uuid4()) log.info(dataForRakuten['data'][0]['session_id']) log.debug(json.dumps(dataForRakuten)) # dataForRakuten['data'][0]['session_id'] = str(uuid.uuid4()) # dataForRakuten['data'][0]['asr_result']=[{"session_id":"1eb7c32c-9333-11ea-bbff-119443b68c06","taskengine_session_id":"73007cd1-ef05-41ef-a051-72fa7775c293","user_id":"0919040448","user_q":".","score":100,"std_q":"","log_time":"2020-05-11 10:57:40","emotion":"中性","emotion_score":80,"intent":"","intent_score":0,"module":"task_engine","source":"","answer":"[[520.raw]]","raw_answer":"[{\"type\":\"text\",\"subType\":\"text\",\"value\":\"[[520.raw]]\",\"data\":[]}]","faq_cat_name":"","faq_robot_tag_name":"","feedback":"","custom_feedback":"","feedback_time":"","threshold":0,"tspan":139,"id":"37db5df14ec94190a035ffb5082537fe","is_marked":"false","is_ignored":"false"}] # dataForRakuten['data'][0]['extend_data']=[{"session_id": "1eb7c32c-9333-11ea-1234-119443b68c06","col_name": "同意二次聯繫","value": "-234/234"},{"session_id": "1eb7c32c-9333-11ea-1234-119443b68c06","col_name": "同意二次聯繫","value": "-234/234"}] # new_uuid = str(uuid.uuid4()) # dataForRakuten['data'][0]['session_id'] = new_uuid # for val in dataForRakuten['data'][0]['asr_result']: # val['session_id']=new_uuid # for val in dataForRakuten['data'][0]['customer_info']: # val['session_id']=new_uuid # for val in dataForRakuten['data'][0]['extend_data']: # val['session_id']=new_uuid # log.info(dataForRakuten) try: response = requests.request( "POST", url=const.ARMS_API, data=json.dumps(dataForRakuten), headers={'Content-type': 'application/json'}) except Exception as e: log.error(utils.except_raise(e)) raise Exception(e) return response
def post(self): json_from_request = json.loads( Converter('zh-hans').convert( request.stream.read().decode('utf-8'))) app_id = json_from_request['app_id'] log.info('app_id: ' + app_id) try: conn = pymysql.Connect(host=const.DB_HOST, user=const.DB_ACCOUNT, passwd=const.DB_PASSWORD, charset='utf8') data = dao.Database(conn).query_bot_work_list(app_id) log.info(data) if len(data) == 1: result = { 'bot_id': data[0][0], 'work': data[0][1], 'return_flag': data[0][2], 'return_finish': data[0][3] } log.info(result) update_kv_map = { "bot_response": work_num_to_str(data[0][1]) + return_flag_to_str(data[0][2]) } ret = encapsule_rtn_format(update_kv_map, None) return Response(json.dumps(ret), status=200) except Exception as e: log.info("query_bot_work_list occured some error: " + utils.except_raise(e)) finally: conn.close()
def post(self): log.info(request.data) URIReCaptcha = 'https://www.google.com/recaptcha/api/siteverify' recaptchaResponse = None try: recaptchaResponse = json.loads(request.data).get( 'g-recaptcha-response', None) except Exception as e: log.error("Recaptcha error: " + utils.except_raise(e)) return 'false' if recaptchaResponse == None: return 'false' private_recaptcha = '6LellmQaAAAAAL705D1E8DkgNDHId8P0PFydI-Or' remote_ip = request.remote_addr params = urlencode({ 'secret': private_recaptcha, 'response': recaptchaResponse, 'remote_ip': remote_ip, }) log.info(params) data = urlopen(URIReCaptcha, params.encode('utf-8')).read() result = json.loads(data) log.info(result) success = result.get('success', None) if success == True: log.info('reCaptcha passed') return 'success' else: log.info('recaptcha failed') return 'false'
def testGetChatRecords(): try: callApi = service.CallApi() # s_reponse=callApi.getChatRecords(request).text.encode('utf8') # log.info(s_reponse) return callApi.getChatRecords("1eb7c32c-9333-11ea-bbff-119443b68c06") except Exception as e: log.error("transmitProcess error: " + utils.except_raise(e))
def post(self): try: r = Response(json.dumps({"data": "log out success"}), mimetype='application/json') r.set_cookie('access_token', '', expires=0) return r except Exception as e: log.error("validate JWT error: " + utils.except_raise(e)) return redirect("/login", code=302)
def getRoleList(request): try: url = "http://{host_ip}/permit/roles/{enterprise}".format( host_ip=const.MANAGE_USER_API_IP, enterprise=const.ENTERPRISE) log.info('getWholeRobotId: ' + url) headers = { "Content-Type": "application/json", "Authorization": "Bearer " + getBearerToken(request) } # data = {"enterpriseId": const.ENTERPRISE} callApi = service_sso.CallApi() response = callApi.get_request(url, headers) dic_resp = json.loads(response.text) log.debug(dic_resp.get('result')) return dic_resp.get('result') except Exception as e: log.error("getRoleList error: " + utils.except_raise(e)) return utils.except_raise(e)
def refreshBearToken(request): try: log.info('Refresh BearToken') url = "http://{host_ip}/auth/v3/login".format( host_ip=const.MANAGE_USER_API_IP) headers = {"Content-Type": "application/x-www-form-urlencoded"} data = { "account": "deployer", "passwd": "7e2ba10110f719dd65a0403305770b08" } callApi = service_sso.CallApi() response = callApi.post_request(url, headers, data) dic_resp = json.loads(response.text) token = dic_resp.get('result').get('token') log.debug(token) const.BEARER_TOKEN = token except Exception as e: log.error("refreshBearToken error: " + utils.except_raise(e)) return utils.except_raise(e)
def query_bot_work_list_test(): try: conn = pymysql.Connect(host='0.0.0.0',user='******',passwd='password',charset='utf8') data = dao.Database(conn).query_bot_work_list(None) log.info(len(data)) log.info(data) except Exception as e: log.info("query_bot_work_list occured some error: "+utils.except_raise(e)) finally: conn.close()
def getCallResult(self, pageSize, pageNumber, request): try: data={} if request == None: now = datetime.now() timestamp = datetime.timestamp(now) startTime = datetime.fromtimestamp(timestamp - 3600 * float(const.START_TIME)).strftime("%Y-%m-%d %H:%M:%S") endTime = datetime.fromtimestamp(timestamp - 3600 * float(const.END_TIME)).strftime("%Y-%m-%d %H:%M:%S") # startTime = datetime.strftime(datetime.now() - timedelta(1), '%Y-%m-%d') + ' 00:00:00' # endTime = datetime.strftime(datetime.now(), '%Y-%m-%d') + ' 00:00:00' log.debug("startTime: " + startTime + ", endTime: " + endTime) data = { "start_time": startTime, "end_time": endTime, "call_direction": const.CALL_DIRECTION, "page_size": int(pageSize), "page_number": int(pageNumber) } if str(const.IS_TAG_API_V1)=='true': data['phone_number']='66155400' else: log.debug("inputRequest:"+str(request)) args = request.args # if args.get('page_size') == None : raise Exception("necessary param 'page_size'") data={"call_direction": const.CALL_DIRECTION} data['page_size']=int(pageSize) if args.get('start_time') != None : data['start_time'] = args.get('start_time') if args.get('end_time') != None : data['end_time'] = args.get('end_time') if args.get('call_direction') != None : data['call_direction'] = args.get('call_direction') if args.get('page_number') != None : data['page_number'] = int(args.get('page_number')) if args.get('session_id') != None : data['session_id'] = args.get('session_id') if str(const.IS_TAG_API_V1)=='true': data['phone_number']='66155400' headers = { 'X-Enterprise': const.ENTERPRISE, 'X-UserID': const.USER_ID, 'Content-Type': "application/json", 'Connection': "keep-alive", 'cache-control': "no-cache" } log.info("call api: " + const.GET_TAG_API + "\nwith data: " + str(data)) response = requests.request("POST", const.GET_TAG_API, data=json.dumps(data), headers=headers) if response.status_code != 200: raise Exception('Response status: ' + str(response.status_code) + ', message: ' + response.text) const.CSV_FILE_BEG_TIME=data['start_time'] const.CSV_FILE_END_TIME=data['end_time'] return json.loads(response.text) except Exception as e: log.error(utils.except_raise(e)) raise Exception(e)
def insert_bot_work_list_test(): try: data = {} data['bot_id']='bot_id___' data['work']=1 data['return_flag']=1 data['return_finish']=1 conn = pymysql.Connect(host='0.0.0.0',user='******',passwd='password',charset='utf8') dao.Database(conn).insert_bot_work_list( data ) except Exception as e: log.info("insert_bot_work_list occured some error: "+utils.except_raise(e)) finally: conn.close()
def post(self): try: input_data = json.loads(request.data) log.info(input_data) data = dao_university.Database().delUniversity(input_data) log.info(data) if data: return {"status": 200, "message":"success"}, 200 else: return {"status": 401, "message":"delete fail"}, 401 except Exception as e: log.error("DelUniversity error: "+utils.except_raise(e)) return {"status":400, "message":"delete error: {}".format(e)}, 200
def get_request(self, url, headers): try: log.info("call api: " + url) log.debug("header: " + str(headers)) response = requests.request("GET", url, headers=headers) if response.status_code != 200: raise Exception('Response status: ' + str(response.status_code) + ', message: ' + response.text) return response except Exception as e: log.error(utils.except_raise(e)) raise Exception(e)
def post(self): try: input_data = json.loads(request.data) log.info(input_data) univerList = dao_university.Database().getUniversity(input_data) if len(univerList) > 0: return {"status":400, "message":"新增失敗,學校 [ "+input_data.get('u_name')+" ] 已存在"},200 result = dao_university.Database().addUniversity(input_data) if result: data = dao_university.Database().getUniversity(None) return {"data":data, "status": 200, "message":"success"}, 200 except Exception as e: log.error("AddUniversity error: "+utils.except_raise(e)) return {"status":400, "message":"insert error: {}".format(e)}, 200
def getOrganization(request, Role): try: bf_privilegeSet, bf_rolesList, bf_str_value, cc_privilegeSet, cc_rolesList, cc_roleids = parsingRoleListForAddUserAPI( getRoleList(request), getRobotIdList(request), Role) organization = [{ "value": int(const.ENTERPRISE_SERIAL), "label": "凱基銀行電銷機器人", "type": 1, "products": [{ "productid": 1, "productname": "機器人平台", "privilegeSet": bf_privilegeSet, "rolesList": bf_rolesList, "roleids": [], "value": bf_str_value }, { "productid": 2, "productname": "電話機器人", "privilegeSet": cc_privilegeSet, "rolesList": cc_rolesList, "roleids": cc_roleids, "value": "{\"apps\":{},\"groups\":{}}" }], "orgid": int(const.ENTERPRISE_SERIAL), "orgtype": 1 }] return organization except Exception as e: log.error("transmitProcess error: " + utils.except_raise(e)) return utils.except_raise(e)
def transmitProcessTest(request): try: callApi = service.CallApi() callArmsResponse = callApi.transmitToArmsTest() if callArmsResponse.status_code == 204: log.info('Transmit success') return 'success' else: log.info('Response status: ' + str(callArmsResponse.status_code) + ', message: ' + callArmsResponse.text) return 'fail' log.info('process complete') except Exception as e: log.error("transmitProcess error: " + utils.except_raise(e))
def getChatRecords(self, uuid): url = str(const.API_CHAT_RECORDS) data = {"uuid": [uuid]} try: headers = { 'X-Enterprise': const.ENTERPRISE, 'Content-Type': 'application/json' } log.info("call api: " + url + "\nwith data: " + str(data) + "\nheader: " + str(headers)) response = requests.request("POST", url, data=json.dumps(data), headers=headers) if response.status_code != 200: raise Exception('Response status: ' + str(response.status_code) + ', message: ' + response.text) return json.loads(response.text) except Exception as e: log.error(utils.except_raise(e)) raise Exception(e)
def getTagByCallId(self, callID): url = str(const.API_CALL_RESULT) data={"session_id": callID} try: headers = { 'X-Enterprise': const.ENTERPRISE, 'Content-Type': 'application/json' } log.info("call api: " + url + "\nwith data: " + str(data)) response = requests.request("POST", url, data=json.dumps(data), headers=headers) if response.status_code != 200: raise Exception('Response status: ' + str(response.status_code) + ', message: ' + response.text) return json.loads(response.text) except Exception as e: log.error(utils.except_raise(e)) raise Exception(e)
def post(self): try: data = {} if request.data : input_data = json.loads(request.data) if input_data.get("u_id"): log.info(input_data) data = dao_university.Database().getUniversity(input_data) else: data = dao_university.Database().getUniversity(None) log.info(data) # return {"data":data},200 return {"data":data, "status": 200, "message":"success"}, 200 except Exception as e: log.error("GetUniversity error: "+utils.except_raise(e)) return {"status":400, "message":"get data error: {}".format(e)}, 200
def post(self): try: input_data = json.loads(request.data) log.info(input_data) univerList = dao_university.Database().getUniversity(input_data) if len(univerList) < 1: return {"status":400, "message":"更新失敗,學校 [ "+input_data.get('u_name')+" ] 不存在"},200 result = dao_university.Database().editUniversity(input_data) log.info('edit result:' + str(result)) if result: data = dao_university.Database().getUniversity(input_data) log.info(data) return {"data":data, "status": 200, "message":"success"}, 200 except Exception as e: log.error("EditUniversity error: "+utils.except_raise(e)) return {"status":400, "message":"edit error: {}".format(e)}, 200
def transmitToArmsTest(self): dataForRakutenTest={"data":[{"session_id":"1eb7c32c-9333-11ea-6634-119443b68c06","call_direction":"outbound","caller":"07010110688","callee":"0919040448","status":1,"calls_number":1,"talk_start_time":"2020-05-11 10:57:24","ring_duration":5,"talk_duration":18,"asr_result":[{"session_id":"1eb7c32c-9333-11ea-6634-119443b68c06","taskengine_session_id":"73007cd1-ef05-41ef-a051-72fa7775c293","user_id":"0919040448","user_q":".","score":100,"std_q":"","log_time":"2020-05-11 10:57:40","emotion":"中性","emotion_score":80,"intent":"","intent_score":0,"module":"task_engine","source":"","answer":"[[520.raw]]","raw_answer":"[{\"type\":\"text\",\"subType\":\"text\",\"value\":\"[[520.raw]]\",\"data\":[]}]","faq_cat_name":"","faq_robot_tag_name":"","feedback":"","custom_feedback":"","feedback_time":"","threshold":0,"tspan":139,"id":"37db5df14ec94190a035ffb5082537fe","is_marked":"false","is_ignored":"false"},{"session_id":"1eb7c32c-9333-11ea-6634-119443b68c06","taskengine_session_id":"73007cd1-ef05-41ef-a051-72fa7775c293","user_id":"0919040448","user_q":"M0","score":100,"std_q":"","log_time":"2020-05-11 10:57:24","emotion":"中性","emotion_score":80,"intent":"","intent_score":0,"module":"task_engine","source":"","answer":"[[520.raw]]testtest您好,這裏是樂天銀行信用卡,您本期信用卡帳單已過期限,請於今日立即繳納年月帳款,以避免有違約金,及利息產生,如您已繳納,請無需理會。","raw_answer":"[{\"type\":\"text\",\"subType\":\"text\",\"value\":\"[[520.raw]]testtest您好,這裏是樂天銀行信用卡,您本期信用卡帳單已過期限,請於今日立即繳納年月帳款,以避免有違約金,及利息產生,如您已繳納,請無需理會。\",\"data\":[]}]","faq_cat_name":"","faq_robot_tag_name":"","feedback":"","custom_feedback":"","feedback_time":"","threshold":0,"tspan":133,"id":"bd211408c29b446e96e0591bb145934e","is_marked":"false","is_ignored":"false"}],"extend_data":[{"session_id":"1eb7c32c-9333-11ea-6634-119443b68c06","col_name":"同意二次聯繫","value":"無"},{"session_id":"1eb7c32c-9333-11ea-6634-119443b68c06","col_name":" 客戶已繳款","value":"有表示"},{"session_id":"1eb7c32c-9333-11ea-6634-119443b68c06","col_name":" 客戶本人接聽","value":"yes"}],"customer_info":[{"session_id":"1eb7c32c-9333-11ea-6634-119443b68c06","col_name":"01.帳單月份","value":"test"},{"session_id":"1eb7c32c-9333-11ea-6634-119443b68c06","col_name":"02.名字","value":"test"},{"session_id":"1eb7c32c-9333-11ea-6634-119443b68c06","col_name":"03.身分證號","value":"test"}]}],"total_size":1} new_uuid = str(uuid.uuid4()) dataForRakutenTest['data'][0]['session_id'] = new_uuid for val in dataForRakutenTest['data'][0]['asr_result']: val['session_id']=new_uuid for val in dataForRakutenTest['data'][0]['customer_info']: val['session_id']=new_uuid for val in dataForRakutenTest['data'][0]['extend_data']: val['session_id']=new_uuid log.info(dataForRakutenTest) log.info(dataForRakutenTest['data'][0]['session_id']) try: response = requests.request("POST", url=const.ARMS_API, data=json.dumps(dataForRakutenTest), headers={'Content-type': 'application/json'}) except Exception as e: log.error(utils.except_raise(e)) raise Exception(e) return response