Beispiel #1
0
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
Beispiel #2
0
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)
Beispiel #3
0
    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"
Beispiel #4
0
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
Beispiel #5
0
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')