Ir para o conteúdo
KAMOUniverse

Changelog

O que há de novo.

Cada melhoria para a plataforma, como ele envia.

  1. · kamo-internal

    Histórico de nível de produção + guias de correio de voz com ferramenta de media-player

    Página de histórico (SoftphoneHistoryTab.tsx): - Rolo infinito via IntersectionObserver dentro do recipiente de rolagem do painel - Chips de filtro: Tudo / Entrada / Saída / Falta / Gravado - Ícone de gravação em ações de linha quando o lado de imagem tem uma linha de gravação - Menu de transbordamento por linha (Adicionar aos contatos) - Click-to-call back via discad existente Página do correio de voz (SoftphoneVoicemailTab.tsx): - Pergaminho infinito, chips de filtro (Tudo / Não lido / Tem áudio) - Por- linha Jogar / Chamar de volta / Mais ações - Auto-marcar-ler em jogo - Diálogo de exclusão de duas opções: Arquivo (soft- hide, todos os usuários) vs Delete Permanentemente (aberto por VOIP VOICEMAIL PERMANENT DELETE right; retorna ao estado desativado para usuários sem ele) - Botão de marca-tudo-ler sem-op-quando-zero affordance Ferramenta de contexto do MediaPlayer **************************** - Áudio: purificador sintetizado em forma de onda, clique-para-procura, Replay10/Forward10, taxa de reprodução (0.5x-2x), loop, volume + mudo, dispositivo de saída homenageado a partir de configurações AV - Vídeo: viewport contido, PiP, tela cheia, mesmo limpador + controles - Selector de várias faixas para gravações de chamadas (master + cada perna por canal) - Transferir - Dois modos de origem: gravação voipApi (call/VM) ou recurso de imagem por imgId - Registrado em ferramentas/registo/registos.ts como multi-instanciamento Gancho + canalização: - useSoftphone expõe histórico paginado + mensagens de voz (loadMore, hasMore, isLoading) e ações de arquivo / permanente- delete - voipApi ganha pesquisaGravações, getRecordingMetadata, archiveVoicemail, paginated getVoicemails - /api/voip proxy passa áudio/vídeo/octet-stream corpos através de ********** intacto (sem buffering) assim que os elementos de mídia esfregar - Novo **************** ***para o novo ponto final de transmissão da DocsService com o Range - VOIP VOICEMAIL PERMANENT DELETE adicionado ao frontend RoleRightType registry assim que checkRight gates the delete UI

  2. · InitializerService

    Corredor de migração para as colunas de procura do provedor de gravação + colunas de arquivo VM

    Adiciona RECORDINGS.provider instance id (UUID) e provider external id (VARCHAR(64)) mais o índice composto idx gravings provider lookup usado pela aba de histórico do softphone endpoint de busca em massa. Também adiciona PHONE VOICEMAIL.is archived + date archived para o novo fluxo soft-archive. Limpa todas as linhas preexistentes RECORDINGS / RECORDING EXTS no mesmo passe — naturalmente idempotent (o predicado apenas corresponde a linhas cujo provedor external id ainda é NULL, o que não acontecerá quando ConversionService estiver no novo caminho do código). Ordem 35 — depois de **************** (30) de modo que as tabelas de gravação existem antes do ALTERs terra.

  3. · ConversionService

    Fornecedor PersistInstânciaId + fornecedorEstrangeiro na gravação na ingestão

    Threads asterisco-suporte X-Phone-Server-Id e X-Asterisco-Unique-Id (já em UnprocessedRecording) para os novos campos RecordingMetadata então call/voicemail linhas no sistema de imagem levar a chave de junção de volta para a linha provedora fonte. Para as mensagens de voz, o helper envia o nome de base do nome de arquivo bruto (por exemplo, msg0000); tiramos o prefixo msg e os zeros principais para que a chave armazenada corresponda ao que o voicemail REST API do FreePBX retorna como o ID da mensagem.

  4. · DocsService

    Adicione **************** com suporte HTTP Range

    Endpoint de streaming genérico para recursos de imagem de áudio/vídeo, usado pela ferramenta kamo-internal MediaPlayer. Reutiliza a autorização do ImageService (mesmo que /download/...) mas streams com Accept-Ranges + Content-Range para que os elementos de mídia possam esfregar sem carregar o arquivo completo.

  5. · VOIPService

    Reprodução de gravação, arquivo de correio de voz, voicemail paginado, enriquecimento de histórico

    - Nova gravação Controlador com procura em massa, áudio range-streamed para faixas mestre + por canal, e metadados para a janela de ferramenta media-player - CallController.getCallHistory / getVoicemails enriquecem cada linha com a gravação de imagensId através do novo serviço de gravaçãoLookup – única viagem de ida e volta, sem N+1 - PhoneProvider.getVoicemails agora leva (memberId, page, size); FreePBX paginates client-side from one fetch, RingCentral usa paging nativo, KamoPBX continua a jogar NotSupported - Endpoint de arquivo de correio de voz (soft-hide via PhoneVoicemail.isArchived) e permanente-delete fechado por VOIP VOiceMAIL PERMANENT DELETE — deus bypass ativo requer tanto a elegibilidade GD E a opção ativa - PhoneProvider ganha getInstanceId() para que os controladores possam resolver a chave de junção para gravar pesquisas sem uma segunda chamada de fábrica

  6. · kamo-shared-library

    Teclas de pesquisa do provedor na gravação, arquivo de correio de voz, streaming de gama MinIO

    - Gravação: adicionar provedorInstanceId + provedor ExternalId para juntar provedor call-history / voicemail linhas de volta aos ativos de imagem - PhoneVoicemail: add isArchived + dateArchived for soft-hide from softphone listings - RoleRightType: adicionar VOIP VOiceMAIL PERMANENT DELETE (porta apagar destrutivo; arquivo permanece disponível para todos) - MinIOStorageService: adicionar openRange() + RangeStream para que os endpoints áudio/vídeo possam honrar o HTTP Range - RecordingImagingService: thread provier id + id externo através da RecordingMetadata na linha de gravação no momento da ingestão

  7. · kamo-internal

    Adicionar guia Histórico — linha do tempo de auditoria paginada com pesquisa e filtros

    - LeadHistoryPanel: barra de ferramentas de filtro pegajoso com pesquisa desbotada, ************* filtros, tabela MUI com paginação, chips de eventos codificados por cores, resolução de nome de membro para campos de atribuição / conta - leadsApi: getLeadHistory() e getLeadHistoryFilters() com suporte completo para consulta - LeadHistoryEntry, LeadHistoryActor, LeadHistoryFieldMeta, LeadHistoryPageResponse, LeadHistoryFiltersResponse types - Seguinte. Rotas proxy para ************* e /filtros - LeadViewClient com fio para renderizar LeadHistoryPanel quando a aba Histórico estiver ativa

  8. · SecurityService

    Adicionar parâmetros de GET /{id}/história e /{id}/história/filtros

    Endpoint paginado, filtrado, pesquisável com carga de ator em lote (sem N+1). O endpoint dos filtros retorna campos usados distintos, todos os campos de registro, atores distintos e todos os tipos de eventos. Todos os terminais mutantes agora passam o membro chamado como ator para o LeadHistoryService para atribuição.

  9. · kamo-shared-library

    Adicionar registro de auditoria do lead-history — entidade, registro, serviço, DTO, ganchos LeadService

    - entidade LeadHistórico (UUID PK, simples FKs Long - sem restrições FK para permitir a eliminação/conversão de chumbo) - LeadHistoryEventType enum com etiquetas legíveis por humanos - LeadHistoryFieldRegistry: fonte única de verdade para ~55 campos de Lead rastreados; adicionar um campo é uma linha - Disco LeadFieldDescriptor (chave, etiqueta, categoria, extrator) - LeadHistoryService: snapshot/diff pipeline, ********** paginated+filtered findHistória, distintosCampos/Actores para filtros - LeadHistoryDTO com AtorDTO aninhado; todos os IDs longos serializados como String para BarataDB JS segurança de precisão - LeadService: ganchos de histórico ao criar, atualizar, excluir, atribuirLead, atribuirLeadAccount, unassignLeadAccount

  10. · SecurityService

    Fio LeadHistoryActor de serviço a seguir o LeadController

  11. · kamo-internal

    Adicionar IU de atribuição de conta principal, sistema de moeda, páginas de contas novas, campo de configurações de moeda

  12. · SecurityService

    Adicionar endpoints de atribuição da conta principal, atualizar o AccountController para o tipo de moeda

  13. · kamo-shared-library

    Adicionar MoedaType enum, atualizar PaísType com moeda primária, adicionar moeda à Conta/Organização, adicionar atribuição de conta principal ao LeadService

  14. · kamo-internal

    Rótulo de tipo de membro dinâmico no título da página Minha Conta

    O título agora lê "Minha Conta {Membro da Equipe}" usando o org-configurado etiquetas de comportamento, alternando automaticamente uma vez que o tipo do membro é carregado.

  15. · kamo-internal

    Mover o botão Criar Documento para a barra de ferramentas DocManager

    O botão só estava disponível no /doc/manager através do prop das ações. Moveu toda a lógica (estado, manipulador, DOC TYPES, menu) para DocManager assim aparece em cada instância incorporada. Página simplificada.tsx para apenas renderizar o DocManager sem suporte de ações.

  16. · kamo-internal

    Mover o endereço de e-mail para a linha de 3 colunas com informações de chumbo e contato primário

  17. · kamo-internal

    Apoio internacional — PaísSelecionado, IdiomaSelecionado, Subdivisão Campo em todas as formas

    - Adicionar País reutilizávelSelecionar (207 países, ícones de bandeira), IdiomaSelecionar (26 idiomas, ícones de bandeira), SubdivisãoField (U.S. estado dropdown com bandeiras; outros países mostram campo de texto marcado) - Adicionar constantes do país (países.ts, idiomas.ts, usStates.ts, timezones.ts) - Guia de detalhes da vista principal: edição por cartão no local com ********** campos - Forma de criação de chumbo: país completo/subdivisão/dropdowns de fuso horário que substitui listas internas limitadas - Configurações do gerenciador de etiquetas: linguagem padrão org na Seção 8, PaísSelect+Subdivisão Campo em endereço - ContactInfoStep ( assistente de criação de rede): CountrySelect+SubdivisionField substituindo selects limitados - MyAccountTab: PaísSelect+SubdivisãoCampo que substitui campos de texto simples - tipos/líderes: adicionar campos de país e subdivisão

  18. · kamo-shared-library

    Adicionar apoio internacional — País líder/subdivisão/zona horária, língua Org, CountryType isProvince

    - CountryType: add PROVINCE NAMES set, isProvince(), getSubdivisionLabel() - Organização: adicionar idioma (Tipo de idioma) campo - Chumbo: adicionar os campos país (Tipo de país), subdivisão (String), fuso horário (Tipo de fuso horário) * * * * * * * * Adicione o país, subdivisão, timezone campos String - LeadService.createLead: lidar com novos campos; idioma padrão + país a partir de configurações org - LeadService.updateLead: lidar com novos campos - * * * * * * * * Adicione a linguagem tocada

  19. · kamo-internal

    ASSIGN LEADS direito, filtro de agente opção não atribuída, limpeza da coluna da grade

    - Opção de filtro do agente 'Liders não designados' por trás do ASSIGN LEADS por trás do direito - "Todos os leads" exclui leads não atribuídos para membros sem direito - Remover colunas de rua, produto, fonte; remover dropdowns de filtro Produto/fonte - Remover coluna da empresa; coluna de contato mostra nome da empresa, volta ao nome de contato - Coluna do fornecedor mostra dica com produto – detalhe de fonte - Data colunas drop prefixo dia da semana, encolher de 170px para 140px - DateTimeDisplay: adicionar showWeekday prop (padrão false)

  20. · kamo-shared-library

    Adicionar ASSIGN LEADS à direita (ID 137) na seção CRM

  21. · kamo-internal

    Adicionar atribuição Para a seção Mercado & Atribuição em /leades/novo

    - Fetches membros da equipa activa de - Membros dos grupos por departamento com departamentos alfabeticamente ordenados e membros - Formata nomes como "Último, Primeiro"; primeira opção é "Auto Atribuir / Não Atribuir" - Reordena os campos da seção: Mercado Principal, Atribuir, Melhor Hora de Contato, Fornecedor, Produto, Tipo de Prospecção (all lg=4) - Corrige leadsApi.ts para enviar o TeamMemberId atribuído em vez do campo de usuário morto - Adiciona TeamMemberId ao tipo Lider

  22. · kamo-asterisk-support

    Emit gravadoAt + extensão por arquivo no manifesto de upload

    - Observador: cada gravação emitida carrega gravado, derivado do Segmento EPOCH da nossa gestão nome do arquivo, retornando ao arquivo mtime para arquivos de correio de voz / legado. - Grouper: CallBatch agora rastreia FileExtensions[] (um por arquivo, paralelo para Files[]) e o lote em geral gravadoAt (início da perna mais cedo). Sorte chave para pernas é gravadoAt com FinalizedAt como tiebreaker para o A perna de mestre é determinística. - Uploader: manifesto agora inclui registro de nível superior e por arquivo extensão. ConversionService consome ambos para gravar a gravação (date graved, long from ffsprobe) and per-leg RecordingExt rows.

  23. · ConversionService

    Passar a gravação de metadados para imagens — comprimento do ffsondas + análise manifesta

    - Está bem. executa o ffsprobe - show entries format=duration no mestre Opus/WebM, retorna ms. 0 = desconhecido (não fatal). - Agora... * executa sondaDuraçãoMs no mestre para obter o comprimento de gravação; * analisa o manifesto (enviado por kamo-asterisco-suporte) para gravadoAt e dados de extensão/canal por arquivo, recuando para a linha de estadiamento DataCriada e processamento do nome do canal para cargas úteis mais antigas; * passa por uma data gravada, * longMs, participanteExtensões) para RecordingImagingService assim que ele pode escrever as novas linhas Gravação + GravaçãoExt.

  24. · kamo-shared-library

    Gravação + GravaçãoExt entidades, GravaçãoImagingService escreve-los

    - Nova entidade de registo (IDUID, IMG ID, IS MASTER, IS VM, EXTENSÃO, ID-MEMBRO, LENGTH, DATA RECORDADO, DATA CREADO [DB-defaulted via @CreationTimestamp]). Uma linha por mensagem de voz finalizada ou gravação de chamada carregada para imagem. - Novo registoExt entity (IDUID, ID RECORDING, EXTENSÃO, ID MEMBRO, IS Master). Uma linha por canal que participou na gravação; o A perna principal é marcada como IS MASTER=verdadeira, todas as outras são falsas. Agora, a RecordingMetadata pacote (phoneServerInstanceId, dataGravada, comprimentoMs, participanteExtensões) e persiste Gravação + GravaçãoExt linhas em a mesma transação que o membro Img/ImgDat.Id é resolvido por perna via ************************* instância VOIP originária (null quando não atribuída).

  25. · kamo-internal

    Atualizar as placas de administração da plataforma para corresponder à estrutura unificada da página

    Substituir as duas cartas velhas (Organização independente página + Configuração) com cinco cartas correspondentes às abas reais: Geral, Organizações, VOIP & SMS, Sistema Usuário, e Avançado — cada link diretamente para o correto ?tab= param.

  26. · kamo-internal

    Disposição da grade de largura total e mover o gatilho de sincronização da aba Avançado

    - Reprojetar a guia VOIP & SMS para usar a largura total da área de conteúdo: span de estatísticas pipeline a linha superior, Processamento de Gravação e Programação Global de Sincronização numa grelha de duas colunas no ponto de paragem lg+ - Cartas estatísticas de pipeline mostram contagens ao vivo com zero-estado de verificação e erro codificação de cores; atualizar automaticamente a cada 30s notado em legenda - A placa Global Sync consolida as configurações de agendamento, última linha de timestamp de sincronização, e gatilho manual em um painel; habilitado/pausado chip no cabeçalho - Mover "Force global VOIP sync" para fora da aba Avançado (duplicar de gatilho já presente em VOIP & SMS); A página avançada agora mostra o texto do placeholder

  27. · kamo-internal

    Mesclar organizações na página de configuração com a página unificada

    - Adicione organizações como uma guia. (General · Organizações · VOIP & SMS · Usuário do sistema · Ordem avançada) - Apaga a página. - Atualizar administração de plataforma nav em ConfiguraçõesStatusWindow para listar todas as 5 abas como sub-itens apontando para configuração?tab=... - Corrigir disposição em todas as abas: consistente p: {xs: 2, sm: 3} estofamento para que o conteúdo já não corra para paredes de cartões - Melhorar cartões de estatísticas GeneralTab com fundo de ícone e ritmo de tipografia mais apertado - Atualizar configuraçõesVer título/subtítulo para a página unificada

  28. · kamo-marketing

    Add Go logo to BUILT WITH banner

  29. · kamo-internal

    PHONE SERVER ID de superfície na aba de visão geral do telefone

    Operadores que configuram o suporte ao kamo-asterisco em uma máquina FreePBX precisam colar o VoipProviderInstance UUID correspondente no arquivo de configuração do ajudante como Telefonista. Até agora eles tiveram que arrancar através da barra de URL ou da base de dados. Nova seção de "ID do servidor de telefone" em /settings/features/phone/{id} visão geral mostra o UUID em um campo monoespaço somente leitura com um clique botão de cópia (copyableIdField helper, também reutilizável para futuro semelhante identificadores).

  30. · kamo-internal

    Extensão VOIP clicável no Centro de Interação abre softphone com número pré-cheio

Seu universo está esperando.

Comece gratuitamente em minutos.Adicione produtos sempre que estiver pronto — sem migração, sem novos logins.

Gratuito para sempre — não é necessário cartão de crédito