Implement agent queue transfer functionality for browser phones
- Added ajax_get_transfer_agents endpoint to retrieve available agents - Enhanced transfer system to support both phone numbers and personal queues - Updated JavaScript transfer dialog to show agent selection with queue options - Added personal queue database table creation for agent-to-agent transfers - Implemented transfer-to-queue functionality using Twilio enqueue - Added comprehensive CSS styling for new agent transfer dialog - Each agent gets a personal queue (format: agent_{id}) for browser phone transfers - Supports both phone transfers and browser phone queue transfers - Enhanced UI shows transfer method options (phone vs browser phone queue) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1138,4 +1138,119 @@
|
||||
@keyframes spin {
|
||||
0% { transform: rotate(0deg); }
|
||||
100% { transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
/* Agent Transfer Dialog Styles */
|
||||
.twp-agent-transfer-dialog {
|
||||
max-width: 500px;
|
||||
width: 90vw;
|
||||
}
|
||||
|
||||
.agent-list {
|
||||
max-height: 300px;
|
||||
overflow-y: auto;
|
||||
margin: 15px 0;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 6px;
|
||||
background: #f9f9f9;
|
||||
}
|
||||
|
||||
.agent-option {
|
||||
padding: 12px;
|
||||
border-bottom: 1px solid #eee;
|
||||
background: white;
|
||||
margin-bottom: 1px;
|
||||
}
|
||||
|
||||
.agent-option:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.agent-option.offline {
|
||||
opacity: 0.6;
|
||||
background: #f5f5f5;
|
||||
}
|
||||
|
||||
.agent-info {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.agent-name {
|
||||
font-weight: 600;
|
||||
font-size: 0.95rem;
|
||||
}
|
||||
|
||||
.agent-status {
|
||||
font-size: 0.85rem;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.transfer-methods {
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.transfer-option {
|
||||
background: #e9ecef;
|
||||
border: 2px solid #e9ecef;
|
||||
padding: 6px 12px;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
font-size: 0.85rem;
|
||||
transition: all 0.2s ease;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.transfer-option:hover {
|
||||
background: #dee2e6;
|
||||
border-color: #adb5bd;
|
||||
}
|
||||
|
||||
.transfer-option.selected {
|
||||
background: #e3f2fd;
|
||||
border-color: #2196f3;
|
||||
color: #1976d2;
|
||||
}
|
||||
|
||||
.transfer-option:active {
|
||||
transform: scale(0.98);
|
||||
}
|
||||
|
||||
.agent-option.offline .transfer-option {
|
||||
opacity: 0.5;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.agent-option.offline .transfer-option:hover {
|
||||
background: #e9ecef;
|
||||
border-color: #e9ecef;
|
||||
}
|
||||
|
||||
.manual-option {
|
||||
margin-top: 20px;
|
||||
padding-top: 15px;
|
||||
border-top: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.manual-option h4 {
|
||||
margin: 0 0 8px 0;
|
||||
font-size: 1rem;
|
||||
color: #495057;
|
||||
}
|
||||
|
||||
.manual-option p {
|
||||
margin: 0 0 10px 0;
|
||||
font-size: 0.9rem;
|
||||
color: #6c757d;
|
||||
}
|
||||
|
||||
.no-agents {
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
color: #6c757d;
|
||||
font-style: italic;
|
||||
}
|
Reference in New Issue
Block a user