チェンジログ
何が新しいの?
プラットフォームのすべての改良 それが出荷される
· VOIPService
VOIP config の TeamMember の PhoneWork 拡張機能を同期
· SecurityService
Backfill TeamMember 電話 スタートアップのMemberVoipConfig による Work 拡張機能
· kamo-internal
ワイヤーコールはプロバイダの抽象化による設定の終端に終り特色にします
- voipApi: CallFeaturesDto型、getCallFeatures() および setCallFeatures() API 呼び出しを追加 - useSoftphone: 読み込まれる****************の州を加えて下さい 起動時に API から、setCallForward/setAutoAnswer アクションは API 経由で持続します。 auto-answer 機能がアクティブなときにインバウンドコールにコールフォワードエフェクトがトリガー - SoftphonePanel:ローカルのみのコール機能の状態を取除いて下さい;ワイヤー呼出しのトグルおよび ソフトフォンのコンテキストへの番号入力; ワイヤ自動応答は、ソフトフォンのコンテキストにトグルします。 navボタンを「拡張A/Vの管理」に変更 設定 - オーディオスライダの同期は、すでにuseAVSettingsイベントバスを介して機能していた - 変更は必要ありません
· VOIPService
コール機能の追加 API — プロバイダーの抽象化による転送+自動answerの呼び出し
- CallFeaturesDtoとSetCallFeaturesRequest POJOsを追加する - ProviderCapabilities に callForward/autoAnswer フラグを追加 - デフォルトのgetCallFeatures/setCallFeaturesをPhoneProviderインターフェイスに追加する - RingCentral: 回答規則REST API(UnconditionalForwarding)による実装 - FreePBX: GraphQL addCallforward の変異による実装 - CallFeaturesController: GET/PUT /api/voip/calls/features — DB プライマリ、provider-native sync
· kamo-shared-library
MemberCallFeatures のエンティティティティとレポジトリを追加して、コールフォワードとオートアンサワー設定を追加します
· kamo-asterisk-support
初期コミット — FreePBX 録画 アップロード (GO)
腕時計 ******************** 完成したWAVの録音のため、 Asterisk UNIQUEID によるマルチリーグコール脚をグループ化し、各バッチをアップロード VOIP RECORDING UPLOADS-scoped を使用した APIService /api/voip/recordings/upload API キー。 ファイルは、プラットフォームがストレージを確認した後にのみディスクから削除されます。 boottrap は、Manager custom.conf 経由で AMI ユーザを idmpotently にプロビジョニングします。 インストールします。MixMonitor() per-channel hooks via Extensions custom.conf, その後、 Asteriskにダイヤルプラン/マネージャーモジュールを再ロードするように依頼してください。 両方管理されたブロック 明確にマークされたバナーによって囲まれているため、管理者のカスタマイズは生き残ります。 Dockerfile、k8s は k1m1 と k2m1 のマニフェスト (Deployment + ConfigMap + 秘密のテンプレート)、 **************** は残りの部分を映す プラットフォームの、スタンドアローンFreePBXホスト用の非技術的なREADME.txt.
· kamo-internal
VOIP RECORDING UPLOADSスコープ + 録画パイプラインカウンター/調整可能
- APIManager:新しい VOIP RECORDING UPLOADS スコープオプション (kamo-asterisk-support で使用) FreePBX では、ボイスメールをアップロードし、APIService 経由で録音を呼び出します。 - VoipSmsTab:4つのカウンター(ボイスメール)が付いている新しい「録画パイプライン」カード プロセス、プロセスへの呼び出し、エラーのボイスメール、エラーでの呼び出し) — 更新 30秒毎に**************************************** 新しい「録画」 voipVmBatchSize/voipCallBatchSize/voipPollSecondsの処理」カード チューニング - systemConfigApi:update() を拡張して、新しいtunables を送信し、recordStats() を追加します。 - タイプ/電話:システム構成 Dto は 3 つの新しい tunables を得る; VoipRecordingStatsDto を追加しました.
· SecurityService
システム構成の録音のstats +録音処理のtunables
メニュー 4つのカウンターを返す kamo内部設定 → プラットフォーム → 設定 → VoIP/SMS で公開 タブ (vmPending, callPending, vmError, callError). - PUT /api/security/system-config は voipVmBatchSize, voipCallBatchSize を受け付けています。 voipPollSeconds は DaemonService の録音プロセッサ tunables です。 - toDto() には新しいフィールドが含まれているため、フロントエンドはそれらを読み戻すことができます.
· DaemonService
RecordingProcessorJob + 新鮮なアップロードのためのNATSショートカット
- 新しい水晶仕事の録音ProcessorJobは毎分、独立したディスパッチを刻みます VM とコール バッチを同時に変換サービスに メニュー メニュー voipCallBatchSize}をキャップとして。 - 新しい録画受信した消費者は、voip.recording.received NATSの被験者に購読します 新しくアップロードされたコンバージョンサービスで生成され、すぐに実行されます。 連続した録画は、待ち時間ではなく秒単位で処理を開始 定期的な投票で。 - Configmap は daemon.jobs.recordings.cron と ******************** に話します.
· ConversionService
記録のingest + FFmpegの処理パイプライン
メニュー エンドポイントステージマルチパートのアップロード APIServiceをMinIO Bucketに転送する************************ UnprocessedRecording のステージング行を作成。 リトリートに没入する (phoneServerId、asteriskUniqueId) を使用します。 - 新しい********************エンドポイント(DaemonService) ドレイン列: ステージされたWAVをダウンロード, 単一のOpus / WebMにコール脚をミックス FFmpeg amix によるマスター、チャネルごとの WAVs のトランスコード VM RECORDING による RecordingImagingService による master およびアップロード (8) / CALL RECORDING (9) イメージアソックスタイプ. - タイムアウトで新しいFfmpegService wrapper(transcodeToOpusWebm / mixToOpusWebm) そしてtempfileのcleanup。 - NATSパブリッシャーは、すべてのステージのアップロードでvoip.recording.receivedを出すので、 DaemonServiceは、定期的なポーリングを短くすることができます。 - Dockerfile はランタイムステージ(高山 ffmpeg 船に ffmpeg をインストールします。 デフォルトでlibpus)。 - ConfigMap を公開 メニュー (共有クロスサービス) 内部コール シークレット) なので、新しいエンドポイントは APIService を認証でき、 DaemonServiceの呼び出し者.
· APIService
Kamo-asterisk-supportのアップロードのためのVoipRecordingUploadController
POST /api/voip/recordings/upload は、kamo-asterisk-support からマルチパートボディを受け入れます FreePBX ホスト上で実行します。 X-Api-Key が新しい VOIP RECORDING UPLOADS を検証 スコープ(************************ バリデーションキャッシュを再使用)、その後 マルチパートペイロード+メタデータヘッダ(X-Phone-Server-Id)を転送します。 X-Asterisk-Unique-Id、X-Recording-Kind、X-Primary-Extension)変換サービス メニュー
· kamo-shared-library
加工されていない記録ステージングエンティティティティ、ImgDatトラックトラック、録画イメージングサービス
- ImageAssocType ID の衝突を修正: VM RECORDING=8、CALL RECORDING=9 (were両方) MY DOCS を 4 で複製します。 - マスターの録音が運ぶことができるので、********************を追加 チャネルごとのOpus/WebMは既存のサムネイルの概念と追跡します。 - Opus-in-WebMコンテナにimageMimeType.AUDIO WEBM(audio/webm)を追加 変換パイプラインによって生成される。 - 新しい処理されていない録音(UID ID、IS VM、PHONE SERVER ID、EXTENSION、 Asterisk UNIQUE ID、IS PROCESSED、IS ERROR、ERROR MESSAGE、RESULT IMG ID、 DATE CREATED、DATE PROCESSED) のステージングエンティティティ + リポジトリ kamo-asterisk-support → ConversionService → DaemonService パイプライン。 - 新しい録画想像 マスターOpus/WebMマスターをイメージングにアップロードするサービス ImgDat.trackCount を介したチャネルごとの Opus/WebM トラックを使って。 - システム構成:voipVmBatchSize/voipCallBatchSize/voipPollSecondsを加えて下さい DaemonService の録音プロセッサのtunables のため.
· kamo-asterisk-support
初期コミット — FreePBX 録画 アップロード (GO)
腕時計 ******************** 完成したWAVの録音のため、 Asterisk UNIQUEID によるマルチリーグコール脚をグループ化し、各バッチをアップロード VOIP RECORDING UPLOADS-scoped を使用した APIService /api/voip/recordings/upload API キー。 ファイルは、プラットフォームがストレージを確認した後にのみディスクから削除されます。 boottrap は、Manager custom.conf 経由で AMI ユーザを idmpotently にプロビジョニングします。 インストールします。MixMonitor() per-channel hooks via Extensions custom.conf, その後、 Asteriskにダイヤルプラン/マネージャーモジュールを再ロードするように依頼してください。 両方管理されたブロック 明確にマークされたバナーによって囲まれているため、管理者のカスタマイズは生き残ります。 Dockerfile、k8s は k1m1 と k2m1 のマニフェスト (Deployment + ConfigMap + 秘密のテンプレート)、 **************** は残りの部分を映す プラットフォームの、スタンドアローンFreePBXホスト用の非技術的なREADME.txt.
· kamo-internal
完全に機能したSoftphoneContactsでmockの連絡先タブを置き換える
Softphone の連絡先をワイヤーで縛る新しい SoftphoneContacts コンポーネントを抽出します useContacts() を使用して、実際の連絡先 API にタブします。 4つのハードコードされたモックを取り替えて下さい すべての連絡先の本からライブデータと接触します。 特徴: - ブックとグループフィルタの丸薬をドロップダウンセレクター - 先発/先発/フルネームでソートされた検索 - 色分けされたアバターの初期(決定的なハッシュ)、写真サポート - ホバー・リード・クイック・コール・ボタンによる連絡先一覧 - 電話、電子メール、org、メモを示す詳細ビュー(リストを置き換える) - すべてのフィールドのインライン編集モード(phones/emails 複数値追加/削除) - 確認手順で連絡先を削除 - 空とスケルトンの状態をロードする - 「新規連絡先」は /contacts に移動しますか? アクション=作成 contacts/page.tsx を自動で開くように更新します。 ?action=create クエリパラメータは、(ソフトフォン「新規」ボタンで使用されます)存在します.
· kamo-internal
インターアクションセンターの横にあるインラインテキストでエクステンションチップを交換
· kamo-internal
手動電話延長フィールドを削除します。 保存時にSecurityServiceにVOIP拡張子を書き込みます
· SecurityService
電話ワークの拡張機能をバイパートメントレスポンスに含める。PUTメンバーのPhoneWorkExtensionを受け入れる
· kamo-shared-library
チームメンバーに****************ヘルパーを追加
· kamo-internal
ワイヤー VAD + プッシュツートーク; 不要な設定を削除
- vadEnabled は、buildAudioConstraints でボイスActivityDetection として渡されました。 ブラウザは、通話用にマイクを開くときにトグルを呼びます - pushToTalk はコールで mic を自動ミュートし、keydown/keyup をインストールします 設定されたホットキーが保持されている間、ミュートされていないリスナー - 機能配線のない設定を削除し、実装できない 標準的なブラウザによる WebRTC API: micGain (SIP パイプラインの GainNode 無し)、 HighPassFilter, NoiseGate, vadThreshold, hdVoice, cameraBackgroundBlur (requires ML), cameraBrightness/cameraContrast (CSS プレビューのみ) - AVSettings インターフェイスおよび DEFAULT AV SETTINGS をそれに応じてきれいにしました; 除去後のリバランスの取れたトグルグリッド
· kamo-internal
検索フィルタでスクロール可能な着メロリスト
着メロのカタログ パネルは右列の高さおよびスクロールに一致させます リストがオーバーフローしたときに垂直に、メンバーはより多くのトーンとしてナビゲートすることができます 追加します。 ラベルまたはファイル名でフィルタをフィルタリングする検索フィールドを追加します。 クリアボタンと空のメッセージ.
· kamo-internal
カタログに7つ以上の着メロを追加
戦艦角、デモンホーン、ランドライン、1985 リング、オフィスの電話を加えて下さい、 /public/sounds/ringtones/およびワイヤーの下のリング古い電話およびOl それらが RINGTONE CATALOG に含まれているので、それらは既存の デフォルト / Sci-Fi / Buzzer / Ringtones サブタブのサイレントオプション.
· kamo-internal
Sci-Fiとブザーの着メロをカタログに追加
/public/sounds/ringtones/の下の2つの新しい着メロのアセットを低下させ、 それらを RINGTONE CATALOG に登録して、着信音に表示 subtab はデフォルトの着信音のトーンとして設定できます.
· kamo-internal
3列のオーディオレイアウト、保存バナーをドロップし、幅を埋めます
音声サブタブをマイクとしてレイアウト | スピーカー | 上級 lg+ 画面のフル行(md はまだ 2 アップ、xs スタックをペアリング)。 ザ・オブ・ザ・ 高度なカードは、より狭い列内の垂直スタックに切り替えます。 「自動保存された設定」のフッターを削除 — 行動は暗黙であり、カードはただスペースを取っていました。 強制セクションカード パネルの幅: 100% と alignItems="stretch" を追加します。 各サブタブのGridにカードは必ずその列のエッジツーエッジを埋めます.
· kamo-internal
AV の設定を Audio/Video/Ringtones サブタブに分割
Audio/Videoタブを3つの内部サブタブに再構成し、 水平方向に各設定がビューポート内で収まるので、 私たちが前にいた垂直スクロールの壁。 また、実際の点で指すために着信音のカタログを固定します /sounds/ringtone.mp3 資産の代わりに phantom パスの下 /sounds/ringtones/ なので、プレビューといつものソフトフォンセッション 単一の大砲の着メロを共有して下さい.
· kamo-internal
オーディオ/ビデオ設定タブとワイヤをソフトフォンに追加
デバイスごとのAV設定ストア(ローカルストレージ、機械固有の)を追加します。 /settings/member/<id> のフル機能のタブを roaming しない マイク、スピーカー、リンダ、カメラの構成とテスト Softphone ツールウィンドウ、着メロ再生、SIP SDK アダプター これらの設定を敬う: setSinkId、getUserMedia を介してルーティングするデバイス 制約 (deviceId + EC/NS/AGC/sample レート), DTMF トーン ボリューム, リンガーデバイス+トーン選択、ミュートオンジョイント、デスクトップ通知.
· kamo-internal
自動ポップアップ+インバウンドコールの着信音によるSIPセッション
ポップアップツールウィンドウが開いている間にのみ登録するソフトフォン — 閉じて、インバウンドコールは静かに見逃されました。 セッションを上げる AuthenticatedToolWrapper に搭載されているSoftphoneProvider なので、SIP レジスターは オペレータが署名され、任意のインバウンドINVITE中に継続的に保持 オペレータの注意を取得します。. - app/hooks/useSoftphone.ts: 実装の名前を変更する useSoftphoneSession は、一度に正確にマウントする必要があります セッションごとに (SIP の資格情報と登録情報)。 -********************新しいSoftphoneProviderはセッションを実行します 一度、コンテキストを介して状態を調べ、hasIncoming に反応する 電話番号 トランジション — ツールを使用してソフトフォンツールウィンドウをポップアップ:カスタムイベントを開く (single-instance は、既に開いているかどうかだけに焦点を合わせます) タイトルは、ユーザまでループ上の /sounds/ringtone.mp3 を再生します。 受け入れ/拒否/リモートハングアップ。 パブリック useSoftphone() hook 読み込み コンテキストから。 -****************は、コンテキストにインポートを切り替えます。 -************************ ツールツリーをラップ SoftphoneProvider は、セッションが auth 状態の限り生きるようにします。 古典的なNAのcadence (440Hz + 480Hzの2s、4sの沈黙)そうAudio.loop=true 自然なリング/一時/リング パターンを収穫して下さい。 ~72 KB. ブラウザは、ユーザが gestured しているまで、初期 play() をブロックできます。 ページ; オペレータは、通常、呼び出し時に少なくとも一度クリックしました 到着するので、これは実際には問題ではありません.
· KlusterServices
Seed pbx.k1.kluster.kamocrm.com 静的ドメインとして
ブラウザのソフトフォンは、SIP-over-WSSがホスト名に実質的に上陸する必要があります TLSの証明書。 FreePBX 管理者/WS ホスト名を STATIC DOMAINS に追加して、 auto-cert のシーダーのプロビジョニングは 1 ホストの Cert を暗号化しましょう Traefikアクセスログに表示される代わりに、無条件に頼る。 証明書が発行されると、一時的な内部.kamocrm.com/voip-wsパス (ワークアラウンドとして前方に入室)を退職でき、ソフトフォンは canonical pbx.k1.kluster.kamocrm.com/ws URL を使用します.
· kamo-register
HTML の頭部の org の短い名前そして記述を使用して下さい
Org-API ベースのタイトルロジックを config.json siteNameShort で置き換える "Register - {siteNameShort}" という他のサイトと同じパターンに続いています。 config.json から記述メタタグを追加します。 未使用の useThemeConfig インポートを削除します.
· kamo-login
HTML の頭部の org の短い名前そして記述を使用して下さい
DynamicMetaLoader はドキュメントを "Login - {siteNameShort}" に設定します。 org の説明をメタの説明タグに書きます。 静的 layout.tsx フォールバック更新。ハードコードされた KamoCRM OG/Twitter メタデータを削除します.
· kamo-internal
HTML の頭部の org の短い名前そして記述を使用して下さい
DynamicMetaLoader は、siteNameShort に document.title をセットしました(siteName を呼びます) org の説明をメタの説明タグに書きます。 静的 layout.tsx フォールバックは、一般的な値に更新されます.
