跳转到内容
KAMOUniverse

变更记录

什么是新的。

平台的每一个改进,随着它的出货。

  1. · kamo-internal

    电线可用性 提供方进入现场

  2. · kamo-internal

    添加使用AvailabilityWebSocket 钩和可用性

  3. · SecurityService

    登录时自动设置成员可用性 AVAILABLE, 登录时自动删除

  4. · MediaService

    在成员可用状态下添加 NATS-STOMP 中继器

  5. · SecurityService

    更新可用端点以使用会员可用性 状态

  6. · SecurityService

    添加可用性

  7. · InitializerService

    迁移成员.is 可用 状态enum

  8. · kamo-shared-library

    替换为 Available 布尔值为 Available 状态

  9. · kamo-asterisk-support

    Enrich upload manifests with Asterisk CDR caller-ID data

    Adds optional MySQL CDR enrichment so the softphone history tab can display who called (or was called). When ASTERISK_CDR_DSN is configured as a Forgejo repo secret, the helper: - Queries asteriskcdrdb.cdr for the call's uniqueId before uploading - Parses CLID into callerIdNum and callerIdName - Derives call direction (inbound/outbound) from src/dst vs extension - Includes a cdr{} block in the upload manifest CDR enrichment is opt-in and gracefully degraded: if the DSN is absent or the lookup fails, uploads proceed without caller-ID (existing behaviour). Adds go-sql-driver/mysql v1.7.1; Dockerfile runs go mod tidy to populate go.sum during the Docker build so no local Go installation is needed.

  10. · ConversionService

    Parse CDR caller-ID fields from upload manifest

    When kamo-asterisk-support includes a cdr{} section in the upload manifest (populated when ASTERISK_CDR_DSN is configured), ConversionService extracts callerIdNum, callerIdName, callDirection, and disposition and passes them through RecordingMetadata so the Recording row is stored with full caller-ID context.

  11. · InitializerService

    Add CDR caller-ID columns to recordings table (order 40)

    Adds caller_id_num, caller_id_name, call_direction, and call_result columns to the recordings table so the softphone history tab can display who called without relying on the FreePBX CDR pipeline being available.

  12. · kamo-shared-library

    Add CDR caller-ID fields to Recording entity

    Adds callerIdNum, callerIdName, callDirection, and callResult columns to the Recording entity so kamo-asterisk-support can store Asterisk CDR metadata alongside the audio file. RecordingMetadata gains matching fields; a backwards-compatible constructor lets existing callers pass null for all four without change.

  13. · kamo-internal

    Add COMP payment method option to subscription order wizard

    COMP is a valid backend PaymentMethod enum value for complimentary platform-admin grants, but was missing from the frontend type and wizard UI — only INVOICE and AUTO_BILL were offered. Added COMP to the SubscriptionPaymentMethod union and exposed it as a radio option.

  14. · kamo-internal

    Show platform kamocrm domain on custom domain entry

    Surface the active *.kamocrm.com hostname on the add-domain flow and detect custom domains by excluding kamocrm URLs instead of default-flag alone.

  15. · kamo-internal

    显示顶级 & org 拥有者和系统成员的管理域按钮

  16. · kamo-internal

    为没有账户的 Org 拥有者设置计费按钮

    当 Org 拥有者打开计费帐号时, 没有计费帐号 ,显示靴子夹提示,而不是通用的“ 与您联系 ” org owner" message. (原始内容存档于2018-09-29). 按钮调用 POST /api/ 安全/ 账户/ 然后重装成功记录 .

  17. · SecurityService

    添加已存在的 org 的 ristballing 结束点

    后 . 触发相同的 idempotent 设置为子org创建钩( BillingSetupService) .setupForSubOrgCreation),但可以由兽人所有者点名. 这个处理器是开单前创建的 因此,从未收到过账户+账户订阅.

  18. · kamo-internal

    第3波转换、倒置修正和自动翻译 CI

    - 将所有硬码的英文字符串替换为t() 横跨波段 3的呼叫 组件(聊天、俱乐部、支助、笔记、管道、线索、导航等) - 将波浪3碎片合并为消息/en.json(+19键) - 在en.json(欢迎,标签, 页脚文本,账户Desc/网络Desc ICU插值) - 在page.tsx中将移动欢迎文本修复为使用t()而不是硬码字符串 - 修正请求.ts:所有地方文件都以深层英语为基础 缺少 locale 文件 (pre- translate-CI) 服务英语而不是崩溃, 和部分翻译的本地语因缺少密钥而返回英语 - 更新QQ,以匹配卡莫营销 翻译和重建模式:初步部署 + 翻译服务端口向前 · 提供地方文件 · 使用翻译重建图像 · 重新部署

  19. · kamo-register

    在合法名称行中名称后缀后加上昵称

  20. · kamo-internal

    以成员. language 为本地语源的接线

    在没有 URL 的情况下, 在整个 kamo- 内部添加基于下一轮的国际化 地语前缀. 活动区域读取自 kamo-locale cookie, 即 反映经认证的成员的“语言”偏好(通过 QQ区域设置卡 基础设施: - i18n/locales.ts,i18n/request.ts:22个支持的符合kamo-marketing的地盘 - /api/i18n/ set-locale:写出卡莫-locale饼干 - localeBootstrap:在第一次认证的负载上将饼干同步到成员.语言 - I18n Providers:应用MUI核心、x-数据网、x-日期采集器 活动语言的日期- fns 适配器 - 使用Formaters:地方认识日期/数目/百分比/相对时间帮助者 - MyAccountTab 区域设置保存:写 cookie + 路由器.refresh () 当用户更改自己的语言时 - 脚本/翻译.ts:针对翻译处的构建时间三角洲翻译 (模仿卡莫营销模式) - 脚本/相接分解.ts,用于工具 将每个地区的密钥碎片汇总到消息/en.json中 覆盖范围: - 消息/en.json 种子,共享共通*、nav.*、auth.* 键加 初始提取跨越~67页和组件(磁盘,线索, 商业、设置、账户、联系人、设置/特点、设置/成员、 (b) 组件/设置、组件/工具/聊天等)。 许多特性 表面仍然需要后续取出通行证.

  21. · VOIPService

    Fall back to imaging recordings for call history + voicemails

    FreePBX 17 doesn't expose voicemail messages over REST or GraphQL on this install (the GraphQL voiceMail type returns mailbox config, not messages, and /admin/api/api/rest/voicemail 404s), and Asterisk's CDR pipeline is also non-functional here (ODBC DSN misconfig handled separately in KlusterServices). Without these the softphone tabs render empty even when call/VM recordings exist on the imaging side. When provider.getCallHistory or provider.getVoicemails returns nothing, fall back to listing rows from the kamo.recordings table scoped by (providerInstanceId, extension, isVm). Caller-ID metadata isn't carried on Recording today so we leave from/fromNumber blank — the row still plays back through the media-player tool via recordingId. Archive filtering is preserved across both paths so a row archived via the cache stays hidden in the fallback too.

  22. · kamo-shared-library

    由(输入,扩展,为Vm)进行分页记录检索

    当上游提供商无法列出时被软手机分页作为调用录音和语音邮件的可口真言源——例如FreePBX 17没有REST/GraphQL语音邮件消息API,在此安装上Asterisk的CDR管道也断裂了(在KlusterServices中分离出ODBC的错配置修复).

  23. · SecurityService

    在子org创建上自动提供 KamoCRM 席位; 促销- billing- 所有人端点

    权限服务行走订阅 成员(不是账户成员) 计算 成员应享待遇 -- -- 活跃的领有执照的子公司之间的特征结合,加 自由基线。 Redis听众获得一个子目录:<uid>处理器。 新的 BillingSetupService 运行于两个流量: - 创建组织(KamoCRM下的子org):自动创建一个KamoCRM-org 创建者缺席时成员, 查找或创建 KamoCRM 账户 以该成员为主,打开免费账户订阅 瞄准新子org,并让创建者作为被许可人+子管理者。 - 后・・・ 刻出新鲜的 卡莫克雷姆 账户/子账户,用于现有子org的成员,可选 转让指定执照。 只有奥格的主人。 账户控制器路由滴放为Licensee / canManage 订阅 账户一级的客户有效载荷——这些旗帜现在使用订阅会员.

  24. · InitializerService

    添加成员语言+默认值 货币列

    在支持新表格的成员表格中添加两个 NOT NULL 列 成员.语言(VARCHAR DEFAULT 'ENGLISH')和成员.defaultCurrence (VARCHAR(10) DefAULT “美元” 字段。 现有行被回填入 默认值, 这样NOT NULL 约束可以在没有故障时得到满足 窗口.

  25. · kamo-register

    添加语言步骤、 国家时区选择器、 滚动 + *** 修正

    - 为巫师准备新的“我的语言”步骤,以映射国家 步骤的布局。 将22个营销支持的地方列为旗牌牌 有本地名称 + 英语工具提示; 预选自 navigator.languages. - '我的国家' 步骤现在收集一个时区 与国家,默认 从 QQ 开始,并在前可编辑 下一个 这两个领域都需要推进。 - 登记机构现在发送语言/时区(加上现有国家) 因此他们坚持在新成员身上。 - 修正:安全问题步骤内容现在可以纵向滚动—— 步骤是唯一没有溢出容器的,如此长的目录 把第三个问题推出屏幕 - 修复: 当*** 自动验证时, 完成按钮不再禁用 在我们的听众之前 以 Timeout 比赛替换为 a 民意调查直到挂载的附加物, 也会耗尽部件的当前状态 附加给迟到的听众.

  26. · kamo-internal

    向区域设置卡添加语言+默认货币

    成员简介的"区域设置卡"现在曝光可编辑语言 (22个支持的地址与营销站点相仿)和默认货币 (可搜索自动完成)与时区并列. 三个一起通过 PUT/api/安全/成员/{id}。 视图模式显示本地语言名称 括号内为英文,加上货币符号和全名.

  27. · SecurityService

    坚持成员语言/时区/货币注册

    / 注册端点现在接受语言、 时区和默认时间 与现有的国别领域并存。 登记事务组 并应用全部四个区域字段 新创立的会员,从该国 (c) 未提供时的实时绘图(又回落到美元).

  28. · kamo-shared-library

    Map external customer address blocks into AccountAddress on pull

    添加适配器AddressMapper 帮助从任意一个 JSON 地址节点转换 提供商输入一个嵌入器,并将它作为键入账户 会计地址(SHIPPING/BILLLING)。 把帮手接入客户端点暴露的4个适配器 地址块 : - ShopifyCustomerAdapter: 默认地址为双运+提单, 剩余地址[]成为货运记录 - WooCommerceCustomeAdapter:计费区块 -- -- > BILLLING、航运区块 -- -- > 船舶 - BigCommerceCustomeAdapter:地址[]除以地址 类型字段 - MagentoCustomerAdapter:地址由 \ ids 拆分 客户有效载荷中没有地址数据的适配器(Ecwid、Wix、Shift4Shop、 PrestaShop, OpenCart, Squarespace) 继续编译不变.

  29. · kamo-internal

    /账号/新副本取自牵头UX,全名字段,双人电话,地址;账级地址管理

    前端 : -/账号/新:每节"从铅获取的代码"按钮+标题"从铅获取全部代码"按钮(当铅Id param) - 名称部分:前缀、先缀、中缀、后缀 - 带有扩展和“Allow文本”切换的双重电话(个人+工作) - 使用 EmbAddress 形状( 第1行, 细节、 城市、 分区、 邮政、 国家) 的地址部分, “ 也作为账单使用” 切换( 默认) - 提交嵌入式名称/电子邮件/电话 匹配后端的有效载荷数目 - 账户 Api: 已键入账户Name, 账户Phone数, 账户地址; 新方法: 获取地址、 添加地址、 更新地址、 删除地址、 设置地址 - 账户ViewClient:从新地址阵列中提供主要传送地址

  30. · SecurityService

    支持嵌入式名称/电子邮件/手机 数量+地址管理端点

    - 账户管理员接受嵌入式名称/电子邮件/手机 POST/PUT上的JSON号码 - POST上的初始地址创建了SIPPING(以及使用AsBillingToo set时的BILLLING),设置了主要指针 - 增加5个地址终点:获取、POST、PUT、DELETE地址;PUT/地址/{id}/主地址 - 账户汇总/详细披露名称对象、电话对象、货运/账单地址清单、主要指针 - 空出账户级注解字段参考(账户注已提前删除)

你们的宇宙正在等待。

只需几分钟即可免费开始。 随时随地添加产品 — — 无需迁移,无需新登录。

永久免费 — — 无需信用卡