def test_find_all_read(self): # Iterate over through all conversations (read + unread) with a # user based on the users email for convo in Conversation.find_all(email=self.email, type='user', unread=False): self.assertIsNotNone(convo.id)
def setup_class(cls): # get admin cls.admin = Admin.all()[1] # get user timestamp = get_timestamp() cls.user = get_or_create_user(timestamp) cls.email = cls.user.email # send user message message_data = { 'from': { 'type': "user", 'id': cls.user.id }, 'body': "Hey" } cls.user_message = Message.create(**message_data) conversations = Conversation.find_all() user_init_conv = conversations[0] # send admin reply cls.admin_conv = user_init_conv.reply(type='admin', admin_id=cls.admin.id, message_type='comment', body='There')
def setup_class(cls): # get admin cls.admin = Admin.all()[1] # get user timestamp = get_timestamp() cls.user = get_or_create_user(timestamp) cls.email = cls.user.email # send user message message_data = { 'from': { 'type': "user", 'id': cls.user.id }, 'body': "Hey" } cls.user_message = Message.create(**message_data) conversations = Conversation.find_all() user_init_conv = conversations[0] # send admin reply cls.admin_conv = user_init_conv.reply( type='admin', admin_id=cls.admin.id, message_type='comment', body='There')
def test_find_all_unread(self): # Iterate over all unread conversations with a user based on the # users email for convo in Conversation.find_all(email=self.email, type='user', unread=True): self.assertIsNotNone(convo.id)
def fetch_new_conversation(context): cursor = table.get_item(Key={ 'project': 'intercom', 'id': 'conversation' }, AttributesToGet=['value']) if "Item" in cursor: max_id = cursor.get('Item').get('value') else: max_id = 0 events = [] for convo in Conversation.find_all(after=max_id): event = { 'assignee_type': None, 'assignee_id': convo.assignee.id, 'subject': convo.conversation_message.subject, 'author_id': convo.conversation_message.author.id, 'author_type': None, '_time': convo.created_at.isoformat("T"), '_user': convo.user.user_id or convo.user.email or convo.user.id } max_id = max(int(convo.id), max_id) events.append({ 'collection': context.get('collection_prefix') + '_conversation', 'properties': event }) response = requests.post(context.get('rakam_api_url') + "/event/batch", data=json.dumps({ 'events': events, 'api': { 'api_key': context.get('rakam_write_key') } }), headers={'Content-type': 'application/json'}) if len(events) == 0: return if response.status_code != 200: print('[event] Invalid status code from Rakam {} with response {}'. format(response.status_code, response.text)) else: print( "[event] collected {} events between {} and {}, new cursor is {}". format(len(events), events[0].get('properties').get('_time'), events[len(events) - 1].get('properties').get('_time'), max_id)) table.update_item(Key={ 'project': 'intercom', 'id': 'conversation' }, UpdateExpression='SET #keyval = :val1', ExpressionAttributeNames={'#keyval': 'value'}, ExpressionAttributeValues={':val1': max_id})
def test_conversation_parts(self): # INTERACTING WITH THE PARTS OF A CONVERSATION convo_id = Conversation.find_all(type='admin', id=self.admin.id)[0].id conversation = Conversation.find(id=convo_id) # Getting the subject of a part (only applies to email-based # conversations) self.assertEqual(conversation.conversation_message.subject, "") for part in conversation.conversation_parts: # There is a part_type self.assertIsNotNone(part.part_type) # There is a body self.assertIsNotNone(part.body)
def test_find_single_conversation(self): # FINDING A SINGLE CONVERSATION convo_id = Conversation.find_all(type='admin', id=self.admin.id)[0].id conversation = Conversation.find(id=convo_id) self.assertEqual(conversation.id, convo_id)
def intercom_conversations(): conversations = Conversation.find_all(open=True) print(conversations)
def test_find_all_closed_before_admin(self): for convo in Conversation.find_all(type='admin', id=self.admin.id, open=False, before=1374844930): self.assertIsNotNone(convo.id)
def test_find_all_closed_before_admin(self): for convo in Conversation.find_all( type='admin', id=self.admin.id, open=False, before=1374844930): self.assertIsNotNone(convo.id)
def test_find_all_closed_admin(self): # Iterate over closed conversations assigned to an admin for convo in Conversation.find_all( type='admin', id=self.admin.id, open=False): self.assertIsNotNone(convo.id)
def test_find_all_admin(self): # FINDING CONVERSATIONS FOR AN ADMIN # Iterate over all conversations (open and closed) assigned to an admin for convo in Conversation.find_all(type='admin', id=self.admin.id): self.assertIsNotNone(convo.id) self.admin_conv.id = convo.id
def test_find_all_closed_admin(self): # Iterate over closed conversations assigned to an admin for convo in Conversation.find_all(type='admin', id=self.admin.id, open=False): self.assertIsNotNone(convo.id)
def test_find_all_user(self): # FINDING CONVERSATIONS FOR A USER # Iterate over all conversations (read + unread, correct) with a # user based on the users email for convo in Conversation.find_all(email=self.email, type='user'): self.assertIsNotNone(convo.id)
def test_find_all_read(self): # Iterate over through all conversations (read + unread) with a # user based on the users email for convo in Conversation.find_all( email=self.email, type='user', unread=False): self.assertIsNotNone(convo.id)
def test_find_all_unread(self): # Iterate over all unread conversations with a user based on the # users email for convo in Conversation.find_all( email=self.email, type='user', unread=True): self.assertIsNotNone(convo.id)
def stuff_with_all_convos(): for admin in Admin.all(): # need to add unassigned since there will be a lot of those for convo in Conversation.find_all(type='admin', id=admin.id): print convo.id