def process_interrupts(customer, text): """ Processes user input for global, or user-specific process_interrupts that would preclude sending a message to the user. NONE should be treated as no relevant interrupts, so messaging can proceed empty string should be treated as a no-response to the user """ if customer and customer.get('stop', None): return "" if settings.Config.DO_NOT_DISTURB and customer and not customer.get('override', None): phone_number = customer['phone_number'].get('S', '') if "corgi" in text.lower() and not customer.get('wants_uptime_notification', None): message = render_template('txt/do_not_disturb_acknowledged.txt') emoji_customer.add_metadata(phone_number, 'wants_uptime_notification', 'true') return create_response(message) if customer.get('showed_disable_prompt', None): return "" emoji_customer.add_metadata(phone_number, 'showed_disable_prompt', 'true') message = render_template('txt/do_not_disturb.txt') return create_response(message) return None
def generate_freeloader_response(customer): phone_number = customer['phone_number'].get('S', '') if customer.get('showed_payment_prompt', None): return "" emoji_customer.add_metadata(phone_number, 'showed_payment_prompt', 'true') message = render_template('txt/pay_us_please.txt', site_url=settings.Config.SITE_URL, payment_url='/stripe', phone_number=phone_number) return create_response(message)
def test_add_metadata(self): phone_number = "Hiya" metadata = str(random.random()) assert metadata not in emoji_customer.get(phone_number) emoji_customer.add_metadata(phone_number, metadata, "whatever") customer = emoji_customer.get(phone_number) assert metadata in customer assert customer[metadata]["S"] == "whatever"
def get_supplement_messsage(customer_phone_number, message): """ Returns first matched supplement to the message or none if no supplements match. """ customer = emoji_customer.get(customer_phone_number) for s in list_of_supplements: if s.TriggerType == "messagecount": # TODO: Have a flag for user metadata that notes that they've been # marketed-to. Maybe change this to a name message_count = int(customer['message_count']['N']) if 'message_count' in customer else -1 trigger_count = int(s.Param) if ( message_count >= trigger_count and s.Name not in customer ): emoji_customer.add_metadata( customer_phone_number, s.Name, "true") return s.Text return None
def process_charge(): email = request.form['stripeEmail'] customer = stripe.Customer.create( card=request.form['stripeToken'], email=email ) amount = settings.Config.RECHARGE_PRICE stripe.Charge.create( customer=customer.id, amount=amount, currency='usd', description='Corji' ) phone_number = request.form['phone_number'] emoji_customer.modify_consumptions(phone_number, settings.Config.CONSUMPTIONS_PER_RECHARGE) emoji_customer.add_metadata(phone_number, 'email', email) return render_template('html/stripe/stripe_success.html')