diff --git a/analytical/templatetags/intercom.py b/analytical/templatetags/intercom.py index f0f50d1..27e9047 100644 --- a/analytical/templatetags/intercom.py +++ b/analytical/templatetags/intercom.py @@ -66,6 +66,8 @@ class IntercomNode(Node): if 'email' not in params and user.email: params['email'] = user.email + params.setdefault('user_id', user.pk) + params['created_at'] = int(time.mktime( user.date_joined.timetuple())) else: diff --git a/analytical/tests/test_tag_intercom.py b/analytical/tests/test_tag_intercom.py index bc24739..754081c 100644 --- a/analytical/tests/test_tag_intercom.py +++ b/analytical/tests/test_tag_intercom.py @@ -26,21 +26,21 @@ class IntercomTagTestCase(TagTestCase): def test_node(self): now = datetime.datetime(2014, 4, 9, 15, 15, 0) - rendered_tag = IntercomNode().render(Context({ - 'user': User( - username='test', - first_name='Firstname', - last_name='Lastname', - email="test@example.com", - date_joined=now), - })) + user = User.objects.create( + username='test', + first_name='Firstname', + last_name='Lastname', + email="test@example.com", + date_joined=now, + ) + rendered_tag = IntercomNode().render(Context({'user': user})) # Because the json isn't predictably ordered, we can't just test the whole thing verbatim. self.assertEqual(""" -""", rendered_tag) # noqa +""" % {'user_id': user.pk}, rendered_tag) # noqa @override_settings(INTERCOM_APP_ID=None) def test_no_account_number(self): @@ -52,18 +52,21 @@ class IntercomTagTestCase(TagTestCase): def test_identify_name_email_and_created_at(self): now = datetime.datetime(2014, 4, 9, 15, 15, 0) + user = User.objects.create( + username='test', + first_name='Firstname', + last_name='Lastname', + email="test@example.com", + date_joined=now, + ) r = IntercomNode().render(Context({ - 'user': User( - username='test', - first_name='Firstname', - last_name='Lastname', - email="test@example.com", - date_joined=now), + 'user': user, })) self.assertTrue('window.intercomSettings = {' '"app_id": "abc123xyz", "created_at": 1397074500, ' - '"email": "test@example.com", "name": "Firstname Lastname"' - '};' in r) + '"email": "test@example.com", "name": "Firstname Lastname", ' + '"user_id": %(user_id)s' + '};' % {'user_id': user.pk} in r, msg=r) def test_custom(self): r = IntercomNode().render(Context({ diff --git a/docs/services/intercom.rst b/docs/services/intercom.rst index 700fc1e..5c9f250 100644 --- a/docs/services/intercom.rst +++ b/docs/services/intercom.rst @@ -120,6 +120,8 @@ Context variable Description -------------------- ------------------------------------------- ``intercom_email`` The visitor's email address. -------------------- ------------------------------------------- +``intercom_user_id`` The visitor's user id. +-------------------- ------------------------------------------- ``created_at`` The date the visitor created an account ==================== =========================================== @@ -130,7 +132,7 @@ Context variable Description Identifying authenticated users ------------------------------- -If you have not set the ``intercom_name`` or ``intercom_email`` variables +If you have not set the ``intercom_name``, ``intercom_email``, or ``intercom_user_id`` variables explicitly, the username and email address of an authenticated user are passed to Intercom automatically. See :ref:`identifying-visitors`.