この記事はバージョン Spring ’26 において執筆しています。
現在の動作と異なる場合がありますので、ご認識おきください。
皆さんは Messaging for In-App and Web (MIAW) の実装において、「拡張チャット(Enhanced Chat)」のバージョン選びに迷っていませんか? 「v2は新しいけど機能が足りないらしいから、とりあえずv1で」と考えているとしたら、その情報はもう古いかもしれません。
今回は、Spring ’26リリース時点での最新情報に基づき、拡張チャット v1 と v2 の技術的な違いと、なぜ今「v2一択」なのかを解説します。
エグゼクティブサマリー:パラダイムシフト
まず結論から言うと、v1からv2への変化は、単なるバージョンアップではありません。これは、「Web開発主導型モデル」から「マネージドランタイムモデル」へのパラダイムシフトです 。
- v1 (Standard): 従来のWeb開発のように、DOM操作やCSSオーバーライドに依存してUIを制御するモデル。人間同士のチャットツールとして発展しました。
- v2 (Enhanced): Salesforceが管理するランタイム上で動作し、セキュリティとAI統合を最優先するモデル。これは「AIエージェント(Agentforce)と協働するためのインターフェース」として再設計されています 。


技術アーキテクチャの徹底比較
表面的な機能の前に、深層にあるアーキテクチャの違いを見てみましょう。ここを理解すると、なぜv2で「CSSハック」が効かないのかが腹落ちします。
| 特徴 | 拡張チャット v1 (Standard) | 拡張チャット v2 (Enhanced) |
| コアスクリプト | embedded_svc.js | enhanced-chat.js |
| UIフレームワーク | Aura Framework | Lightning Web Components (LWC) |
| DOM操作 | 開発者が直接DOMやCSSを操作可能(Fragile) | Shadow DOMによりカプセル化(Stable/Secure) |
| セッション | クライアントサイド主導(タブ閉じると切断) | サーバー主導・永続的(タブを閉じても維持) |
「自由度」と「堅牢性」のトレードオフ
v1では <div> 要素として展開されるため、CSSで無理やり色を変えたり、JavaScriptでDOMを書き換えることが容易でした 。しかし、これはSalesforce側のアップデートで突然崩れるリスク(Fragility)と隣り合わせでした。
対してv2は、LWCとShadow DOMを採用しています。外部からのスタイル干渉を遮断するため、「CSSで無理やりデザインを変える」ことはできませんが、その分、セキュリティと将来の互換性が担保されています 。
Spring ’26の更新:機能ギャップの解消(パリティ)
「v2は待機時間が表示できないから採用できない」 これまでは、そんな声が現場で聞かれました。しかし、Spring ’26のリリースで状況は一変しました。
以下の表をご覧ください。初期に存在した機能ギャップは、Spring ’26によってほぼ完全に解消されています 。
| 機能項目 | 拡張チャット v1 | 拡張チャット v2 (Spring ’26以降) | 評価 |
| 待機時間表示 | 対応 | 対応 | Omni-Channel統計に基づき表示可能に |
| キュー順位表示 | 対応 | 対応 | 顧客の不安を解消する重要機能 |
| トランスクリプトDL | 対応 (PDF) | 対応 (PDF) | 会話終了後の記録保存が可能に |
| ユーザー認証 | 対応 | 対応 | IDトークンによる認証 |
| reCAPTCHA | 対応 | 対応 | ボット攻撃対策も完備 |
もはや、機能不足を理由にv1を選択する必要はありません。企業のIT部門は、純粋にアーキテクチャと将来性に基づいてv2を選択できる段階に達しています 。
正直な話、v2を導入するのは Spring ’26 になってからがおすすめです。
v2を選ぶ最大の理由:AgentforceとCustom Lightning Types
v2を選択する最大の動機、それは Agentforce との統合です。 特に Custom Lightning Types (CLT) は、v1では絶対に実現できないv2だけの特権です 。
チャットの中で「アプリ」が動く
v1のボットは、テキストや静止画、単純なボタン(Quick Replies)を返すのが精一杯でした。 しかしv2とCLTを組み合わせると、Agentforceはチャットのタイムライン上に インタラクティブな LWC をレンダリングできます 。
- 動的な座席予約: 映画館や飛行機の座席マップをチャット内に表示し、ユーザーが直接座席をタップして予約 。
- カレンダー連携: エージェントの空き時間をリアルタイム表示し、日程調整を完結 。
- 複雑なフォーム入力: ステップウィザード形式の入力フォームをチャットの吹き出し内で展開 。
これらは Schema.json で構造を定義し、 Renderer.json でLWCを指定することで、Salesforceのマネージドランタイム上で安全に描画されます 。
コンテキスト共有の進化:setSessionContext
Webサイト側の情報(カートの中身や現在のURL)をチャットに渡す方法も進化しています。 v1では隠しフィールドを使うハック的な手法が一般的でしたが、v2では正規のAPIである utlAPI (Utility API) が提供されています 。
実装コード例
以下のように、任意のタイミングでセッションコンテキストを更新できます。
// v2でのコンテキスト設定の実装例
embedded_svc.utils.setSessionContext({
"name": "_AgentContext",
"value": {
"valueType": "StructuredValue",
"value": {
// 現在のページURL
"currentPage": "https://example.com/checkout",
// カートの合計金額
"cartTotal": 15000,
// ユーザーセグメント情報
"userSegment": "VIP"
}
}
});
この情報はAgentforce Service Agentが即座に認識します。「決済ページでエラーが出ているVIPユーザー」であることをAIが理解し、先回りした対応が可能になるのです 。
移行ガイドと結論
v2への切り替え方法
v2にアップデートするのは簡単です。
[設定] > [組み込みサービスリリース] の組み込みサービスリリース設定で、[V2に切り替える] ボタンを押します。いつでもv1に戻せるから安心。


スクリプトの張り替え
外部サイトに組み込んでいる場合、移行にはスクリプトの張り替えが必要です。
- [設定] > [拡張チャット] で「Switch to Enhanced Chat v2」を選択、または新規作成 。
- Webサイト上の
embedded_svc.js(v1用) を削除。 - 新しく生成された
enhanced-chat.js(v2用) を配置 。- 注意: 両方のスクリプトを同一ページに混在させるとコンフリクトの原因になります 。
結論:迷ったら「v2」
v1を選択すべきなのは、以下の極めて限定的なケースのみです。
- IEなどのレガシーブラウザ対応が必須な場合 。
- DOM操作を伴う、製品仕様を逸脱した極端なUIハックがどうしても必要な場合 。
それ以外のすべての新規導入、および将来を見据えた改修において、v2が唯一の合理的選択肢です 。 Agentforceという新しい「頭脳」を活かすために、ぜひ最新の「身体(v2)」を用意してあげてください。
参考URL
拡張チャット v1 と拡張チャット v2 の比較|Salesforce Help
Streamline Enhanced Chat v2 Conversations with the Latest Improvements|Salesforce Spring ’26 Release Notes
Use Lightning Type Overrides in Enhanced Chat v2




読者の声