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

シングルページアプリでIntercomを統合する

製品がほとんどページをリフレッシュしない場合は、これらの手順でIntercomをインストールする必要があります。

対応者:Beth-Ann Sher

アプリがほとんどページリフレッシュを行わず(つまり、クライアント側でコンテンツが入れ替わるがページリフレッシュは発生しない)、多数の非同期JSがある場合は、顧客のデータを最新に保ち、すべての送信コンテンツ(メッセージ、ツアーなど)を受け取れるように、Intercomを少し異なる方法で統合する必要があります。

以下を推奨します:

まず、HTMLのhead要素にintercomのJSライブラリファイルを含めてください。

(function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic('reattach_activator');ic('update',w.intercomSettings);}else{var d=document;var i=function(){i.c(arguments);};i.q=[];i.c=function(args){i.q.push(args);};w.Intercom=i;var l=function(){var s=d.createElement('script');s.type='text/javascript';s.async=true;s.src='https://widget.intercom.io/widget/' + APP_ID;var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);};if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}}})();

重要:上記のコードスニペットをコピーする場合は、必ずworkspace ID(コード内ではAPP_IDと呼ばれます)を手動で変更してください。

次に、サイトにログインしたユーザーがいる場合(認証後でユーザーの詳細が利用可能な場合)、window.Intercom('boot', {user_data})を呼び出します。ここでuser_dataはユーザーに関するすべてのデータです。ユーザーを更新するために、毎回user_idおよび/またはemailを送信してください。これにより、ログインユーザーの詳細がIntercomに送信され、新しいメッセージがユーザーに表示されるか確認されます。

ログアウトした訪問者の例は次のとおりです:

window.Intercom('boot', {
app_id: 'abc12345',
custom_launcher_selector: '#my_custom_link'
});

重要:上記のコードスニペットをコピーする場合は、必ずworkspace ID(コード内ではAPP_IDと呼ばれます)を手動で変更してください。

ユーザーをログインさせるかユーザーに変換したい場合は、bootメソッドを変更してユーザー情報を含めてください:

window.Intercom('boot', {
app_id: 'abc12345',
email: 'example@example.com',
user_id: 'abc123',
created_at: 1234567890,
custom_launcher_selector: '#my_custom_link'
});

重要:上記のコードスニペットをコピーする場合は、必ずworkspace ID(コード内ではAPP_IDと呼ばれます)を手動で変更してください。

GoogleタグマネージャーでIntercomをインストールする

JavaScriptフレームワークでIntercomを使用する

シングルページアプリはしばしばJavaScriptフレームワークやライブラリで構築されます。Intercomはサードパーティパッケージ向けのメンテナンスまたはサポートされているJavaScriptフレームワークのリストを指定していません。


データやURLが変わったときにIntercomに通知する

アプリで使用する可能性のある2つの追加呼び出しがあります。

ユーザーのデータが変わった場合、またはページ読み込みなしでURLを何らかの方法で変更した場合は、window.Intercom('update', {user_data})を呼び出してください。ここでuser_dataはユーザーデータの変更セットです。

重要:update呼び出しはページリフレッシュをシミュレートし、Intercomが顧客に送信すべき新しいメッセージやツアーをチェックします。

変更されたものだけを含めればよく、すべてのユーザーデータを毎回含める必要はありません。ただし、user_idおよび/またはemailは必ず送信してください。

update関数の使用例(app_idを必ず変更してください):

  • ユーザーを通常通りに起動します:window.Intercom('boot', {app_id: APP_ID, email: 'someuser@example.com', apples: 1});

  • ユーザーデータが変更された場合、または「ページ」変更が発生した場合は、次のように呼び出します:window.Intercom('update', {email: 'someuser@example.com', apples: 2}); 新しいユーザーデータと共に。

重要:URLが変わるたびに「ping」を開始するには、新しいユーザーデータを含めてIntercom("update")を呼び出す必要があります。ユーザーデータが変わらない場合は、次のように現在時刻を'last_request_at'の値として送信できます:

Intercom("update", {last_request_at: parseInt((new Date()).getTime()/1000)})

URLが完全なページリロードなしで変わった場合、Intercom MessengerはURLの変更を自動的にIntercomに送信せず、URLに基づくメッセージの一致を行いません。

update呼び出しは、ユーザーごとにページあたり20回までに制限されており、制限を超えるとスロットリングされます。20回の呼び出しのクォータは30分ごとにリセットされます。ページのリフレッシュやリロードでリセットされます。

このため、Auto Messageをトリガーする可能性のあるユーザーデータの変更がIntercomに送信される場所でのみ更新することを推奨します。


セッションの終了方法

Intercomは、所有する任意の公開サイト(マーケティングサイト、ドキュメントサイト、開発者ハブなど)にIntercom Messengerを設置できます。ユーザーがログインしている間、これらの異なるサブドメイン間で会話の連続性を維持するために、ユーザーのブラウザにクッキーを設定します。このクッキーは1週間で期限切れになります。

共有コンピューターやブラウザーを他の人と使うユーザーは、クッキーが期限切れになるまで、最後にログインしたユーザーの会話履歴を見ることができます。このため、ユーザーのセッションが終了したとき(手動または自動ログアウト時)にIntercomを適切にシャットダウンすることが非常に重要です。

Intercomのシャットダウン方法:

  1. IntercomのJSスニペットまたは“boot”メソッドでユーザーのトラッキングを開始しているはずです。

  2. ユーザーがIntercomからログアウトしたとき(またはアプリによって自動的にログアウトされたとき)、JavaScript APIのIntercom('shutdown');を呼び出して、Intercomセッションを終了しクッキーをクリアしてください。

  3. 該当する場合は、新しいセッションを開始するためにIntercom('boot', {app_id: 'YOUR_APP_ID'})を呼び出してください。

重要:コード内のapp_idを自分のworkspace IDに必ず変更してください。

Intercom('shutdown');メソッドは、別のユーザーのログインやログアウトエリアでのIntercom起動のために、Intercomを自動的にクリーンな状態にリセットします。


シングルページアプリでの本人確認の有効化

シングルページアプリで本人確認を有効にするには、boot呼び出しにuser_hash属性を追加してください。

アプリケーションでユーザー識別を実装する際は、以下の重要なガイドラインに従ってください:

  1. ユーザーが認証されログインした後にのみ、Intercomにユーザーを識別してください。

  2. ログインしていないユーザー(訪問者)には、設定にapp_idのみを含めてください。

  3. ユーザー情報をハードコードせず、認証後に動的に常に設定してください。

詳細はこちらをご覧ください。

注意:Messenger Securityがない場合、usersはMessengerで過去14日間の会話履歴のみを閲覧できます。詳細はこちら →

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