def handle(request): ''' expone la interfaz como parte servidora para gestionar las peticiones handelCallEvent''' log.debug("handle") #Check that is a POST request status_code, json_data =check_request_type(request,'views.tags','POST') if(status_code == 200): nes_manager = NESManager() status_code, result = nes_manager.handle(request) #transform to json string json_data = CustomEncoder().encode(result) log.debug('json_data: '+ json_data) #json_data = '{"action": {"announcementId": "3", "callingPartyAddress":{"phoneNumber": "0034600222200"}, "defaultErrorHandling": true, "legId":"1", "actionToPerform": "OnHold"}, "callSessionIdentifier":"129916513689383"}' response = HttpResponse(json_data,mimetype="application/json",status = status_code) return response
def control_messages(request): '''vista para enviar el mensaje a la url de Jajah''' log.debug("control_messages") try: request_message = get_post_values(request,'message', "") log.debug('message' + request_message) manager = NESManager() manager.send_text_message(request_message) mimetype = 'text/plain' return HttpResponse("", mimetype) except NESException as inst: jsonException = CustomEncoder().encode(JSONException(inst)) log.debug(jsonException) return HttpResponse(content=jsonException, mimetype=mimetype, status=inst.code) except Exception as e: log.debug(e.value) return HttpResponse(content=e.value, mimetype=mimetype)
def delete_subscription(real_number, log_number): ''' controla el borrado de las suscripciones - recupera los correladores - borra las entradas de la tabla ActiveSuscriptions - borra la suscripcion del NES ''' log.debug('delete_susbcription') #recuperamos los correladores de la BD para el real_number y el log_number active_subscription = ActiveSubscription.objects.get(phone_number=real_number) active_subscription.delete() log.debug( active_subscription ) correlators_list = active_subscription.subscriptionId active_subscription = ActiveSubscription.objects.get(phone_number=log_number) active_subscription.delete() log.debug( active_subscription ) correlators_list += ','+active_subscription.subscriptionId log.debug( 'correlator_list: '+correlators_list) manager = NESManager() manager.delete_subscription(correlators_list)
def create_subscription(real_number, log_number): ''' crea las suscripciones necesarias para el phone roaming: - Both: para el numero real - Terminante: para el numero logueado - Crea las entradas en la tabla ActiveSubscriptions ''' log.debug('create_subscription') try: #suscripcion en originante y terminante para el numero real endpoint = "http://212.179.159.77/nesphase2" reference = ReferenceType(endpoint) interface = "ParlayX" reference.endpoint = endpoint reference.interfaceName = interface criteriaList = [] criteria = CallEventsType() criteriaList.append(criteria.CalledNumber); monitoredParty = UserIdType() #phoneNumber monitoredParty.phoneNumber = real_number startCallNotificationRequest = StartCallNotificationRequest(reference, monitoredParty) startCallNotificationRequest.criteria = criteriaList startCallNotificationRequest.addressDirection = "Both" startCallNotificationRequest.directionMode = True subscription = StartCallNotification(startCallNotificationRequest) manager = NESManager() correlator = manager.save_subscription(subscription) # guardar el correlator en la BD active_subscription = ActiveSubscription(phone_number = subscription.startCallNotification.monitoredParty.phoneNumber, urlcallback = subscription.startCallNotification.reference.endpoint, subscriptionId = correlator, direction = subscription.startCallNotification.addressDirection) active_subscription.save(); criteriaList = [] criteria = CallEventsType() criteriaList.append(criteria.CalledNumber); monitoredParty = UserIdType() #phoneNumber monitoredParty.phoneNumber = log_number startCallNotificationRequest = StartCallNotificationRequest(reference, monitoredParty) startCallNotificationRequest.criteria = criteriaList startCallNotificationRequest.addressDirection = "Called" startCallNotificationRequest.directionMode = True subscription = StartCallNotification(startCallNotificationRequest) correlator = manager.save_subscription(subscription) # guardar el correlator en la BD active_subscription = ActiveSubscription(phone_number = subscription.startCallNotification.monitoredParty.phoneNumber, urlcallback = subscription.startCallNotification.reference.endpoint, subscriptionId = correlator, direction = subscription.startCallNotification.addressDirection) active_subscription.save(); except NESException as inst: print inst.message raise inst except Exception as inst: print inst.message raise inst