コード例 #1
0
        public Queue CreateQueue(Queue queue)
        {
            var settings = _accountSettings.GetVoiceSettings();
            var twilioClient = new TwilioRestClient(settings.AccountSid, settings.AuthToken);
            var twilioQueue = twilioClient.CreateQueue(queue.Name, queue.MaxSize ?? 0);

            if (twilioQueue.RestException != null)
            {
                _logger.Error($"Exception thrown trying to create queue in QueueProvider - {twilioQueue.RestException}");
                return null;
            }

            if (twilioQueue.Sid == null)
            {
                return null;
            }

            return new Queue
            {
                Sid = twilioQueue.Sid,
                Name = twilioQueue.FriendlyName,
                Size = twilioQueue.CurrentSize,
                MaxSize = twilioQueue.MaxSize,
                AverageWaitTime = twilioQueue.AverageWaitTime
            };
        }
コード例 #2
0
        public Queue BuildQueueFromEndPoint(EndPoint endPoint)
        {
            var name = endPoint.EndPointType + "_" + endPoint.EndpointId;

            var queue = new Queue
            {
                Name = name,
                MaxSize = 50
            };

            return queue;
        }
コード例 #3
0
 public Queue DecreaseBySid(string sid)
 {
     var queue = new Queue();
     using (var db = _dbFactory.GetDatabase())
     {
         try
         {
             queue = db.Query(new DecreaseQueueBySid(sid));
         }
         catch (Exception ex)
         {
             _logger.Error(string.Format("Error increasing queue size of queue {0} - {1}", sid, ex));
         }
     }
     return queue;
 }
コード例 #4
0
        public string GetAbandonCallsForDay(Queue queue)
        {
            using (var db = _dbFactory.GetDatabase())
            {
                try
                {
                    return db.Query(new GetCallsByQueueDayStatus(queue.Id.ToString(), (int)CallStatus.Abandoned)).Count().ToString();
                    //get all calls assign to particular queue abandoned today
                }
                catch (Exception ex)
                {
                    _logger.Error($"Exception thrown getting calls from db - {ex}");
                }

                return "";
            }
        }
コード例 #5
0
        public int Create(Queue queue)
        {
            int queueId = 0;
            using (var db = _dbFactory.GetDatabase())
            {
                try
                {
                    queueId  = db.Query(new CreateQueue(queue));
                }
                catch (Exception ex)
                {
                    _logger.Error($"Error creating queue {queue.Name}, {queue.Id} in db - {ex}");
                }
            }

            return queueId;
        }
コード例 #6
0
        public Queue GetQueueStatsForTeam(string teamId)
        {
            var queue = new Queue();
            try
            {
                queue = _queueProvider.GetQueue(queue.Sid);
                if (string.IsNullOrEmpty(queue.Sid))
                    return null;
                queue.AbandonRate = _queueService.GetQueueAbandonRateForDay(queue.Sid);
            }
            catch (Exception ex)
            {
                _logger.Error($"Exception thrown getting data for queue {queue.Sid} from twilio - {ex}");
            }

            return queue;
        }
コード例 #7
0
 public Queue IncreaseById(int id)
 {
     var queue = new Queue();
     using (var db = _dbFactory.GetDatabase())
     {
         try
         {
             queue = db.Query(new IncreaseQueueById(id));
         }
         catch (Exception ex)
         {
             _logger.Error(string.Format("Error incrementing queue {0} - {1}", id, ex));
         }
     }
     return queue;
 }
コード例 #8
0
 public Queue GetByTeamId(int teamId)
 {
     var queue = new Queue();
     using (var db = _dbFactory.GetDatabase())
     {
         try
         {
             queue = db.Query(new GetQueueForTeamByTeamId(teamId));
         }
         catch (Exception ex)
         {
             _logger.Error($"Error occured getting queue by team id {teamId} - {ex}");
         }
     }
     return queue;
 }
コード例 #9
0
 public Queue GetBySid(string queueSid)
 {
     var queue = new Queue();
     using (var db = _dbFactory.GetDatabase())
     {
         try
         {
             queue = db.Query(new GetQueueBySid(queueSid));
         }
         catch (Exception ex)
         {
             _logger.Error($"Exception thrown getting queue by sid {queueSid}. Ex - {ex}");
         }
     }
     return queue;
 }
コード例 #10
0
        public Call GetFirstCallFromQueue(Queue queue)
        {
            var settings = _accountSettings.GetVoiceSettings();
            var twilioClient = new TwilioRestClient(settings.AccountSid, settings.AuthToken);
            var result = twilioClient.GetFirstQueueMember(queue.Sid);

            return new Call
            {
                Sid = result.CallSid,
                WaitTime = result.WaitTime,
                DateEnqueued = result.DateEnqueued,
                Position = result.Position
            };
        }
コード例 #11
0
 public Queue GetByEndPoint(EndPoint endPoint)
 {
     var queue = new Queue();
     using (var db = _dbFactory.GetDatabase())
     {
         try
         {
             switch (endPoint.EndPointType)
             {
                 case EndPointType.Agent:
                     queue =  db.Query(new GetQueueForAgentByAgentId(endPoint.EndpointId));
                     break;
                 case EndPointType.Team:
                     queue = db.Query(new GetQueueForTeamByTeamId(endPoint.EndpointId));
                     break;
                 case EndPointType.Department:
                     queue = db.Query(new GetQueueForDepartmentByDepartmentId(endPoint));
                     break;
                 case EndPointType.Company:
                     queue = db.Query(new GetQueueForCompanyByCompanyId(endPoint));
                     break;
                 default:
                     return db.Query(new GetQueueForCompanyByCompanyId(endPoint));
             }
         }
         catch (Exception ex)
         {
             _logger.Error($"Exception thrown in QueueRepository - {ex}");
         }
     }
     return queue;
 }
コード例 #12
0
 public Queue GetByCompanyId(EndPoint endPoint)
 {
     var queue = new Queue();
     using (var db = _dbFactory.GetDatabase())
     {
         try
         {
             queue = db.Query(new GetQueueForCompanyByCompanyId(endPoint));
         }
         catch (Exception ex)
         {
             _logger.Error("ANOTHER ERROR!!");
         }
     }
     return queue;
 }
コード例 #13
0
        public Queue GetByAgentId(int agentId)
        {
            var queue = new Queue();
            using (var db = _dbFactory.GetDatabase())
            {
                try
                {
                    queue = db.Query(new GetQueueForAgentByAgentId(agentId));
                }
                catch (Exception ex)
                {
                    _logger.Error("AN ERROR!!!");
                }
            }

            return queue;
        }
コード例 #14
0
        public bool DeleteQueue(Queue queue)
        {
            var settings = _accountSettings.GetVoiceSettings();
            var twilioClient = new TwilioRestClient(settings.AccountSid, settings.AuthToken);
            var result = twilioClient.DeleteQueue(queue.Sid);

            return result == DeleteStatus.Success;
        }
コード例 #15
0
 public Queue GetByName(string name)
 {
     var queue = new Queue();
     using (var db = _dbFactory.GetDatabase())
     {
         try
         {
             queue = db.Query(new GetQueueByName(name));
         }
         catch (Exception ex)
         {
             _logger.Error($"Exception thrown getting queue with name {name}.  Exception - {ex}");
         }
     }
     return queue;
 }
コード例 #16
0
 public AgentQueueRouteBuilder(Agent agent, Queue queue, string url)
 {
     _agent = agent;
     _queue = queue;
     _url = url;
 }
コード例 #17
0
        public bool DequeueFirstCallFromQueue(Queue queue, IRouteBuilder route)
        {
            var settings = _accountSettings.GetVoiceSettings();
            var twilioClient = new TwilioRestClient(settings.AccountSid, settings.AuthToken);
            var result = twilioClient.DequeueFirstQueueMember(queue.Sid, route.Url, route.Method);

            return result == DequeueStatus.Success;
        }