public void DispatchNext() { Call c = calls.NextToDispatch(); QueueMember m = members.NextAvailable(); //Aca mandar mensaje akka al callhandler con el contacto del miembro para que intente conectarlo //debería recibir un mensaje trying y luego failed o success para poder saber en que anda la llamada //que mandamos a hacer desde acá }
/// <summary> /// Remueve un miembro de la lista /// </summary> /// <param name="member"></param> public void RemoveMember(QueueMember member) { for (int i = members.Count - 1; i >= 0; --i) { if (members[i].Id == member.Id) { this.members.RemoveAt(i); } } }
public QueueMember GetNext() { QueueMember next = null; if (members != null && members.Count > 0) { do { //Implementación muy simple de round robin con memoria next = members[0]; members.RemoveAt(0); members.Add(next); } while (!next.IsPaused); } //Si next es nulo no hay agentes disponibles return(next); }
public QueueMember GetNext(int wrapupTime) { QueueMember next = null; QueueMember last = null; if (members != null && members.Count > 0) { last = members[0]; bool allBusy = false; bool hasOne = false; do { //Implementación muy simple de round robin con memoria next = members[0]; members.RemoveAt(0); members.Add(next); //TODO: poner esta logica dentro del queuemember cosa de solo consultar una propiedad if ((!next.Member.DeviceIsInUse && next.Member.IsAvailable && !next.IsPaused && next.LastCall.AddSeconds((double)wrapupTime) < DateTime.Now)) //!next.Member.IsAvailable || { hasOne = true; next.Member.IsAvailable = false; } if (next == last) //ya recorri todos y etan ocupados { allBusy = true; } } while (!allBusy && !hasOne); if (!hasOne) { next = null; } } //Si next es nulo no hay agentes disponibles return(next); }
public void RemoveQueueMember(QueueMember queueMember) { queueMeberList.RemoveMember(queueMember); }
//Este método agrega un QueueMember a la cola, el queue memeber ya me tiene que llegar con los dato de prioridad y demas cargados //La idea es que una cola solo tenga lo miembros que va a utlizar, esto es para no tener una lista de 1000 miembros para recorrer //y que solo 10 se encuentren logueados en la cola public void AddQueueMember(QueueMember queueMember) { queueMeberList.AddMember(queueMember); }
/// <summary> /// Agrega un miembro a la lista /// </summary> /// <param name="member"></param> public void AddMember(QueueMember member) { this.members.Add(member); }