Resolve TypeScript build error in LeadManager component
- Fixed Chip icon prop type error by changing ReactNode to ReactElement - Removed unused imports and props - Fixed useMemo dependency warning by wrapping IdRend...
Update leads page with LeadManager component matching doc manager layout
- Created LeadManager component similar to DocManager with lead-specific fields - Updated /leads/page.tsx to match doc manager layout with gradient header - Add...
Auto-scroll chat to bottom on load and new messages
Track previous message count and scroll smoothly when new messages arrive; scroll immediately on initial load or when un-minimizing
Frontend WebSocket persistence - match backend timing and faster reconnect
Heartbeat: 4s -> 20s to match backend, reconnect delay: 5s -> 1s, add 30s connection timeout
Unified header design spanning both chat and softphone panels
REMOVED: Status bar from softphone (wifi, signal, time - unnecessary for web app) SHARED HEADER: Title bar now spans both softphone and chat when expanded LAY...
Optimize softphone to fit all content without scrolling at 680px height
CHATBOX HEIGHT: 550px -> 680px (optimal balance) PHONE DISPLAY: Reduced minHeight (100/75 -> 85/65), padding (14/16 -> 12/14) CALL CONTROLS: All 9 buttons - p...
Reduce ChatBox height to more comfortable 550px
Changed from 85% viewport (750-850px) to fixed 550px for better UX WebRTC call controls remain fully intact and functional
Add premium enterprise features - Analytics, CRM, AI Assistant, Advanced
ANALYTICS DASHBOARD - Real-time call metrics with interactive charts CRM INTEGRATION - Customer data, lifetime value, activity tracking AI ASSISTANT - Sentime...
Implement 100% enterprise VoIP desk phone features
Complete implementation of 100+ features matching Cisco 8800, Polycom VVX 600, Yealink T58A 7 Tabs: Dialpad, Speed Dial/BLF, History, Voicemail, Contacts, Queu...
Make softphone fully visible without scrolling - comprehensive compact layout
CHATBOX HEIGHT: - Changed from fixed 600px to 85% of viewport height - Uses Math.floor(window.innerHeight * 0.85) for responsive sizing - Provides much more ver...
Eliminate horizontal scrollbars and increase softphone visibility
LAYOUT FIXES: - Increase DOCKED_HEIGHT from 480px to 600px for better vertical space - Add explicit width constraints (minWidth, maxWidth) to SoftphonePanel roo...
Elevate softphone to enterprise-grade with premium features
ENTERPRISE FEATURES: - Call Recording with visual indicator and pulsing animation - Call Transfer functionality for seamless handoffs - Call Notes with expandab...
Add expandable softphone panel to ChatBox
- Add PhoneInTalk icon button to ChatBox header for softphone toggle - Create comprehensive SoftphonePanel component with full UI - Implement dialpad with 0-9, ...
Remove connected check and add debug logging for STOMP activation
STOMP client was not activating because connected check was preventing it. Added debug logs to diagnose.
Activate STOMP client only after SockJS opens
Critical bug fix: STOMP client was being activated before SockJS opened, causing immediate disconnect. Now waits for SockJS onopen event before activating STOMP...
Включите резервный транспорт SockJS для подключения к WebSocket
Позволяйте xhr-стриминг и xhr-поллинг в качестве запасного варианта, если обновление WebSocket не удается.
Enhance ChatBox with dynamic color system and increased height
- Increase message viewing area by 33% (DOCKED_HEIGHT: 360 -> 480) - Create ChatBoxStyles.tsx with dynamic CSS variable-based color system - Apply primary color...
Модернизация дизайна ChatBox с профессиональным полем
- Реализуйте чистый белый фон с тонкими серыми градиентами Добавьте пользовательский стиль прокрутки, интегрированный с основной цветовой схемой - Усилить пузыр...
Удаление недействительной «активной» проверки собственности в использовании
Тип клиента от @stomp/stompjs не имеет «активного» свойства. Удален недействительный чек, так как клиент.activate() вызывается сразу после создания клиента.
Дождитесь открытия SockJS перед активацией STOMP-клиента
Исправьте условие гонки, при котором клиент STOMP активировался до того, как соединение SockJS было готово. - Переместить client.activate() в SockJS onopen call...
Маршрут ALL WebRTC API для порта 8443
Обновлены все маршруты WebRTC API для использования мультимедиа.{domain}:8443 Больше не использовать Traefik для конечных точек WebRTC - Соответствует медиа API...
Маршрут ALL MediaService запрашивает порт 8443 (обход Траефика)
Обновлены все мультимедийные API-маршруты для использования мультимедиа.{domain}:8443 Больше не использовать Traefik для MediaService API и WebSocket идут прямо...
Подключение к порту 8443 (внешнему), который ведет в NodePort 30843
- Маршрутизатор перенаправляет внешний 8443 на k1m1 NodePort 30843 - Браузер использует media.kamocrm.com:8443 Внутренний NodePort составляет 30843 (действитель...
Подключение к порту MediaService 8443 для WebSocket
Обновленное подключение WebSocket для использования media.kamocrm.com:8443 Обход Traefik для трафика только для WebSocket Использование прямого соединения HTTPS...
Удалить ограничение на транспортировку только через WebSocket для совместимости HTTP/2
Браузер WebSocket API не поддерживает HTTP/2 (RFC 8441 не реализован) Родной WebSocket требует HTTP/1.1 Обновление, которое не работает по HTTP/2 Пусть SockJS а...
Используйте только транспорт WebSocket (отключение XHR-опроса)
- Измененный транспорт SockJS из [websocket, xhr-streaming, xhr-polling] в [websocket] - Удалить обратную связь с опросом XHR Поддерживает чистое соединение Web...
Подключите WebSocket напрямую к media.kamocrm.com
- Возвращается к оригинальному подходу: подключайтесь к медиа.* - Удаление ненужной однородной сложности - Удаленный /ws обход от промежуточного программного об...
Удалить явную ссылку на пространство имен из сервиса kamowsmedia
Обе услуги находятся в одном пространстве имен (камо). - Явная ссылка на пространство имен не требуется Избегать потенциальных проблем кросс-имяпространства
Удалить /ws переписать из следующего. Config (обрабатывается Traefik)
Next.js переписывает для /ws путей Маршрутизация WebSocket теперь обрабатывается на уровне Traefik IngressRoute - Traefik routes internal.kamocrm.com/ws -> Меди...
Маршрут /ws запрашивает напрямую в MediaService через Traefik
Добавлен выделенный маршрут для /ws путей в IngressRoute - Маршруты внутренний.kamocrm.com/ws -> Медиасервис напрямую Использует те же серверы, что и медиа-марш...
Разрешить /ws конечные точки WebSocket без перенаправления auth
- Добавлен /ws путь в обход промежуточного программного обеспечения SockJS должен подключаться к /ws/info без перенаправления Подключение к WebSocket будет имет...
Изменить соединение WebSocket на однородное
- Изменен с media.kamocrm.com на тот же источник (internal.kamocrm.com) Избегать проблем с подключением WebSocket Next.js переписывает правило на прокси /ws в M...
Добавить прокси-маршруты API для конечных точек WebRTC
Добавлен прокси /api/webrtc/config в MediaService - Добавлен прокси /api/webrtc/token для аутентификации Janus Добавлено /api/webrtc/call/initiated, answer, end...
Удалить недействительное свойство кодера из getDisplayMedia
Использование простого видео: верно для совместного использования экрана Строительство должно быть успешным
Устраните ошибку сборки - замените PhoneOff на CallEnd
Иконка PhoneOff не существует в @mui/icons-material Использование CallEnd, который является правильным значком MUI - Удаленные неиспользованные дубликаты файлов...
Полный одноранговый вызов WebRTC с сигнализацией
- Добавлено использование крючка WebRTC с полной поддержкой сигнализации Интегрированная сигнализация WebSocket (предложения, ответы, ICE-кандидаты) - Добавлены...
Добавить интеграцию Janus WebRTC для аудио/видео звонков
- Добавлено использование JanusWebRTC для управления вызовами WebRTC - Добавлен компонент VideoCallPanel для отображения видео в чате Интегрированный с ChatBox ...
Восстановление транспорта WebSocket в SockJS
- Возврат к использованию транспорта websocket (не опрос) WebSockets являются стандартными и должны работать должным образом. Сосредоточьтесь на исправлении фак...
Пропустите перенос WebSocket в SockJS, чтобы избежать проблем с HTTP/2
Используйте xhr-стриминг и xhr-поллинг вместо websocket Эти транспортные средства работают как с HTTP/1.1, так и с HTTP/2 без необходимости обновления WebSocket...
Настройка переноса SockJS для решения проблем обновления HTTP/2 WebSocket
- Явно настроить транспортный заказ SockJS, чтобы предпочесть WebSocket, а затем вернуться к xhr-стримингу / xhr-поллингу Обновления HTTP/2 WebSocket могут поте...
Маршрут сообщений распознается Next.js
- Добавлена рубка, чтобы проверить, что маршрут поражен Файл маршрута существует и структура правильна для Next.js 15
Удалить из STOMP несуществующее «активное» имущество Регистрация клиентов
- СТОМП У клиента нет «активной» собственности Проверьте только «подключенное» свойство, которое является правильным показателем состояния
Удалить неподдерживаемый обработчик ошибок на WebSocketError из клиента STOMP
- onWebSocketError не является действительной собственностью в ClientOptions - Обработчики ошибок SockJS (ошибка, приближение) уже обеспечивают обработку ошибок
Добавить всестороннюю обработку ошибок WebSocket
- Добавлены обработчики ошибок SockJS (onopen, onerror, onclose) для обнаружения сбоев соединения - Добавлено обнаружение тайм-аута соединения (10 секунд) для в...
Удалить неправильный HTTPS-агент
Обратные изменения, которые прошли проверку сертификата - Сертификаты выдаются службой автосертификации (Let's Encrypt), а не самоподписанными Необходимо выясни...
Используйте HTTPS с агентом, который принимает самоподписанные сертификаты
Всегда используйте HTTPS (не HTTP) Добавлен HTTPS-агент с отклонением Несанкционированный: ложный для самоподписанных сертификатов Это позволяет серверным маршр...
Используйте имя сервиса Kubernetes для MediaService, чтобы избежать проблем с сертификатом SSL
- Серверные маршруты Next.js теперь используют **************** Это позволяет избежать ошибок при подключении к https://media.kamocrm.com Клиентские запросы по-...
Удалить старые /api/security/media/ маршруты, которые перехватывали запросы
Старые маршруты перенаправлялись в APIService, где больше нет конечных точек мультимедиа. Все медиа-запросы должны проходить через /api/media/ маршруты непосред...
Как вы видите судоходство?
Все это приходит в ваше рабочее пространство самостоятельно. Начните с бесплатного плана и прочитайте эту страницу через месяц.
