Aller au contenu
KAMOUniverse

Changelog

Ce qui est nouveau.

Chaque amélioration apportée à la plateforme, à mesure qu'elle est livrée.

  1. · kamo-marketing

    Ajouter Flowroute à la page du centre d'intégrations

  2. · kamo-marketing

    Ajouter Flowroute à INTEGRATED AVEC la bannière

  3. · kamo-internal

    Afficher l'état précis de la connexion du fournisseur à partir du champ connecté

    Remplace l'ancienne logique qui a montré "Connected" pour n'importe quel fournisseur sans synchronisation erreur (y compris les fournisseurs flamboyants qui n'ont jamais été testés). Nouveau badge à trois états piloté par est connecté (nulle/vrai/faux): - null/jamais testé - gris "Non testé" (HelpOutlineIcon) - faux et rouge "Non connecté" (ErrorOutlineIcon) - true - erreur de synchronisation - ambre "Erreur de synchronisation" (WarningAmberIcon) - true et vert "connecté" (CheckCircleIcon) - RingCentral no OAuth et ambre "Needs reauth" (inchangé)

  4. · VOIPService

    Résultat du test de connexion persisté à champ connecté

    - test() écrans d'évaluation est connecté/faux à DB après chaque bilan de santé - update() resets est connecté à nul lorsque la configJson change (les paramètres de vérification peuvent être modifiés). ont changé, nécessitant un nouvel essai avant de montrer Connected) - toDto() expose est connecté de sorte que le frontend peut distinguer: jamais testé / Connecté/non connecté

  5. · kamo-shared-library

    Ajouter champ connecté à VoipProviderInstance

    Booléen nul: nul - jamais testé, vrai - le dernier test est passé, faux - a échoué. Exige de la migration du schéma KamoInitializerService pour ajouter la colonne IS-CONNECTED.

  6. · kamo-marketing

    Montrez une bannière d'offre active avec compte à rebours en direct milliseconde

    Fetfond le côté serveur de promotion actif sur la page d'accueil et rend un HeroOfferBanner entre le sous-titre et l'appel gratuit pour toujours. La bannière indique le montant de la remise, la durée et un compte à rebours réel à 50 ms) avec un animation Bordure à gradient-glow et balayage en brillance. Ne rend rien lorsqu'il n'y a pas d'activité ou de promotions non expirées.

  7. · kamo-internal

    Fil disponible/Indisponible passant au backend et correction du bogue de la présence OFFLINE

    - Renommé la puce sous-couronne/active disponible/indisponible dans NavTop - S'assurer la disponibilité initiale sur le monture et les bascules via l'API nouvelle me/disponibilité - Ajouter champ isdisable à l'interface membre et MemberItem prop - MemberListpasss isDisponible de la réponse par le département à MemberItem - L'article membre montre l'étiquette EN LIGNE/FAP L'AFTILINE/UNVADIÉ avec une couleur orange pour indisponible - Correction d'un bogue OFFLINE: ajouter un changement de visibilité au rythme cardiaque et une reprise périodique en vrac des 120 s

  8. · SecurityService

    Ajouter être disponible à la réponse par département et aux critères d'évaluation de la disponibilité

  9. · InitializerService

    Le remblai est disponible. VRAI pour les membres existants.

  10. · kamo-shared-library

    Ajouter un champ disponible pour la mise à la disposition des membres

  11. · kamo-internal

    Supprimer l'onglet Access et les domaines et le composant DomainManager

  12. · kamo-marketing

    Insigne d'une lecture en direct et rebond sur un nouveau message d'agent

    - Maintient LiveSupportPanel monté hors écran pendant que le widget est minimisé (uniquement lorsqu'une session de soutien existe) de sorte que l'abonnement STOMP reste vivants et sur UnreadMessage feux pour les messages entrants de l'agent même lorsque le visiteur ne regarde pas le chat. - Anime l'insigne avec une échelle de printemps sur chaque changement de comptage (clé astuce remonte l'élément) plus un pingon de taillet continu pendant le temps. - Rebondit et incline la languette minimisée elle-même chaque fois que le compte monte, Et le teinte en rouge avec une lueur de sorte qu'il attire l'attention de l'autre côté de la page. - handleExpand efface déjà le comptage sur ouvert, donc aucun changement n'est nécessaire Là.

  13. · MediaService

    Diffusé en attente de comptage - non lu sur l'agent lire - envoyer un visiteur

    - - maintenant délégués à - donc le compte reflète les sessions avec des messages de visiteurs non lus et des diminutions lorsque agent appelle marqueAsRead. - Nouveau public et aide. - - maintenant a) re-rediffusion de l'agent par session non lue charge utile après la dernière mise en garde et b) appelle Aidez-vous donc le navtop SupportButton reste en synchronisme sans attendre le prochain sondage des années 60. - - appelle aussi l'assistante de sorte que le les bosses de l'ordinateur navable vivent lorsqu'un visiteur envoie. Le nombre d'ordinateurs à moto correspond maintenant à l'état de badge par ligne immédiatement après clic et après un rafraîchissement du navigateur.

  14. · kamo-shared-library

    Nombre non lu et aide à la recherche par session

    Ajout - donc le topbe La badge de soutienButton peut compter les tickets d'assistance qui ont réellement besoin attention (ne pas louer les messages des visiteurs) au lieu de PRE-TICKET/NEW statut. Le compte est lu directement à partir du DB afin qu'il survive à un rafraîchissement. Ajout également de MediaService peut résoudre l'org propriétaire à partir d'un GUID de session après markAsRead.

  15. · KlusterServices

    Ajouter des supports à la liste de provisionnement des sous-domaines

  16. · kamo-internal

    Ajouter un sous-domaine multimédia aux alias DNS requis

  17. · kamo-internal

    Ajouter la colonne d'emplacement au réseau de données sur les billets

    Lire directement sur le supportTicketDTO (maintenant instantané sur l'entité du billet à l'adresse suivante: temps de création - pas d'aller-retour supplémentaire). Drapeau des rendus - ville/région/pays avec l'IP montré en infobulle; retombe dans un tableau em lorsqu'il n'y a pas de données géographiques est sur le billet. Le point de vue de l'agent uniquement. TicketHeader consomme déjà les mêmes champs DTO, donc l'outil pop-up La fenêtre montre maintenant l'instantané aussi - pas de GeoLite ou de table ronde des visiteurs lire sur le rendu.

  18. · kamo-shared-library

    Snapshot visitor geo sur l'entité de billetterie

    Ajout du VISITOR-IP-ADDRESS, VISITOR-COUNRY-CODE, VISITOR-COUNTRY-NAME, Colonnes VISITOR-CITY, VISITOR-SUBDIVISION. Capturé lors de la création des billets de sorte que les points d'extrémité de la liste/détail n'ont jamais à faire un balayage de l'aire de répartition GeoLite ou une consultation séparée de la table des visiteurs à l'heure de lecture. KamoInitializerService (hibernate.ddl-auto: update) ajoutera le les colonnes lors de la prochaine course; les lignes existantes retombent dans le procès-verbal du visiteur Country StockéCode dans toDTO.

  19. · MediaService

    Ajouter /ws/public-chat-natif webSocket à côté de SockJS

    Enregistre un deuxième critère d'évaluation STOMP sans SockJS à /ws/public-chat-natif de sorte que le frontend peut se connecter à une prise WebSocket native (brokerURL) sans en avoir besoin la bibliothèque sockjs-client, qui enregistre un gestionnaire de déchargement qui viole le Autorisations-Policy du site. Le critère d'évaluation original/ws/chat public SockJS est conservé. pour la rétrocompatibilité.

  20. · kamo-internal

    Bader à perticket non lue et filtre « Nouveaux messages seulement »

    - La liste des billets montre une badge de bulles de discussion avec le compte non lu à côté de chaque fois que la session a des messages plus récents que ceux de l'agent dernier message visualisé. - Ajoute un commutateur de filtre "Nouveaux messages seulement" à la barre de filtrage. - TicketChat est maintenant appelé - sur initiale charger et chaque fois qu'un message entrant arrive, donc le badge s'éclaircit comme l'agent lit la conversation. S'appuie sur le changement de bibliothèque kmo-partred qui s'élargit findChatMembershipsPar MemberId pour inclure les sessions SUPPORT-TICKET, plus la diffusion de MediaService en z

  21. · MediaService

    Diffuser non lu compte de l'agent sur le message adressé aux visiteurs

    Après qu'un visiteur a envoyé un message de soutien, poussez les derniers comptes non lus charge utile à - donc la liste des billets de l'agent la mise à jour du compteur de badge et de navtop en temps réel. Rétroviseurs de l'émission dans MediaController.sendMessage pour les discussions entre membres.

  22. · kamo-shared-library

    Inclure les sessions de SUPPORT-TICKET dans la requête d'adhésion non lue

    findChatMembershipsByMemberId retourne maintenant des adhésions pour le CHAT et Types de sessions SUPPORT-TICKET, de sorte que le nombre de participants par membre non lu infrastructure (et unreadCountsByMember, /topic/chat/unread/memberId) diffusions, GET et couvertures automatiques Des tickets d'assistance aussi. Les agents voient les indicateurs de nouveau-message par billet dans la liste des billets et un badge total non lue combiné dans le top pour le dessus.

  23. · KlusterServices

    Production infaillible2ban avec les prisons du PJSIP et l'état persistant

    - Ajouter fail2ban-configmap.yaml avec [asterisk et [freepbx-web, l'augmentation progressive de l'interdiction (1h-24h-30d plafond), LAN ignoreip, et a Fil de filtre asterisk-security.conf ciblé PJSIP SecurityEvent records - Mount fail2ban-config ConfigMap et hostPath /var/lib/pbx/fail2ban (ban) l'état persiste à travers les redémarrages de la nacelle) dans les déploiements k1m1 et k2m1 - Configts de fils dans startup.sh avant le démarrage du client fail2ban-client sur les deux nœuds

  24. · kamo-shared-library

    Ajouter resetHastachmentsForFolder requête à ConversationRepository

    Permet la synchronisation à réinitialiser les drapeaux de fixation avant de réindexer. Une détection MIME corrigée peut reconstruire le champ à partir de données de fixation réelles.

  25. · KlusterServices

    Intégrer Coqui TTS avec la voix norman (VCTK p267)

    - Déployer un serveur coqui-tts (modèle VCTK VITS, CPU uniquement) en tant que service ClusterIP sur le port 5002 avec cache modèle à /var/lib/coqui-tts sur k1m1 - Injectez coqui-tts.agi dans /var/lib/assèche-blocs sur chaque botte: appelle l'API HTTP, cache 8 kHz mono WAV sous sons/coqui-tts/, flux par l'intermédiaire d'AGI STREAM FILE - utiliser AGI(coqui-tts.agi,texte) dans n'importe quel contexte d'analyse - Écrire say.conf sur chaque boot pour acheminer toutes les fonctions de l'Astérisque intégrées (chiffres, chiffres, dates, heures) par l'intermédiaire de Coqui TTS

  26. · KlusterServices

    Ajouter LAN DNS gousse pour DNS split-DNS sur k1m1

    Déployer un dnsmasq pod avec hostNetwork sur k1m1 qui écoute 192.168.4.22:53. Désirce pbx.k1.kluster.kamocrm.com Les téléphones LAN atteignent le PBX directement sans épingle à cheveux NAT. Tous les autres Les questions sont transmises au 8.8.8.8/8.8.4.4. Le routeur DHCP doit être pointé vers 192.168.4.22 comme le serveur DNS principal. pour que les clients LAN prennent ce point.

  27. · kamo-internal

    Onglets de configuration de la plate-forme (Général / VOIP et SMS / Utilisateur de système / Avancé)

    Enveloppe et dans ParamètresView avec quatre onglets: - Généralités: aperçu de la plate-forme en lecture seule - total, serveur téléphonique actif nombre d'instances, nombre d'instances de fournisseur de SMS actifs, dernière synchronisation VOIP globale Timbre-heure. Lire de nouveaux - VOIP et SMS: éditer voipSyncIntervalMinutes (1..1440) et voipSyncEnabled, surface lastGlobalVoipSyncAt, plus un bouton "Run global sync now" qui appelle SecurityService et VOIPService /internal/voip/sync-global. - Utilisateur du système: les subventions existantes de l'utilisateur de l'utilisateur du système, supprimées ConfigurationClient in mot in an textuelle dans un composant d'onglet (pas de changement de comportement). - Avancé: bouton parallèle "Trigger global VOIP sync now" pour ops, plus un message explicite d'état vide pour les futurs contrôles. ConfigurationClient est maintenant un tatouage mince. utiliserPlatformAdminGuard reste en place au niveau de l'orchestre de sorte que les quatre onglets sont fermés.

  28. · DaemonService

    Emploi de synchronisation VOIP globale (intervalle adminable)

    VoipGlobalSyncJob coche chaque minute et, sur chaque tique, lit le SystemConfiguration singleton pour décider si une synchronisation globale est due: - Si voipSyncEnabled est faux et saut. - Si LastGlobalVoipSyncAt et voipSyncIntervalMinutes - maintenant - sautez. - Sinon : POST /internal/voip/sync-global à VOIPService avec le En-tête InternalAuthFilter; mettre à jour lastGlobalVoipSyncAt sur le succès. Cela permet aux opérateurs de plate-forme d'ajuster la cadence au moment de l'exécution à partir de VOIP : SMS sans redémarrer DaemonService ou touchant des expressions cron. Inscrite à QuartzConfig en marge des emplois existants. k8s/configmap.yaml ajoute la tic cron (par défaut de 1 minute) et kamo.services.voip.base-url interne.auth.secret donc l'appel HTTP sortant peut authentifier.

  29. · SecurityService

    Critères d'évaluation de la configuration du système et de la plate-forme-examen

    Surface de configuration à l'échelle de la plate-forme, fermée par le propriétaire de haut niveau existant Garde (matches SystemUserConfig's requireTopLevelOwner pattern). Critères d'évaluation: GET /api/security/system-config et retour singleton row - PUT /api/security/system-config et mise à jour voipSyncIntervalMinutes / voipSyncEnabled. Mises à jour partielles appuyés; validation intervalle 1..1440 minutes. GET/api/sécurité/élévation de la plateforme et des statistiques agrégées (total, les nombres d'instances de téléphonie active/de gestion de marché, last syncempomètre amincissement, courant intervalle - drapeau activé). - POST Appels VOIPService /internal/voip/sync-global via InternalAuththFilter (interne auth secret) de sorte que les opérateurs de plate-forme peuvent déclencher une synchronisation VOIP globale à la demande de la nouvelle configuration de la plate-forme, la configuration VOIP, l'onglet SMS / onglet Avancé. Config: - kamo.services.voip.base-url (par défaut à VOIPService cluster-local service URL). - Reuses existantes interne.auth.secret.

  30. · VOIPService

    Contrôleurs de ressources par instance - org ag - synchronisation interne

    Persibilités CRUD (extensions / utilisateurs / appareils / messagerie vocale): - VoipExtensionsContrôleur à VoipUsersContrôleur à /api/voip/instances/zid/utilisateurs - VoipDevicesContrôleur à - VoipVoicemailContrôleur à l'adresse suivante: - Chaque GET accepte 'rafraîchir 'vraisons de force de la part du fournisseur et de la cache de rafraîchissements; D'autre part, il sert à partir du cache local pour l'interface utilisateur d'utilisateurs. - Chaque chemin d'écriture appelle le fournisseur ET renforce le cache local de sorte que les vues restent cohérentes sans attendre la prochaine synchronisation programmée. - La messagerie vocale GET /-vmId/audio diffuse l'audio brut de l'utilisateur via Streaming ResponseseBody pour que l'UI puisse 'audio src'... . . . . . . . . . . . . . . . . . . . Org-aggregate (VoipOrgAggregateController at /api/voip/org): - /extensions, /utilisateurs, /dispositifs, /voicemails renvoient des lignes sur chaque instance avec les pilules d'instance, instanceNo. UI les rend dans le cadre de l'agglomération onglets/réglages/caractéristiques/téléphone. - /restauration de santé ContrôleHealth() sur chaque instance active en parallèle par instance (via les comptes mis en cache de InstanceSyncService), retourne InstanceHealthDto[. - POST/sync exécute InstanceSyncService contre chaque instance active de la l'ordre de courant. Augmente le bouton de niveau locataire "Synchroniser cet org maintenant" dans l'UI. Synchronisation interne (VoipInternalSyncController): - POST /internal/voip/sync-global boucles toutes les instances actives à l'échelle de la plate-forme. Appelé par l'emploi de Quartz prévu par DaemonService. Protégé par les InternalAuthFilter dans VOIPService. Construit en vert.

Votre univers vous attend.

Commencez gratuitement en quelques minutes. Ajoutez des produits quand vous êtes prêt. Pas de migration, pas de nouvelles connexions.

Gratuit pour toujours — aucune carte de crédit requise