メインコンテンツにスキップ

Fin Messenger:Salesforceポータルにメッセンジャーを埋め込む

SalesforceのウェブページにFin Messengerをインストールする手順を案内します。

Fin MessengerをSalesforce Experience Cloud(ポータル)サイトに追加し、サインインしたユーザーデータの送信をすべて設定で制御できます。Apexの編集は不要です。

注意:変更点(2026年6月):以前はJwtGenerator Apexクラスを編集してユーザー識別子や送信属性を選択するよう案内していましたが、これは本番組織では不可能です(Salesforceは本番環境でのSetup経由のApex編集を許可せず、パッケージクラスはアップグレード時に上書きされます)。現在はFin Messenger設定(カスタム設定)でこれらをすべて設定し、高度な場合はオプションのApexインターフェース(ステップ6参照)を使用します。


SalesforceのウェブページにFin Messengerをインストールする

1. Salesforceにパッケージをインストールする

SalesforceのウェブページにFin Messengerをインストールするために、カスタム設定定義を作成するパッケージを用意しました。

以下の手順を実行する前に、Salesforce環境にパッケージをインストールする必要があります。

または

2. SalesforceでFin Messengerの設定を行う

パッケージはApp ID、JWTシークレット、および(新たに)ユーザーデータ設定を保存するFin Messenger Settingsカスタム設定を追加します。


A) 設定を開く

  1. セットアップ > カスタム設定に移動します。

  2. Fin Messenger Settingsを開きます。

  3. 管理をクリックします。

  4. デフォルト組織レベルの値新規(または編集)をクリックします。

B) App ID — FinのSettings > Generalで確認し、App Idフィールドに入力します。
C) JWT Secret Key — FinのSettings > Fin Messengerで確認し、JWT Secret Keyフィールドに入力します。


これら2つが必須の値です。その他(ステップ6)は任意です。

3. コンテンツセキュリティポリシー(CSP)を設定する

  1. セットアップ > デジタルエクスペリエンス > すべてのサイト > (あなたのサイト) > ビルダー > 設定 > セキュリティとプライバシー

  2. セキュリティレベル緩和されたCSPに設定します。

  3. スクリプトの信頼済みサイトhttps://widget.intercom.iohttps://js.intercomcdn.comを追加します。

  4. セットアップ → 信頼済みURLにIntercomのURL/CSPディレクティブを追加し、CSPコンテキストすべてまたはExperience Builder Sitesに設定します。

4. Fin Messengerのブートスクリプトをポータルに追加する

<script>
window.addEventListener('finMessengerData', function (e) {
var data = e.detail || {};
window.intercomSettings = {
api_base: 'https://api-iam.intercom.io', // regional base — see table
app_id: data.appId,
intercom_user_jwt: data.jwt // omitted/null → boots logged-out
};
window.Intercom && window.Intercom('boot', window.intercomSettings);
});
</script>

リージョン

api_base

米国

https://api-iam.intercom.io

EU

https://api-iam.eu.intercom.io

オーストラリア

https://api-iam.au.intercom.io

5. Fin Messengerコンポーネントをページに追加する

  1. セットアップ > デジタルエクスペリエンス > すべてのサイト > (あなたのサイト) > ビルダー

  2. Fin Messengerコンポーネントをポータルページにドラッグします。

  3. サイトを公開します。

6. Finに送信するユーザーデータを設定する

すべてはFin Messenger Settingsレコード(ステップ2)で設定済みです。コード変更は不要です。フィールドを空欄にするとデフォルトのままになります。

フィールド

制御内容

空欄時のデフォルト

ユーザーIDフィールド

Finのuser_idとなるユーザーフィールド。

ContactId

属性フィールド

送信する追加属性(以下の形式)。

なし

会社IDフィールド

company.company_idとして送信されるユーザーフィールド。

省略

プロバイダクラス

高度:カスタム属性を返すApexクラス。

未使用

属性フィールドの形式

カンマ区切りのintercomKey:UserFieldペア:

  • コロンの左側 — Finが受け取るIntercom属性名(キー)。

  • コロンの右側 — 値を読み取るSalesforceユーザーフィールドAPI名

  • 素のフィールド名は小文字のフィールド名をIntercomキーとして使います。

  • カスタムフィールドはAPI名(__c)を使います。不明なフィールドは無視されます。

例:phone:Phone, job_title:Title, Department, plan:Account_Tier__cは以下を生成します:

{ "phone": "(555) 123-4567", "job_title": "Account Executive", "department": "Sales", "plan": "Enterprise" }

注意:nameemailuser_idは常に送信されます(ここには記載しないでください)。

高度:Apexによるカスタム属性

単一のユーザーフィールドで表現できない値は、独自のApexクラスでFinAttributeProviderを実装し、そのクラス名をプロバイダクラスに入力します(編集可能、組織内)。

global class MyFinAttributes implements finmessenger.FinAttributeProvider {
global Map<String, Object> injectFinCustomAttributes(User currentUser) {
Map<String, Object> attrs = new Map<String, Object>();
attrs.put('locale', currentUser.LanguageLocaleKey);
attrs.put('is_internal',
currentUser.Email != null && currentUser.Email.endsWith('@acme.com'));

// currentUser only has the configured fields — query anything else yourself
Contact c = [
SELECT AccountId, Account.Name, Account.Subscription_Tier__c
FROM Contact WHERE Id = :currentUser.ContactId LIMIT 1
];
attrs.put('plan', c.Account.Subscription_Tier__c);
attrs.put('company', new Map<String, Object>{
'company_id' => c.AccountId, 'name' => c.Account.Name
});
return attrs;
}
}
  • globalである必要があります(パッケージ名前空間を跨いで呼び出されます)。

  • currentUserにはステップ6で設定したフィールドのみが含まれます — 他はクエリしてください。

  • プロバイダのマップは最後にマージされるため、属性フィールドより優先されます。

  • 軽量に保ってください — メッセンジャーブート時に毎回実行されます(エラーは捕捉され、遅いクエリは起動を遅くします)。


よくある質問

FinのApp IDはどこで確認できますか?

Settings > Generalに移動してください。App IDはApp detailsセクションに記載されています。

JWT Secret Keyはどこで確認できますか?

Settings > Fin MessengerJWT Secret Keyをコピーしてください。

メッセンジャーが読み込まれない場合は?

CSP設定を確認してください。信頼済みスクリプトURLと信頼済みURLが正しく設定され、セキュリティレベルが緩和されたCSPに設定されていることを確認してください。

送信するユーザーデータを制限できますか?

はい、それはステップ6です。Fin Messenger設定でユーザーIDフィールド属性フィールド会社IDフィールドプロバイダクラスを設定してください。送信されるのはnameemailuser_id、および属性フィールドにリストしたものだけです。フィールドを空欄にすると送信データが減ります。

Apexを編集する必要はありますか?

いいえ、ステップ6の標準設定ではコード変更は不要です。Apexは独自組織で作成するクラスを使う高度なプロバイダクラスフックを選択した場合のみ必要です(パッケージApexではありません)。

Apexのコンパイルエラーはどう解決しますか?

  • Salesforceパッケージは標準オブジェクトとフィールドに依存しているため、コンパイルエラーはSalesforce組織内の孤立したApexクラスが原因の可能性があります。

  • そのような場合はインストール時に詳細オプションアコーディオンをクリックしてください。

  • パッケージ内のApexのみをコンパイルを選択してからインストールをクリックします。

こちらの回答で解決しましたか?