ドキュメント作成ボタンをすべてのログインメンバーに表示
Org の機能フラグチェック (isDocsEditor → isDocs → hasFeature DOCS) org の機能が非推奨のキータイプを使用しているため、false を返します。 ボタンは、有効なmemberId の任意のメンバーに表示されます。 バックエンドは、機能が利用できなくなった場合の認可を処理し...
フィールドレベルのフィルタとフローティングフィルタの行を削除します
すべての列フィルタとフローティングフィルタの入力行を無効化 グリッドは、列ヘッダーとデータ行のみを表示します。 また、フィルターを削除 列フィルタがないのでサイドバーからツールパネルを構成します.
アップロードボタンをDocManagerツールバーに移動する
アップロードトリガーは /doc/manager のページのアクションプロップにのみありました。 DocManagerが他のページに埋め込まれているとき、それを目に見えないようにします。 移動する 直接 DocManager のツールバーにアップロードボタンがあるので、常に コンテキストに関係なく存在します。 今冗長な...
埋め込まれた DocManager でオプションをアップロードできるようにする
タブコンテナをアップロードすると、オーバーフロー:hidden、ファイルごとのオプションをクリップ (説明、フォルダ、ドキュメントタイプ、アクセスレベル)高さ制約 埋め込まれたコンテキスト。 overflowY:auto に変更し、パディングを追加 MultiFileUploaderのルートなので、オプションは常に到達...
Fix 400フィードエラーとURLパラメータで通信サブタブを追加
ダブル修正? FeedEndpoint が既に導入済みのクエリーを含む MediaStream のバグ params しかし、 fetch は ?page=... ではなく、 &page=... を付加しました。 バックエンドが400で拒絶した誤ったURL。 すべてのプライマリタブ(?tab=)と通信用のURLクエリ...
エージェントフィルタのアイコンで「すべてのリード」の本当のメニュー項目を作る
- プレースホルダーの空の値項目を ALL に置き換える すべてのリードが選択されたときに空白を表示しません - グループ アイコンをすべてのリードと PersonOff アイコンに追加して、Unassigned リードに追加 - フィルタロジックを修正し、正しく ALL 値に割り当てられていない排除をゲー...
Conume *** 秘密のX-Internal-Authがダウンストリームサービスにマッチ
デーモンサービス → コンバージョンサービス メニュー DaemonServiceがそのスタンプを押下していたため、401を無許可に戻す INTERNAL AUTH SECRET の X-Internal-Auth ヘッダーを変換サービス中 に対して検証 メニュー (クラスター全体) 共有秘密の他のサービスの使用。 ...
Use @CreationTimestamp(source=DB) on ****************
The DB is the single source of truth for timestamps in this codebase. The canonical Hibernate pattern is @CreationTimestamp(source = SourceType.DB), which makes...
Let DB fill **************** via @Generated(INSERT)
INSERTs were failing with: null value in column "date_created" violates not-null constraint @ColumnDefault only declares the DB-side default for new rows; Hi...
Drop the [from-internal-custom] _X. catch-all that broke softphone calls
The catch-all exten => _X.,1 in [from-internal-custom] was intercepting every internal dial — softphones started reporting "phone is not registered" / calls wou...
Enable JPA repos for commerce + email + dao.repositories packages
ConversionService new pod CrashLoopBackOff with the same error DaemonService hit earlier: Parameter 0 of constructor in **************** required a bean of ...
Carve /api/voip/recordings/** out of the wildcard VOIP forwarder
The /api/voip/** catch-all in APIGatewayController was shadowing the dedicated VoipRecordingUploadController POST /api/voip/recordings/upload mapping when Sprin...
Write managed config files 0644 so the asterisk daemon can read them
The kamo-asterisk-support pod runs as root and writes to host-mounted **************** Asterisk inside the FreePBX pod runs as user "asterisk" and could not rea...
Envsubst 互換 \${VAR} 構文を config テンプレート + 固定プレースホルダに再レンダリングする
Pods は "config エラーで CrashLoopBackOff だった: API KEY が不足しているか、短すぎる" config テンプレートが literal API KEY マーカーを使っているので、 静かに触れない($VAR / \${VAR} のみ置換します)。 最初のデプロイ プレース...
Drop unused watcher import
uploader.go only uses CallBatch (declared in grouper.go in the same package), not anything from internal/watcher directly. Go rejects unused imports.
JPA の コマース + 電子メール + dao.repositories パッケージのリポジトリを有効にします
DaemonService が起動時にクラッシュしました: ****************のコンストラクタのパラメーター0 お問い合わせ 見つけることができないタイプ********************の豆。 最近追加されたkamo-sharedライブラリサービス(AppliedModelEnforcement...
MemberVoipConfigController で Lambda キャプチャの最終として newExtNumber をキャプチャ
newExtNumber は、(isVoipEnabled&&&...) が内部で条件的に再割り当てされます。 ブロックは、有効に終了しない。 TeamMember 同期ブロックが読み込まれる これは、コンパイラが拒否する Optional.ifPresent() の lambda の内部から行います。 ラムダの前に最...
欠落TS DOM型を迂回する音声の検出
responseActivityDetection は有効な WebRTC MediaTrackConstraints プロパティですが、 TypeScript の DOM lib から、ビルド時にタイプエラーが発生します.
ブラウザ ICE が双方向に完了できるように STUN の設定
SIP 層で接続された 2 パーティ ブラウザーにブラウザー コールを呼び出しますが、 いいえ 可聴周波方向。 ボイスメール(片道Asterisk→ブラウザ)機能 Asteriskのsymmetric-RTPフォールバックがブラウザを学習できるため 任意のインバウンドパケットからアドレス。 両サイドの2つのパーティーブ...
ロード・インタールプ、中心のスピンナー、アウトバウンド・リングバックを生き残るライブ・オーディオ
インコールオーディオパスの3つの調整された修正: 1。 RemoteAudio.play()のAbortError(制作コンソールで可視) "play() リクエストは新しいロードリクエストによって中断された"" は本物でした: スピーカーでゼロオーディオを意味しています。 各セッションが再割り当てられた 共有リモー...
Hangup tears down ALL live sessions, not just the primary
Self-call edge case left a session leaked: dialing your own extension creates an outbound session, then Asterisk loops the call back as a second inbound session...
Instant connecting feedback on outbound dial
Same problem the inbound Answer button had: clicking Call kicked off the SIP INVITE round-trip (1-3 seconds) but the button kept its idle "Call" appearance the ...
実際に再生するアニメーション+オーディオを接続する + 着メロロック解除
インバウンド・コール・パスの3つの調整された修正: 1. 受け入れている間視覚フィードバック。 両方のボタンを左に応答をクリック レスポンシブに見えるが、非応答性 — SDP 交渉は 1-3 秒かかります 呼び出しがライブされる前に、UI は何も表示しませんでした イベント SoftphoneState に isAc...
ToolDockの上のSoftphoneProviderをマウントするので、ツールウィンドウはそれを読み込むことができます
Softphone ポップアップを開くと、ページを「このページがロードできませんでした」でクラッシュしました。 ToolDockの内部にツールウィンドウがマウントされているため、ToolProvidersに住んでいます。 AuthenticatedToolWrapperのSIBLING。 SoftphoneProvid...
グリッドサイズプロップを使用して、AVパネルは行を埋めます
MUI v7 の Grid は flexbox-based なので、私が使用している GridColumn sx no-op — 自然幅でレンダーされたアイテムと左空のアイテム 右側のスペース。 サポートされているサイズのプロップへの切り替え (size={{xs: 12 md: 6, lg: 4 }}) 各パネルは実...
負荷のデフォルトにストールの着信音IDを移行
ユーザがAV設定を保存した場合、もはやそうでない着信音を参照 カタログに存在する(例えば「古典的」) トリミング)、選択したものと何もレンダリングされた着メロタブ softphone は着信音を効果的に持っていませんでした。 getAVSettings が検証できるようになりました RINGTONE CATALOG に...
Dialpad のデジタルは接触装置に今登録します
OnTouchStart と両方で e.preventDefault() と呼ばれるダイヤルパッドボタン オンタッチエンド これにより、合成クリックイベントの実行からブラウザを停止します タッチを追ったので、onClick={handleDialpadClick} は実行されません。 タブレットとキーをタップすると、数...
ホストブラウザ内部.kamocrm.com上のSIP WSS (実際の証明書)
ブラウザは、WebSocket接続を拒否しました。 Traefikが自己署名されたデフォルト証明書を提供していたため、コード1006を閉じる そのホスト名(Let's Encrypt の cert によってカバーされていない) 他のkamocrm.comエンドポイント)。 curl はテストしたからのみ機能していた -...
マーケティングライブチャットとメンバーのための独立した地球の存在
パブリック チャットウィジェットのチケットは、オーガナイザーをrequestorIdとして保持します。 これらの行のメディアセッションの存在。 社内・その他のチケット利用会員 プレゼンス(補足としてセッション)ので、kamo-internalの要求者ショー 認証されたチャットWSが立ち上がるときにオンラインで.
公共サポートのための定期的なSTOMPプレゼンスハートビート
パブリックセッションの存在下でRedis TTLをリフレッシュし、エージェントは正確なオンライン状態を確認できます.
Globeは、マーケティング訪問者のためのメディアセッションプレゼンスを使用しています
パブリックチャットセッション GUIDs をプレゼンススナップショットでリクエストします。 セッションまたはリクエストメンバーが接続されています。 ハンドルのスナップショットの封筒および sessionGuid deltas on /topic/プレゼンス.
RedisのセッションGUIDによるパブリックサポートチャットの追跡
マーケティング訪問者は、/ws/public-chat-native をメンバーなしで使用しています。 orgのプレースホルダーメンバーのリクエストを参照。 導入事例|PUBLIC パブリックSTOMP接続/接続解除、放送セッション/トピック/プレゼンスに関するキー、 そして、requestor-snapshotからm...
メタデータが不足しているプロバイダからの同期にメンバーの割り当てを拭かないでください
メニュー 不条件上書き PhoneExtension.assignedMemberId は、プロバイダが返した内容です。 フリーPBX (カモ会員が拡張を所有しているか追跡しないプロバイダー) listExtensions() で、resh=true 呼び出しや 同期は、すべてのメンバーの割り当てを静かにクリアします。...
ビューモードでプロバイダ名を表示 + 編集ドロップダウンの独自の拡張
2つのバグ 1. モードを見ると、生の UUID をダンプ — "Instance 32f520b0-347a-..." — インスタンスリストは handleVoipEdit() 内でのみ読み込まれました。 ロードインスタンス マウントの VOIP config と一緒に、割り当てられたインスタンス 名前は解決しま...
ExtensionDto.assignedMemberIdを文字列としてシリアライズする
jSの安全な整数範囲(例:1168485658174423046の往復として 1168485658174423000 JSON番号がブラウザに当たると フロントエンド 既にこのフィールドを `string | null` と `String(mid) と比較して、 ====memberID`、しかしジャクソンのシリアラ...
WebRTC 設定を有効化 pod の再起動
前のアプローチ (http custom.conf と [general] オーバーライド) はなかった AsteriskのINIパーサーが複数の名誉を認めないため、実際に効果を取る [general] セクションには、 docs が暗黙的に: enabled=no を含ま http additional.conf は...
Asterisk 組み込み HTTP サーバを有効にします。 :8089 WebRTC /ws
Res http websocket の上に chan pjsip の `protocol=ws` のトランスポートに乗る、 つまり、Asterisk の組み込み HTTP サーバを稼働させる必要があります。 ザ・オブ・ザ・ デフォルト FreePBX 17 は、そのサーバーが無効にされているので、SIP-over-W...
実名/Last 名を display に優先します
usernameAliasは機能的にログインハンドル(多くの場合、ユーザー名と等しい)です。 表示名ではありません。 User.name (EmbNameFull) で、実際の人間が読める名前が住んでいます。 /name と /by-department エンドポイントの両方に適用します.
Scope コンテンツ領域にリードスクロールとフッターを追加
フォームは minHeight: 100vh を既に使用していました。 calc(100vh - 56px)は、コンテンツがフィットしても外側のスクロールバーを強制します。 アクションバーも使用位置: 左で固定: 0 なので、拡張 NavPri サイドバーとページスクロールバーの後ろにある。 ページを高さに切り替える...
リードフォームを追加するためのスマートマルチカラムレイアウト
ページをトップレベルのグリッドに再構成し、セクションは水平に構成します 個々のフィールドをストレッチする代わりに: - マーケット&アサインは3色インテリア(市場 | ベンダー | 製品情報)を利用しています。 検査の種類とベストコンタクト 時刻のペアから半角まで - 第一次コンタクトおよび郵送先住所はlg+ (7/...
/api/security/members/name を割り当てられたメンバーの名前の解像度に使用する
実行中のエンドポイントフィルタは、アクティブなチームメンバーのみに、欠落します ベースメンバーまたは非アクティブメンバーへの割り当て。 /name に切り替える 状態に関係なくすべてのメンバーを返します.
フル幅 鉛の形態を加え、粘着性があるフッターのための整理
/leads/newで最大幅1200pxをドロップすると、フォームはページエリアに広がります。 粘着性がある行為棒がもはや重複しないので、およびバンプの最下のパディング 一番下にスクロールしたときに最後のフォームセクション.
分割エンドポイントの正しい優先度で表示名を解決
優先順位: Member.usernameAlias → user.name.formatFull() → user.alias → user.username