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 サイドバーとページスクロールバーの後ろにある。 ページを高さに切り替える...
ユニファイド PhoneSdk 対応 RingCentral + sip.js (FreePBX)
ソフトフォンのホックは無条件にリング セントラル網電話をインスタンス化するのに使用しました、 どの FreePBX のクレデンシャル シェイプで、SDK がハード コード化されているため RingCentralのWSSプロビジョニングフォーマット。 - 新しいPhoneSdkインターフェイスはprovider-agn...
ブラウザ用WSS-aware SIP認証
/api/voip/sip/credentials エンドポイントは、ブラウザー側で認証情報を返すようになりました。 SIP スタックは、WSS トランスポート、パブリックドメイン、wsServers URL を実際に使用できます。 - SipController は、メンバーのMemberVoipConfig を解...
ブラウザソフトフォン用のWSS WebRTCトランスポートを追加
Asterisk の chan pjsip は 0.0.0.0:8089 で普通の WebSocket の輸送を結合しました ************************でTLSを終了 (ポート 443) そのため、kamo-internalは、既存のワイルドカードの上にブラウザのソフトフォンを登録することができま...
リードフォームを追加するためのスマートマルチカラムレイアウト
ページをトップレベルのグリッドに再構成し、セクションは水平に構成します 個々のフィールドをストレッチする代わりに: - マーケット&アサインは3色インテリア(市場 | ベンダー | 製品情報)を利用しています。 検査の種類とベストコンタクト 時刻のペアから半角まで - 第一次コンタクトおよび郵送先住所はlg+ (7/...
/api/security/members/name を割り当てられたメンバーの名前の解像度に使用する
実行中のエンドポイントフィルタは、アクティブなチームメンバーのみに、欠落します ベースメンバーまたは非アクティブメンバーへの割り当て。 /name に切り替える 状態に関係なくすべてのメンバーを返します.
/names エンドポイントを state に関係なく、すべてのメンバーに対して id→name を返すようにします
実行中のエンドポイントフィルタは、アクティブなチームメンバーのみ、ただし拡張機能 割り当ては、ベースメンバーまたは非アクティブメンバーを参照することができます。 /name を使う 活動状態以上のカバレッジが重要であるID→nameの決断.
最もよい接触を作る 無料テキストフィールドを時間
モーニング/アフタヌーン/アベンディングのドロップダウンをアド・リードに置き換える テキスト入力で編集フォームを表示し、メンバーは特定のテキストを記述できます 窓(例:午後6時以降は平日の夕方) バックエンドの列と DTO は既に文字列なので、Java の変更は必要ありません.
フル幅 鉛の形態を加え、粘着性があるフッターのための整理
/leads/newで最大幅1200pxをドロップすると、フォームはページエリアに広がります。 粘着性がある行為棒がもはや重複しないので、およびバンプの最下のパディング 一番下にスクロールしたときに最後のフォームセクション.
/leads/newでリードフォームを追加
Refactor Add 専用ルートにページ内のマルチタブペインからリードを追加します。 /leads/new で直接リンクできます。 現在の市場は渡されます ?marketId= および前選択として。 リード市場、ベンダー、製品 必要はあります;接触は最初の/last/preferredの少なくとも1つを要求します ...
メニュー エンドポイント
SalesType、subType、および customForms を MarketId で返す Add リードフォームは、サブタイプフィールドとインテークカスタムフォームをレンダリングできます 最初にリードを作成することなく.
分割エンドポイントの正しい優先度で表示名を解決
優先順位: Member.usernameAlias → user.name.formatFull() → user.alias → user.username
