def populate_intercom_user(session_key, user_detail=None): """ Creates or updates an intercom user with information from itsyou.online Args: session_key (ndb.Key): key of the Session for this user user_detail (UserDetailsTO): key of the Session for this user """ intercom_plugin = get_plugin('intercom_support') if intercom_plugin: session = session_key.get() if not session: return assert isinstance(session, Session) assert isinstance(intercom_plugin, IntercomSupportPlugin) data = get_user(session.user_id, session.jwt) intercom_user = upsert_intercom_user(data.username, data) tag_intercom_users(IntercomTags.APP_REGISTER, [data.username]) if user_detail: message = """Welcome to the ThreeFold Foundation app. If you have questions you can get in touch with us through this chat. Our team is at your service during these hours: Sunday: 07:00 - 15:00 GMT +1 Monday - Friday: 09:00 - 17:00 GMT +1 Of course you can always ask your questions outside these hours, we will then get back to you the next business day.""" chat_id = start_or_get_chat(get_config(NAMESPACE).rogerthat.api_key, '+default+', user_detail.email, user_detail.app_id, intercom_user, message) deferred.defer(store_chat_id_in_user_data, chat_id, user_detail)
def store_iyo_info_in_userdata(username, user_detail): logging.info('Getting the user\'s info from IYO') iyo_user = get_user(username) api_key = get_rogerthat_api_key() user_data_keys = ['name', 'email', 'phone', 'address'] current_user_data = system.get_user_data(api_key, user_detail.email, user_detail.app_id, user_data_keys) user_data = dict() if not current_user_data.get('name') and iyo_user.firstname and iyo_user.lastname: user_data['name'] = '%s %s' % (iyo_user.firstname, iyo_user.lastname) if not current_user_data.get('email') and iyo_user.validatedemailaddresses: user_data['email'] = iyo_user.validatedemailaddresses[0].emailaddress if not current_user_data.get('phone') and iyo_user.validatedphonenumbers: user_data['phone'] = iyo_user.validatedphonenumbers[0].phonenumber if not current_user_data.get('address') and iyo_user.addresses: user_data['address'] = '%s %s' % (iyo_user.addresses[0].street, iyo_user.addresses[0].nr) user_data['address'] += '\n%s %s' % (iyo_user.addresses[0].postalcode, iyo_user.addresses[0].city) user_data['address'] += '\n%s' % iyo_user.addresses[0].country if iyo_user.addresses[0].other: user_data['address'] += '\n\n%s' % iyo_user.addresses[0].other if user_data: system.put_user_data(api_key, user_detail.email, user_detail.app_id, user_data)
def notify_new_referral(my_username, app_user): iyo_user = get_user(my_username) subject = u'%s just used your invitation code' % iyo_user.firstname message = u'Hi!\n' \ u'Good news, %s %s has used your invitation code.' % (iyo_user.firstname, iyo_user.lastname) send_message_and_email(app_user, message, subject)
def upsert_intercom_user(iyo_username, iyo_user_info=None): # type: (unicode, userview) -> User intercom_plugin = get_intercom_plugin() def _upsert(iyo_username, iyo_user_info): # type: (unicode, userview) -> User name = None email = None phone = None if iyo_user_info.firstname and iyo_user_info.lastname: name = '%s %s' % (iyo_user_info.firstname, iyo_user_info.lastname) if iyo_user_info.validatedemailaddresses: email = iyo_user_info.validatedemailaddresses[0].emailaddress if iyo_user_info.validatedphonenumbers: phone = iyo_user_info.validatedphonenumbers[0].phonenumber return intercom_plugin.upsert_user(iyo_username, name, email, phone) if iyo_user_info: return _upsert(iyo_username, iyo_user_info) else: try: return intercom_plugin.get_user(user_id=iyo_username) except ResourceNotFound: return _upsert(iyo_username, get_user(iyo_username))