Exemple #1
0
def service_plan_description(request, responder):
    responder.frame['user'] = get_user_data(request.context['username'])
    responder.frame['service_plan'] = get_service_plan(responder.frame['user']['service_plan_id'])
    responder.reply(f"Ваш тарифний план {responder.frame['service_plan']['name']}.\n" +
                    f"{responder.frame['service_plan']['description']}\n" +
                    f"Вартість складає {responder.frame['service_plan']['price']} "
                    f"гривень на місяць.")
def turn_on_credit_processing(request, responder):
    if request.intent == 'confirmation':
        set_credit_flag(responder.frame['user']['id'], True)
        responder.reply('Послугу "Кредит довіри" підключено.')
        return
    if request.intent == 'abort':
        responder.reply('Зрозуміло. Чим іще ми можемо вам допомогти?')
        return
    if request.intent == 'repeat':
        turn_on_credit_continue(request, responder)
        return
    else:
        responder.frame['credit_process_count'] = responder.frame.get(
            'credit_process_count', 0) + 1
        if responder.frame['credit_process_count'] < 3:
            responder.frame['user'] = get_user_data(
                request.context['username'])
            responder.frame['service_plan'] = get_service_plan(
                responder.frame['user']['service_plan_id'])
            responder.params.target_dialogue_state = 'turn_on_credit_processing'
            responder.reply(
                'Перепрошую, я вас не зрозуміла.\n' +
                f'Ми можемо внести вам кредит довіри на суму {responder.frame["service_plan"]["price"]}'
                + f' до {str(datetime.now() + timedelta(days=10))[:10]}.' +
                f'Сплатити {abs(responder.frame["user"]["balance"]) + responder.frame["service_plan"]["price"]} грн '
                f'потрібно протягом 10 днів. ' +
                f'Вас влаштовують такі умови?')
            return
        else:
            responder.frame['credit_process_count'] = 0
            responder.reply(
                'Перепрошую, я вас не зрозуміла. Чим ще можемо вам допомогти?')
            return
Exemple #3
0
def balance_and_home_service_confirm(request, responder):
    if verify(request, responder, balance_and_home_service_confirm):
        return
    if request.intent == 'abort':
        responder.reply('На який день ви бажаєте викликати майстра?')
        responder.params.target_dialogue_state = 'balance_and_home_service_day'
        return
    if request.intent == 'confirmation':
        responder.frame['user'] = get_user_data(request.context['username'])
        day = responder.frame['balance_and_home_service_day']
        hour = responder.frame['balance_and_home_service_hour']
        call_home_service(responder.frame['user']['id'], day, hour)
        responder.frame['balance_and_home_service_day'] = None
        responder.frame['balance_and_home_service_hour'] = None
        responder.reply(
            f'Заявку на виклик майстра на {str(day)[:10]} {str(hour)[11:16]} створено.\nОчікуйте на дзвінок від майстра.'
        )
        responder.reply('Чим ще можемо вам допомогти?')
        return
    else:
        responder.frame[
            'balance_and_home_service_confirm_count'] = responder.frame.get(
                'balance_and_home_service_confirm_count', 0) + 1
        if responder.frame['balance_and_home_service_confirm_count'] < 3:
            day = responder.frame['balance_and_home_service_day']
            hour = responder.frame['balance_and_home_service_hour']
            responder.params.target_dialogue_state = 'balance_and_home_service_confirm'
            responder.reply(
                f'Повторіть, будь ласка, ви хочете викликати майстра на {str(day)[:10]} {str(hour)[11:16]}'
            )
            return
        else:
            responder.frame['balance_and_home_service_confirm_count'] = 0
            responder.reply('Зачекайте на з\'єднання з оператором.')
            return
Exemple #4
0
def no_internet(request, responder):
    if not responder.frame.get('verified', False):
        responder.params.target_dialogue_state = 'verify_service_number'
        responder.frame['return_to'] = no_internet
        responder.reply(
            f"Спочатку пройдіть верифікацію. Введіть 8 цифр вашого договору.")
    else:
        user = get_user_data(request.context['username'])
        balance = user['balance']
        repair = user['repair']
        if balance < 0:
            reply = f'Остання оплата на ваш рахунок була здійснена' + \
                    f' {user["last_payment_date"]} у розмірі {user["last_payment_amount"]} грн.' + \
                    f'Наразі ваша заборгованість складає {abs(balance)} грн.' \
                    f'Сплатіть, будь ласка, {abs(balance)} грн, щоб відновити послугу інтернету.\n\n'
            if not user['credit']:
                reply += f'Чи бажаєте ви дізнатися про послугу "Кредит довіри"?'
                responder.params.target_dialogue_state = 'get_credit'
            responder.reply(reply)
        elif repair:
            responder.reply(
                'Через технічні несправності інтернет у вас не працює.'
                ' Наші спеціалісти вирішать цю проблему якомога швидше.'
                ' Чи можемо ми вам ще чимось допомогти?')
        else:
            responder.reply("Зачекайте, ми з'єднаємо вас з оператором!")
def check_balance(request, responder):
    if not responder.frame.get('verified', False):
        responder.params.target_dialogue_state = 'verify_service_number'
        responder.frame['return_to'] = check_balance
        responder.reply(
            f"Спочатку пройдіть верифікацію. Введіть 8 цифр вашого договору.")
    else:
        balance = get_user_data(request.context['username'])['balance']
        responder.reply(f"Ваш баланс: {balance}")
def turn_on_credit_continue(request, responder):
    responder.frame['user'] = get_user_data(request.context['username'])
    responder.frame['service_plan'] = get_service_plan(
        responder.frame['user']['service_plan_id'])
    responder.params.target_dialogue_state = 'turn_on_credit_processing'
    responder.reply(
        f'Ми можемо внести вам кредит довіри на суму {responder.frame["service_plan"]["price"]}'
        + f' до {str(datetime.now() + timedelta(days=10))[:10]}.' +
        f'Сплатити {abs(responder.frame["user"]["balance"]) + responder.frame["service_plan"]["price"]} грн '
        f'потрібно протягом 10 днів. ' + f'Вас влаштовують такі умови?')
Exemple #7
0
def welcome(request, responder):
    responder.frame['greeted'] = responder.frame.get('greeted', False)
    username = get_user_data(request.context.get('username'))['username']
    if not responder.frame['greeted']:
        responder.frame['greeted'] = True
        if username:
            responder.reply(f'Вітаю, {vocalized_name(username)}!')
        else:
            responder.reply('Вітаю!')
    else:
        responder.reply([f'Слухаю вас',
                         f'Так-так, я вас слухаю',
                         f'Так, {vocalized_name(username)}, чим можу допомогти?'])
Exemple #8
0
def change_service_plan(request, responder):
    for e in request.entities:
        if e['type'] == 'service_plan':
            selected_plan = e['value'][0]
    if not responder.frame.get('verified', False):
        responder.params.target_dialogue_state = 'verify_service_number'
        responder.frame['return_to'] = change_service_plan
        responder.reply(f"Спочатку пройдіть верифікацію. Введіть 8 цифр вашого договору.")
    else:
        responder.frame['user'] = get_user_data(request.context['username'])
        responder.frame['service_plan'] = get_service_plan(responder.frame['user']['service_plan_id'])
        responder.params.target_dialogue_state = 'change_service_plan_selection'
        responder.reply(f"Зараз ваш тарифний план {responder.frame['service_plan']['name']}." +
                        f" На який тарифний план ви бажаєте перейти?")
Exemple #9
0
 def _dialog_step(request, responder):
     # if request.intent == 'abort':
     #     responder.reply('Зрозуміло. Чим ще можемо вам допомогти?')
     #     return
     responder.frame['user'] = get_user_data(
         request.context['username'])
     entity = None
     for e in request.entities:
         if e['type'] == entity_params['type'] and e[
                 'role'] == entity_params['role']:
             entity = entity_params['converter'](e['value'][0]['value'])
     if not entity:
         responder.frame[lock_name] = responder.frame.get(lock_name,
                                                          0) + 1
         if responder.frame[lock_name] < 3:
             responder.params.target_dialogue_state = entity_params[
                 'name']
             responder.reply(entity_params['prompt'])
             return
         else:
             responder.frame[lock_name] = 0
             responder.reply(entity_params['enter_fail_message'])
             return
     responder.frame[lock_name] = 0
     if entity_params['validator'](responder.frame, entity):
         responder.frame[dialog_lock] = 0
         if 'final' in entity_params:
             responder.frame[target_flag] = True
             if 'return_to' in responder.frame and responder.frame[
                     'return_to']:
                 responder.frame['return_to'](request, responder)
             else:
                 default(request, responder)
         else:
             responder.params.target_dialogue_state = entity_params[
                 'next_step']
             responder.reply(entity_params['next_step_prompt'])
     else:
         responder.frame[dialog_lock] = responder.frame.get(
             dialog_lock, 0) + 1
         if responder.frame[dialog_lock] > 3:
             responder.frame[dialog_lock] = 0
             responder.reply(entity_params['validation_fail_message'])
         else:
             responder.params.target_dialogue_state = entity_params[
                 'name']
             responder.reply(entity_params['validation_retry_message'])
def get_credit(request, responder):
    responder.frame['user'] = get_user_data(request.context['username'])
    if responder.frame['user']['credit']:
        responder.reply(
            'Послугу "Кредит довіри" уже підключено. Чим ще можемо вам допомогти?'
        )
        return
    if request.intent == 'abort':
        responder.reply('Можливо у вас є ще якісь питання?')
        return
    if request.intent in ['confirmation', 'get_credit', 'repeat', 'clarify']:
        responder.params.target_dialogue_state = 'turn_on_credit'
        responder.reply(
            'З послугою "Кредит довіри" ви можете відновити постачання інтернету одразу, '
            'а заплатити протягом 10 днів. Бажаєте підключити цю послугу зараз?'
        )
        return
    else:
        responder.reply(
            'Перепрошую, я вас не зрозуміла. Чим ще можемо вам допомогти?')
        return
Exemple #11
0
def show_balance(request, responder):
    if responder.frame['with_balance']:
        responder.frame['with_balance'] = False
        balance = get_user_data(request.context['username'])['balance']
        responder.reply(f"Ваш баланс: {balance}")