アプリがほとんどページリフレッシュを行わず(つまり、クライアント側でコンテンツが入れ替わるがページリフレッシュは発生しない)、多数の非同期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のシャットダウン方法:
IntercomのJSスニペットまたは“boot”メソッドでユーザーのトラッキングを開始しているはずです。
ユーザーがIntercomからログアウトしたとき(またはアプリによって自動的にログアウトされたとき)、JavaScript APIの
Intercom('shutdown');を呼び出して、Intercomセッションを終了しクッキーをクリアしてください。該当する場合は、新しいセッションを開始するために
Intercom('boot', {app_id: 'YOUR_APP_ID'})を呼び出してください。
重要:コード内のapp_idを自分のworkspace IDに必ず変更してください。
Intercom('shutdown');メソッドは、別のユーザーのログインやログアウトエリアでのIntercom起動のために、Intercomを自動的にクリーンな状態にリセットします。
シングルページアプリでの本人確認の有効化
シングルページアプリで本人確認を有効にするには、boot呼び出しにuser_hash属性を追加してください。
アプリケーションでユーザー識別を実装する際は、以下の重要なガイドラインに従ってください:
ユーザーが認証されログインした後にのみ、Intercomにユーザーを識別してください。
ログインしていないユーザー(訪問者)には、設定にapp_idのみを含めてください。
ユーザー情報をハードコードせず、認証後に動的に常に設定してください。
詳細はこちらをご覧ください。
注意:Messenger Securityがない場合、usersはMessengerで過去14日間の会話履歴のみを閲覧できます。詳細はこちら →
