チェンジログ
何が新しいの?
プラットフォームのすべての改良 それが出荷される
· kamo-internal
制作グレードの履歴+ボイスメールタブとメディアプレーヤーツール
歴史タブ(SoftphoneHistoryTab.tsx): - パネルのスクロールコンテナ内のIntersectionObserverを介して無限スクロール - フィルター チップ: すべて/インバウンド/アウトバウンド/逃された/記録される - イメージング側が記録行列を持っているときに行のアクションの記録アイコン - 1列のオーバーフローメニュー(連絡先に追加) - 既存のダイヤルパッドを介して、クリックツーコールバック ボイスメールタブ(SoftphoneVoicemailTab.tsx): - 無限スクロール、フィルタチップ(すべて/未読/オーディオを持って) - パーループレイ/コールバック/より多くのアクション - プレイのオートマーク読み取り - 2つのオプション削除ダイアログ:アーカイブ(ソフトハイド、すべてのユーザー)と永久削除(VOIP VOICEMAIL PERMANENT DELETEによる)右;それなしでユーザーの無効な状態に戻ります) - ノープ・ウエン・ゼロ・ファランスとマーク・オール・レッド・ボタン メディアプレイヤーポップアップツール メニュー - 可聴周波:同期波形スタイルのスクラブバー、クリックツーセック、再生10 /フォワード10、再生速度(0.5x-2x)、ループ、ボリューム+ミュート、AV設定から表彰された出力デバイス - ビデオ:含まれているビューポート、PiP、フルスクリーン、同じスクラブ+制御 - コール録音用のマルチトラックセレクタ(マスター+各チャンネルレッグ) - ダウンロード - 2つのソースモード: voipApi 録画(call/VM)または imgId によるイメージングアセット - ツール/登録/登録/登録.ts にマルチインスタンスとして登録 ホック+配管: - useSoftphone は paginated 履歴を公開します + ボイスメール (loadMore, hasMore, isLoading) とアーカイブ/永久的な削除のアクション - voipApiが検索結果記録、getRecordingMetadata、アーカイブVoicemail、paginated getVoicemails - /api/voipプロキシは、********************のintact(バッファなし)でオーディオ/ビデオ/オクテットストリームボディを渡すので、メディア要素はスクラブ - 新しい********************は、DocsServiceの新しいストリーミングエンドポイントをレンジで転送します - VOIP VOICEMAIL PERMANENT DELETEは、フロントエンドRorightTypeレジストリに追加され、checkRightは削除UIをゲートします
· InitializerService
レコード提供者向けマイグレーションランナー+ VMアーカイブカラム
RECORDINGS.provider instance id (UUID) とprovider external id (VARCHAR(64)) と、ソフトフォン履歴タブの一括検索エンドポイントで使用される複合idx recordings provider lookup インデックスを追加します。 また、新しいソフトアーカイブフローにPHONE VOICEMAIL.is archived + date archivedを追加します。 既存の RECORDINGS / RECORDING EXTS の行を同じパスで拭く - 自然に idempotent (predicate はprovider external id がまだ NULL である行のみにマッチします。コンバージョンサービスが新しいコードパスにあるときには発生しません)。 注文 35 —************ (30) 以降、ALTERs の土地の前に録画テーブルが存在します.
· ConversionService
Persist プロバイダーInstanceId + プロバイダーExternalId で 摂取
新規の RecordingMetadata フィールドに、X-Phone-Server-Id と X-Asterisk-Unique-Id (UnprocessedRecording の読み込み) をスレッド化し、イメージングシステム内のコール/ボイスメール行が、ソースプロバイダの行に戻す。 ボイスメールの場合、ヘルパーは生のファイル名ベース名(例:msg0000); msgプレフィックスをストライプし、保存されたキーが FreePBX のボイスメール REST API がメッセージ ID として返されるかにマッチします.
· DocsService
HTTP レンジのサポートで **************** を追加
Kamo-internal MediaPlayer ツールによって使用されるオーディオ/ビデオイメージングアセットの一般的なストリーミングエンドポイント。 ImageServiceの許可(/download/... と同じ)を再利用しますが、Accept-Ranges + Content-Range でストリームを流すため、メディア要素はフルファイルをロードすることなくスクラブできます.
· VOIPService
録音再生、ボイスメールアーカイブ、ボイスメール、履歴濃縮
- 新しい録音 一括検索、マスター+チャネル毎のトラックのレンジストリームオーディオ、メディア再生ツールウィンドウのメタデータを備えたコントローラー - CallController.getCallHistory / getVoicemailsは、新しいRecordingLookupServiceを介して撮像録画で各行を豊かにします。単一の往復、N+1はありません - PhoneProvider.getVoicemails は (memberId, page, size); FreePBX は 1 つの fetch からクライアント側を paginates、 RingCentral はネイティブの paging を使用し、KamoPBX は NotSupported をスローし続けます。 - VOIP VOICEMAIL PERMANENT DELETEによるVoicemailのアーカイブエンドポイント(PhoneVoicemail.isArchived経由のソフトハイド)と永久的な削除ゲート - GodActiveバイパスは、GDの適格性とアクティブなトグルを必要とします - PhoneProvider は getInstanceId() を獲得しているため、コント ローラーは 2 番目のファクトリコールなしで録音のルックアップの結合キーを解決できます
· kamo-shared-library
録音、ボイスメールアーカイブ、MinoO範囲のストリーミングに関するプロバイダのルックアップキー
- 録音:providerInstanceId + ProviderExternalId を追加して、プロバイダの呼び出し履歴/ボイスメール行をイメージングアセットに戻します。 - PhoneVoicemail: isArchived + dateArchived をソフトフォンリストからソフトハイド用に追加 - RoleRightType: VOIP VOICEMAIL PERMANENT DELETE を追加 (決定的な削除をゲートします。アーカイブはすべて利用可能) - MinIOStorageService: openRange() + RangeStream を追加すると、オーディオ/ビデオエンドポイントは HTTP レンジを表彰できます。 - RecordingImagingService: スレッドプロバイダー id + 外部 ID を、RecordingMetadata をインジェストでレコード行に
· kamo-internal
履歴タブを追加 — 検索とフィルタを使用して監査タイムラインをペジネーション
- LeadHistoryPanel: バウンスされた検索で粘着フィルタツールバー、**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** - リードApi: getLeadHistory() と getLeadHistoryFilters() をフルクエリでサポート - LeadHistoryEntry、LeadHistoryActor、LeadHistoryFieldMeta、LeadHistoryPageResponse、LeadHistoryFiltersResponseタイプ - 次.js プロキシのルートは、************ と /filters です。 - 履歴タブが有効であるときのLeadViewClientは、LeadHistoryPanelをレンダリングするために有線
· SecurityService
GET /{id}/history と /{id}/history/filters エンドポイントを追加
バッチの俳優のローディング(N+1なし)と、パギン化、濾過、検索可能なリード履歴エンドポイント。 フィルタエンドポイントは、使用されるフィールド、すべてのレジストリフィールド、異なる俳優、およびすべてのイベントタイプを返します。 すべてのミューティングエンドポイントは、コールメンバーを俳優としてLeadHistoryServiceにアトリビューションに渡します.
· kamo-shared-library
リード履歴の監査ログを追加 — 組織、レジストリ、サービス、DTO、LeadServiceのホック
- リード履歴エンティティティティ(UID PK、プレーンロングFK — リード削除/変換を可能にするFK制約なし) - LeadHistoryEventType 列挙型ラベル - LeadHistoryFieldRegistry:~55の追跡された鉛分野のための真実の単一の源;分野を加えることは1ラインです - LeadFieldDescriptorレコード(キー、ラベル、カテゴリ、抽出器) - LeadHistoryService: スナップショット/ディフュージョンパイプライン、******************************** paginated+filtered findHistory、フィルタのドロップダウンのための明瞭なFields/Actors - ネストされたActorDTOが付いているLeadHistoryDTO;CockroachDB JSの精密安全のためのひものとしてシリアル化されたすべての長いID - リードサービス: 作成、更新、削除、代入リード、代入LeadAccount、unassignLeadAccountに履歴が引っ掛かります
· SecurityService
ワイヤー リードHistoryService 俳優は、LeadController にトラッキング
· kamo-internal
Add リードアカウントの割り当て UI、通貨システム、割り当て/新しいアカウントページ、設定通貨フィールド
· SecurityService
リードアカウントの割り当てエンドポイントを追加, CurrencyType の AccountController を更新
· kamo-shared-library
CurrencyType enum を追加し、CountryType を主要な通貨で更新し、アカウント/組織に通貨を追加し、LeadService にリードアカウントの割り当てを追加します
· kamo-internal
マイアカウントページタイトルの動的メンバータイプラベル
タイトルは「My {Member|Team Member} Account」を org-configured で読み込みます。 アクションラベル、メンバーの型が読み込まれると自動的に切り替えます.
· kamo-internal
Create Document ボタンを DocManager ツールバーに移動
ボタンは、アクションプロップを介して/doc/managerでのみ使用可能でした。 すべてのロジック(ステート、ハンドラ、DOC TYPES、メニュー)をDocManagerに動かす すべての埋め込みインスタンスに表示されます。 簡略化ページ.tsx へ わずか アクションプロップなしでDocManagerをレンダリングします.
· kamo-internal
メーリングアドレスを3列に移動し、リード情報とプライマリ連絡先
· kamo-internal
国際的サポート — 国選択, 言語選択, サブディビジョン あらゆる形態のフィールド
- 再利用可能なCountrySelect(207の国、フラグアイコン)、LanguageSelect(26の言語、フラグアイコン)、 SubdivisionField (フラグ付きの米国状態のドロップダウン、他の国ではラベル付きのテキストフィールドが表示されます) - 国の定数(countries.ts,language.ts, usStates.ts, timezones.ts)を追加 - リードビュー詳細タブ:/カードのインプレース編集と****************フィールド - 鉛は形態を作成します:限られたインライン リストを取り替える全国/サブディビジョン/タイムゾーンのドロップダウン - LabelManager の設定: セクション 8 のデフォルト言語 アドレスのフィールド - contactInfoStep (network は wizard を作成します): CountrySelect+SubdivisionField は、限られた選択を置き換えます - MyAccountTab: CountrySelect+Subdivision プレーンテキストフィールドを置き換える - type/leads.ts: 国とサブディビジョンフィールドを追加します
· kamo-shared-library
国際的なサポートを追加 — リード国/サブディビジョン/タイムゾーン、オーグ言語、CountryType isProvince
- CountryType: PROVINCE NAMESセット、isProvince()、getSubdivisionLabel() を追加 - 組織:言語(LanguageType)フィールドを追加 - リード:国(CountryType)、サブディビジョン(String)、タイムゾーン(TimezoneType)フィールドを追加します。 -********************は国、サブディビジョン、タイムゾーン文字列フィールドを追加します - LeadService.createLead:新しいフィールドを処理します。 デフォルト言語 + org設定からcountry - LeadService.updateLead:新しいフィールドを処理する -************************ は、言語のtouchedKeyハンドラを追加
· kamo-internal
ASSIGN LEADS 右, エージェントフィルタの未割り当てオプション, グリッドカラムのクリーンアップ
- ASSIGN LEADSの背後にある「Unassigned Leads」エージェントフィルタオプションを右にゲート - 'すべてのリード'は、権利なしでメンバーのために割り当てられたリードを除外します - 通り、プロダクト、源のコラムを取除いて下さい;プロダクト/源のフィルタードロップダウンを取除いて下さい - 会社のコラムを取除いて下さい;接触のコラムは会社の名前を示し、接触の名前に戻って落ちます - Vendorのコラムはプロダクトが付いているツールチップを示します–源の細部 - 日付の列は1週間プレフィックスをドロップし、170pxから140pxに縮小 - DateTimeDisplay: showWeekday prop (デフォルト false) を追加します
· kamo-shared-library
Add ASSIGN LEADS 右 (ID 137)CRMセクションの下
· kamo-internal
Add アサイン /leads/new の市場及び割り当てセクションに分野を向けるために
***************************************** からのアクティブなチームメンバーをマウント - アルファベット順にソートされた部門とメンバーによるグループメンバー - "Last, First" として名前をフォーマットします。最初のオプションは "Auto Assign / Unassigned" です。 - 注文セクションフィールド:リード市場、連絡先、ベンダー、製品、プロスペクトタイプ(すべてのlg = 4)に割り当てる - デッドアサインユーザーフィールドではなく、割り当てられたTeamMemberIdを送信するためにリードApi.tsを修正 - チームメンバーをリードタイプに追加する
· kamo-asterisk-support
アップロードマニフェストのアップロードでEmit recordAt + per-file拡張子
- Watcher:すべての放射された録音は、RecordedAtを、から派生しました マネージドのEPOCHセグメント ******************************** filename は、ボイスメール/レガシーファイルの mtime に戻ります。 - Grouper: CallBatch は、FileExtensions[] を並行して追跡できるようになりました。 file[] と、 バッチの全体的な RecordedAt (初期の脚の開始) へ。 脚のソートキーは、FinalizedAt を tiebreaker で記録します。 マスターレッグは決定的です。 - Uploader: manifest には、トップレベルの recordAt と per-file が含まれています。 拡張子。 ConversionService は、録画を書くために両方を消費します (date recorded, ffprobe からの長さ) と per-leg RecordingExt 行.
· ConversionService
記録メタデータを画像に渡す — ffprobe の長さ + マニフェスト解析
メニュー ffprobe -show entries format=duration を実行する マスター Opus/WebM で ms を返します。 0 = 不明(致命的ではない)。 -****************今すぐ: * 記録の長さを得るためにマスターのProperDurationMsを実行します。 * 録音のためのマニフェスト(kamo-asterisk-supportによって送信)をパースします と ファイルの拡張子/チャネルのデータ, 行をステージングするために戻って落ちる dateCreated とチャネル名は、古いペイロードの解析を行います。 *****************の日付に記録される渡して下さい、 lengthMs, 参加延長) へ RecordingImagingService なので、 新規録画+ RecordingExt行を記述できます.
· kamo-shared-library
Recording + RecordingExt のエンティティティティ、RecordingImagingService はそれらを書きます
- 新しい録音の実体(UUID ID、IMG ID、IS MASTER、IS VM、EXTENSION、EMBER ID、 LENGTH, DATE RECORDED, DATE CREATED [@CreationTimestamp経由DB-デフォルト]). 完成したボイスメールや、アップロードされた通話録音を1列にまとめました。 - 新規の録画エンティティティティ(UID ID、RECORDING ID、拡張子、EMBER ID、 IS MASTERは、 録音に参加したチャネルごとの1列。 マスターレッグは、IS MASTER=true のフラグが付けられ、他のすべてのレッグは false です。 -**************** は、RecordingMetadata を利用しています。 bundle (phoneServerInstanceId, dateRecorded, lengthMs, ), 参加拡張子)とパージストの記録 + 録音の行 Img/ImgDat と同じトランザクション。memberId は、脚ごとに解決されます。 お問い合わせ **************************************************************************** VOIP インスタンスを生成(unassigned 時にnull).
· kamo-internal
プラットフォーム管理カードを更新し、統一されたタブ構造にマッチする
2つのストールカード(組織のスタンドアローンページ+構成)をと取り替えて下さい 実際のタブに合った5枚のカード:一般、組織、VOIP、SMS、システム ユーザーと上級 - 正しい ?tab= パラメータに直接リンクするそれぞれ.
· kamo-internal
全幅グリッドレイアウトと、アドバンストタブから同期トリガを移動
- 完全な内容区域の幅を使用するためにVOIP及びSMSタブを再設計して下さい:パイプラインのstatsのスパン 上部の列、録音処理とグローバル同期スケジュールは、サイドバイサイド lg+のブレイクポイントの2列の格子で - パイプラインスタットカードは、ゼロステートチェックマークとエラーでライブカウントを表示します 色コーディング; サブタイトルで指摘される30秒毎に自動refresh - グローバル同期カードはスケジュール設定、最終同期タイムスタンプ行を統合します。 1つのパネルに手動トリガー。ヘッダーの有効/一時チップ - 上級タブから「Force Global VOIP sync」を移動(トリガーの重複) 既にVOIP及びSMSで提示して下さい; 上級タブではプレースホルダーテキストが表示されます
· kamo-internal
組織を統一タブ nav で構成ページに移動
- 組織をタブとして追加**************************** (一般・組織・VOIP・SMS・システムユーザー・上級注文) - 削除****************スタンドアローンページ - 設定StatusWindow でプラットフォーム管理 nav を更新して、設定を指すサブ項目として、すべての 5 タブをリストします。?tab=... - すべてのタブのレイアウトを修正:一貫したp:{xs:2、sm:3}パディングにより、コンテンツをカードウォールに実行しません - アイコンの背景とタイポグラフィのリズムでGeneralTabスタットカードを改善 - 更新 タイトル/サブタイトルの統一ページ
· kamo-marketing
Add Go logo to BUILT WITH banner
· kamo-internal
表面 PHONE SERVER ID を電話の指示 タブに
FreePBX ホスト上での kamo-asterisk-support を設定する演算子は、貼り付ける必要があります 一致するVoipProviderInstance UUIDはヘルパーのコンフィグファイルとして PHONE SERVER ID。 これまで、URLバーやURLバーをすり抜けるようになりました。 データベース。 /settings/features/phone/{id} の新しい "Phone Server ID" セクション 概要は、ワンクリックで読み取り専用のモノスペースフィールドでUUIDを示しています コピーボタン(CopyableIdFieldヘルパー、将来の同様の再利用可能な) 識別子).
· kamo-internal
インタラクションセンターのクリック可能なVOIP拡張は、数のプレフィルドでソフトフォンを開きます
