Fin Messenger for Salesforceを使用している場合、Finが顧客の質問に答えられないときは、ワークフローにHand off to Salesforce agentステップを追加できます。これによりSalesforceでライブチャットが作成され、エージェントが引き継ぎ、ユーザーはFin Messengerで会話をシームレスに続けられます。Fin Messengerがデータをどのように扱うかはこちらのガイドで詳しく学べます。
FinはFinプラットフォームからすべてのPeopleおよびConversationデータ属性を自動的にSalesforceにプッシュします。このデータはSalesforceのオブジェクトに保存されず、Salesforceの会話中にこれらのイベントが発生した際にrouting attributesを通じて渡されます。
Create conversation – 会話が開始されたとき。
Post in app message – 新しい会話エントリが作成されたとき。
Upload a file – 会話でファイルが共有されたとき。
このデータをSalesforceライブチャットのフィールドにマッピングするには、Flowsを使用する必要があります。この記事では設定手順を詳しく説明します。
routingAttributesを使った事前チャットデータ
SalesforceはSalesforce In-App MessagingのためにroutingAttributes経由で事前チャットデータを期待しています。Salesforceのドキュメントはこちらで確認できます。
私たちはすべてのユーザー&会話データを含むJSONを生成し、Salesforce In-App Messaging APIを通じてリクエスト時にroutingAttributesに渡します。したがって、Hand off to Salesforce Agent ステップがトリガーされると、以下のようなJSONが事前チャットデータとして入ってくるはずです。
Example JSON
{
"_firstName": "John",
"_lastName": "Smith",
"_email": "john.smith.999@gmail.com",
"_subject": "Next",
"conversation_custom_data_Name": "John Smith",
"conversation_custom_data_Fin AI Agent: Preview": "false",
"conversation_custom_data_AI Tone of Voice": "Friendly", "conversation_custom_data_AI Answer Length": "Standard",
"conversation_custom_data_AI Pronoun Formality": "Let Fin decide",
"user_first_name": "John",
"user_last_name": "Smith,
"user_full_name": "John Smith",
"user_email": "email.john.999@gmail.com",
"user_user_id": "4a7a9b3d-951e-47d4-ae41-8e3f05a6969a",
"user_created_at": "",
"user_last_request_at": "2025-08-11 15:26:42 +0000",
"user_geoip_data_country_name": "United States",
"user_geoip_data_region_name": "Texas",
"user_geoip_data_city_name": "Dallas",
"user_geoip_data_timezone": "America/Chicago",
"user_browser_locale": "en",
"user_geoip_data_country_code2": "US",
"user_geoip_data_country_code3": "USA"
}
Note: パラメータ名を生成する際は以下のパターンに従います。
ユーザー属性の場合:
標準のシステム定義属性はuser_*で始まります。
カスタム属性の場合はuser_custom_data_*で始まります。
位置情報データは特別なケースで、user_geoip_data_*の下にネストされます。
会話属性の場合:
標準のシステム定義属性はconversation_*で始まります。
カスタム属性の場合はconversation_custom_data_*で始まります。
Salesforce Flowsで事前チャット属性を使う方法
Note: すでにフローが設定されている場合は、該当する設定手順に進んでください。
1. SalesforceでFlowsにアクセスする
Service Setupを開きます。
上部の検索バーにFlowsと入力します。
Process Automationの下にあるFlowsを選択します。
2. 新しいFlowを作成する
New Flowをクリックします。
Start from scratchを選択します。
Omni-Channel flowを選び、Createをクリックします。
3. 新しいリソースを作成する
Flow Builderの左ペインを開き、New Resourceをクリックします。
recordIdという名前の変数を作成します。名前が正確に一致していることを確認してください。
Available for inputにチェックを入れてください。そうしないと動作しません。
4. Route Work要素を追加する
+ボタンをクリックし、Route Workを選択します。
ラベルを追加します(例:
route_to_queue)。Record ID Variableには
recordId変数を選択します。サービスチャネルとしてMessagingを選び、ルートタイプとしてQueueを選択します。
Queueの下で、Messagingチャネルに接続されたサポートキューを選択します。
5. Flowを保存して有効化する
6. Omni-Channelルーティング設定を更新する
Setup > Messaging Settings > Omni-Channel Routingに移動し、以下を更新します。
Routing type: Omni-Flow
Flow definition: 新しいフローを選択します。
Fallback Queue: ステップ4Cと同じサポートキュー
7. カスタムパラメータを追加する
Custom Parametersの下にパラメータを追加します。
Tip: 設定全体で命名規則(snake_caseまたはcamelCase)を一貫して使用してください。
8. パラメータマッピングを追加する
簡単にするために、パラメータ名と同じFlow Variable Nameを使用します。
デフォルトのパラメータにはFirst Name、Last Name、Email、Subjectが含まれます。
9. パラメータを表示されるプレチャットフィールドとして追加する
Embedded Service Deploymentsに移動し、デプロイメントを開きます。
Pre-Chat Formを開き、パラメータを表示されるフィールドとして追加します。
デフォルトのフィールドは右側にリストされています。
Customモーダルからカスタムフィールドを追加し、フィールドタイプとしてTextを選択します。
10. 変更を保存して公開する
重要: Pre-Chat Formのすべての変更は、Embedded Service Deploymentページで公開する必要があります。保存だけでは更新は適用されません。
11. 設定を確認する
属性が正しく渡されていることを確認するには:
Object Managerに移動します。
Messaging Sessionを開き、次にFields & Relationshipsを選択します。
各パラメータをカスタムのTextフィールドとして追加し、すべてが表示されていることを確認します。
各フィールドの変更を保存します。
12. Flowでカスタムパラメータの変数を追加する
Setup > Flowsに戻ります。
Flowエディタで、Parameter Mappingと同じ名前を使って各カスタムパラメータの変数を作成します。
Update Records要素を追加します:
オブジェクトとしてMessaging Sessionを選択します。
Id = recordIdでフィルタリングします。
各パラメータを対応するフィールドにマッピングします。
新しいFlowバージョンとして保存し、有効化します。
13. カスタムフィールドの自動入力を検証する
正しく設定されていれば、カスタムフィールドはMessaging Sessionの詳細ページで自動的に入力されます。
デバッグ用の会話イベント
Salesforce Flowが正常にトリガーされ完了していることを確認するには:
Analyze > Conversationsに移動します。
ハンドオフが開始または完了した時点を追跡するためにConversation eventsを表示します。
以下のイベントはSalesforce In-App Messagingのハンドオフを確認します:
Salesforce In App Messagingへのハンドオフが開始されました
Salesforce In App Messagingにハンドオフされました
Handed off to Salesforce In App Messagingをクリックすると、ルーティング属性とハンドオフ時にSalesforceに送信されたペイロードを表示するサイドドロワーが開きます。これにより、ハンドオフが正しく機能しているか確認し、失敗した遷移のトラブルシューティングが可能です。
よくある質問
Finはハンドオフ時にSalesforceにどのようなデータを送信しますか?
Finはハンドオフが発生すると、すべてのuserおよびconversationデータ属性をルーティング属性として送信します。これには標準のシステムフィールド、カスタムデータ、位置情報データが含まれます。受け取るJSONペイロードには利用可能なすべての属性が含まれ、Salesforce Flowを通じてマッピングできます。
FinはSalesforce内にデータを保存しますか?
いいえ。FinはSalesforceオブジェクトに直接データを保存しません。すべてのデータはライブチャットセッション中にルーティング属性を介して一時的に渡されます。
なぜSalesforceでカスタムパラメータが表示されないのですか?
パラメータが表示されない場合:
Flow内のparameter namesがFinのルーティング属性と一致していることを確認してください。
各変数がAvailable for inputにマークされていることを確認してください。
Embedded Service Deploymentへの変更を公開していることを確認してください(保存だけでは適用されません)。
Salesforceへのハンドオフが失敗した場合はどうなりますか?
ハンドオフが失敗した場合、Analyze > ConversationsのConversation eventsで確認できます。以下のラベル付きイベントを探してください:
Handoff initiated to Salesforce In-App Messaging
Handoff completed to Salesforce In-App Messaging
完了イベントがない場合は、Flowの設定またはSalesforceのルーティング設定を確認してください。
ハンドオフを本番環境で開始する前にテストできますか?
はい。ステージングまたはサンドボックス環境でHand off to Salesforce agentステップをトリガーして、Flowとフィールドマッピングが正しく機能することを確認してから本番環境で有効にできます。
FinがJSONに含める属性はどのように確認できますか?
Finは明確な命名規則に従います:
user_*はユーザー属性用ですuser_custom_data_*はカスタムユーザー属性用ですconversation_*とconversation_custom_data_*は会話属性用です
この記事のサンプルJSONを参照して、期待される構造を確認できます。

