検索フィルタでスクロール可能な着メロリスト
着メロのカタログ パネルは右列の高さおよびスクロールに一致させます リストがオーバーフローしたときに垂直に、メンバーはより多くのトーンとしてナビゲートすることができます 追加します。 ラベルまたはファイル名でフィルタをフィルタリングする検索フィールドを追加します。 クリアボタンと空のメッセージ.
Dump WebRTC 状態が 5 秒後に確立された + すべての状態の変更を追跡
確立された時間のダンプはいつもmuted=trueの受信機を示します DTLSハンドシェイクとSRTPキーングはまだ完了していません。 「コール」を診断する 接続するが、オーディオがない」と、安定した状態からのデータが必要になります — 5 秒で 選択した ICE ペアでメディアが実際に流れているかどうかを知る必要があ...
カタログに7つ以上の着メロを追加
戦艦角、デモンホーン、ランドライン、1985 リング、オフィスの電話を加えて下さい、 /public/sounds/ringtones/およびワイヤーの下のリング古い電話およびOl それらが RINGTONE CATALOG に含まれているので、それらは既存の デフォルト / Sci-Fi / Buzzer / Rin...
Sci-Fiとブザーの着メロをカタログに追加
/public/sounds/ringtones/の下の2つの新しい着メロのアセットを低下させ、 それらを RINGTONE CATALOG に登録して、着信音に表示 subtab はデフォルトの着信音のトーンとして設定できます.
ブラウザ ICE が双方向に完了できるように STUN の設定
SIP 層で接続された 2 パーティ ブラウザーにブラウザー コールを呼び出しますが、 いいえ 可聴周波方向。 ボイスメール(片道Asterisk→ブラウザ)機能 Asteriskのsymmetric-RTPフォールバックがブラウザを学習できるため 任意のインバウンドパケットからアドレス。 両サイドの2つのパーティーブ...
Dump WebRTC negotiation state on Established
To diagnose "call connects but no audio between parties", log the peer-connection state (ice / dtls / signaling) along with sender and receiver tracks (kind / e...
ロード・インタールプ、中心のスピンナー、アウトバウンド・リングバックを生き残るライブ・オーディオ
インコールオーディオパスの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 に...
3列のオーディオレイアウト、保存バナーをドロップし、幅を埋めます
音声サブタブをマイクとしてレイアウト | スピーカー | 上級 lg+ 画面のフル行(md はまだ 2 アップ、xs スタックをペアリング)。 ザ・オブ・ザ・ 高度なカードは、より狭い列内の垂直スタックに切り替えます。 「自動保存された設定」のフッターを削除 — 行動は暗黙であり、カードはただスペースを取っていました...
AV の設定を Audio/Video/Ringtones サブタブに分割
Audio/Videoタブを3つの内部サブタブに再構成し、 水平方向に各設定がビューポート内で収まるので、 私たちが前にいた垂直スクロールの壁。 また、実際の点で指すために着信音のカタログを固定します /sounds/ringtone.mp3 資産の代わりに phantom パスの下 /sounds/ringtone...
オーディオ/ビデオ設定タブとワイヤをソフトフォンに追加
デバイスごとのAV設定ストア(ローカルストレージ、機械固有の)を追加します。 /settings/member/<id> のフル機能のタブを roaming しない マイク、スピーカー、リンダ、カメラの構成とテスト Softphone ツールウィンドウ、着メロ再生、SIP SDK アダプター これらの設定を敬う: s...
自動ポップアップ+インバウンドコールの着信音によるSIPセッション
ポップアップツールウィンドウが開いている間にのみ登録するソフトフォン — 閉じて、インバウンドコールは静かに見逃されました。 セッションを上げる AuthenticatedToolWrapper に搭載されているSoftphoneProvider なので、SIP レジスターは オペレータが署名され、任意のインバウンドI...
Dialpad のデジタルは接触装置に今登録します
OnTouchStart と両方で e.preventDefault() と呼ばれるダイヤルパッドボタン オンタッチエンド これにより、合成クリックイベントの実行からブラウザを停止します タッチを追ったので、onClick={handleDialpadClick} は実行されません。 タブレットとキーをタップすると、数...
Seed pbx.k1.kluster.kamocrm.com 静的ドメインとして
ブラウザのソフトフォンは、SIP-over-WSSがホスト名に実質的に上陸する必要があります TLSの証明書。 FreePBX 管理者/WS ホスト名を STATIC DOMAINS に追加して、 auto-cert のシーダーのプロビジョニングは 1 ホストの Cert を暗号化しましょう Traefikアクセスログ...
ホストブラウザ内部.kamocrm.com上のSIP WSS (実際の証明書)
ブラウザは、WebSocket接続を拒否しました。 Traefikが自己署名されたデフォルト証明書を提供していたため、コード1006を閉じる そのホスト名(Let's Encrypt の cert によってカバーされていない) 他のkamocrm.comエンドポイント)。 curl はテストしたからのみ機能していた -...
Org config.json からの動的タイトルと説明
Title.html のインライン JS は、ホスト名からテーマの CDN パスを導き出します。 fetches config.json は、タイトルを "Meets - {siteNameShort}" に設定します。 org 説明フィールドからメタタグを記述します.
HTML の頭部の org の短い名前そして記述を使用して下さい
Org-API ベースのタイトルロジックを config.json siteNameShort で置き換える "Register - {siteNameShort}" という他のサイトと同じパターンに続いています。 config.json から記述メタタグを追加します。 未使用の useThemeConfig インポー...
HTML の頭部の org の短い名前そして記述を使用して下さい
DynamicMetaLoader はドキュメントを "Login - {siteNameShort}" に設定します。 org の説明をメタの説明タグに書きます。 静的 layout.tsx フォールバック更新。ハードコードされた KamoCRM OG/Twitter メタデータを削除します.
HTML の頭部の org の短い名前そして記述を使用して下さい
DynamicMetaLoader は、siteNameShort に document.title をセットしました(siteName を呼びます) org の説明をメタの説明タグに書きます。 静的 layout.tsx フォールバックは、一般的な値に更新されます.
Config.json に org の説明を含める
BuildConfigJson() に説明フィールドを追加し、org.getDescription() を渡します。 writeConfigFiles() から、 それらは config.json が org's を継承します。 HTMLメタタグで使用するフロントエンドの記述.
マーケティングライブチャットとメンバーのための独立した地球の存在
パブリック チャットウィジェットのチケットは、オーガナイザーをrequestorIdとして保持します。 これらの行のメディアセッションの存在。 社内・その他のチケット利用会員 プレゼンス(補足としてセッション)ので、kamo-internalの要求者ショー 認証されたチャットWSが立ち上がるときにオンラインで.
パイプsip.js initは、ビーコンを介してサーバーログにステップ
ブラウザ側 SDK の init の失敗は、現在見えない — ポップアップだけ 「電話SDKが初期化できなかった」というメッセージがないと、WebSocketは決して 開くと、DevToolsの出力はありません。 /api/softphone-debug ビーコンを追加 ブラウザのPOSTをログアウトし、SipJsPh...
公共サポートのための定期的なSTOMPプレゼンスハートビート
パブリックセッションの存在下でRedis TTLをリフレッシュし、エージェントは正確なオンライン状態を確認できます.
Globeは、マーケティング訪問者のためのメディアセッションプレゼンスを使用しています
パブリックチャットセッション GUIDs をプレゼンススナップショットでリクエストします。 セッションまたはリクエストメンバーが接続されています。 ハンドルのスナップショットの封筒および sessionGuid deltas on /topic/プレゼンス.
RedisのセッションGUIDによるパブリックサポートチャットの追跡
マーケティング訪問者は、/ws/public-chat-native をメンバーなしで使用しています。 orgのプレースホルダーメンバーのリクエストを参照。 導入事例|PUBLIC パブリックSTOMP接続/接続解除、放送セッション/トピック/プレゼンスに関するキー、 そして、requestor-snapshotからm...
Surface SIP.js init/transport errors to browser console
Empty "Phone SDK failed to initialize" messages were hiding the actual failure from sip.js. Turn on logBuiltinEnabled so the library writes its transport / regi...
メタデータが不足しているプロバイダからの同期にメンバーの割り当てを拭かないでください
メニュー 不条件上書き PhoneExtension.assignedMemberId は、プロバイダが返した内容です。 フリーPBX (カモ会員が拡張を所有しているか追跡しないプロバイダー) listExtensions() で、resh=true 呼び出しや 同期は、すべてのメンバーの割り当てを静かにクリアします。...
Add リードにポップアップと会社名を販売するためにincludeCompanyを追加します
市場追加/編集ポップアップ(LeadMarketManager): - 無線制御「会社名を追跡」/「個人専用」(必須) - デフォルトは新しい市場で設定解除します。編集時に事前に入力します - create/update リクエストでincludeCompanyとして検証および送信 リードデータグリッド(LeadMa...
Include company と company name カラムを追加
LeadCompanyColumnRunner (オーダー40) は、 -鉛 markets.include company(BOOLEAN、nullable) — かどうかを追跡 市場は鉛の会社名を要求します - lead.company name(VARCHAR(50)、nullable) — 会社の名称を格納 市...
Expose には、intake-config および Market-config 応答の企業が含まれます
メニュー メニュー 現在、includeCompany フラグが含まれているので、フロントエンドは表示するかどうかを知っています リード作成の会社名フィールド.
リードにadMarketとCompanyNameを追加
- LeadMarket の実体はinclude company (ブーリアン、nullable) を得ます - リードエンティティティは、Company nameを取得します(文字列、最大50、nullable) - LeadMarketDTO, CreateLeadMarketRequest, UpdateLead...
ビューモードでプロバイダ名を表示 + 編集ドロップダウンの独自の拡張
2つのバグ 1. モードを見ると、生の UUID をダンプ — "Instance 32f520b0-347a-..." — インスタンスリストは handleVoipEdit() 内でのみ読み込まれました。 ロードインスタンス マウントの VOIP config と一緒に、割り当てられたインスタンス 名前は解決しま...
ExtensionDto.assignedMemberIdを文字列としてシリアライズする
jSの安全な整数範囲(例:1168485658174423046の往復として 1168485658174423000 JSON番号がブラウザに当たると フロントエンド 既にこのフィールドを `string | null` と `String(mid) と比較して、 ====memberID`、しかしジャクソンのシリアラ...
/namesエンドポイントに診断ロギングを追加
ログorgId、メンバーカウント、およびパーメンバーの名前の解像度を診断する 割り当てられたメンバーの名前が正しく解決しない理由.
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...
Add リード字幕のセールスタイプパスを表示する
市場の販売タイプとサブタイプを「追加」ラインに追加するので、 フォームは、編集市場ポップアップで使用されるラベルをミラーリングします メニュー レンダリングとして サブタイプが「{Market} (サービス > 住宅用住宅用住宅用住宅用住宅用住宅用住宅用住宅用住宅用住宅用住宅用住宅用住宅用住宅用住宅用住宅用住宅用住宅用...
実名/Last 名を display に優先します
usernameAliasは機能的にログインハンドル(多くの場合、ユーザー名と等しい)です。 表示名ではありません。 User.name (EmbNameFull) で、実際の人間が読める名前が住んでいます。 /name と /by-department エンドポイントの両方に適用します.
リードアクションをヘッダーに移動し、スティッキーバーをドロップします
右上のキャンセルボタンをプライマリで置換 リードアクションを作成する そして底の粘着性がある行為棒を完全に取除いて下さい。 バックIconButtonを追加 リードの左へ > 新しいリードパン粉なので、バックアクションは キャンセルボタンなしでアクセス可能.
Scope コンテンツ領域にリードスクロールとフッターを追加
フォームは minHeight: 100vh を既に使用していました。 calc(100vh - 56px)は、コンテンツがフィットしても外側のスクロールバーを強制します。 アクションバーも使用位置: 左で固定: 0 なので、拡張 NavPri サイドバーとページスクロールバーの後ろにある。 ページを高さに切り替える...