File: //home/arjun/projects/buyercall/buyercall/blueprints/phonenumbers/__pycache__/tasks.cpython-310.pyc
o
�we�} � @ s� d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlm Z d dl
mZ d dlZd dl
mZmZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d d lmZ d d
lmZmZm Z! d dl"m#Z# d dl$m%Z% d d
l&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7 dZ8dZ9dZ:ee�Z;e#� Z<e;j=dd� �Z>e;j=dd� �Z?e;j=dd� �Z@e;j=dd� �ZAe;j=dd � �ZBe;j=d!d"� �ZCe;j=d#d$� �ZDe;j=d%d&� �ZEe;j=d'd(� �ZFe;j=d)d*� �ZGdS )+� N)�BytesIO)� AESCipher)�url_for�current_app)�lazy_gettext)� load_only)�create_celery_app)�_try_renderer_template)�send_ses_email)�CallStorage�subaccount_client�InboundCallState)�WebhookUtil)�db)�Phone)�Lead��Agent)�User)�Contact)�PartnershipAccount�Partnership)�get_available_agents�get_routing_agents�schedule_callback�get_agent_numberi i�Q � c K s� t jtjd tjd d�}t�d� tj�tj ��t
j��tj
|k��� }t
j�t
j
|jk��� }tj�tj
|jk��� }t| dd�}|sUt�d�|�� d|_tj�� t||�} t�d �t|��� d }
|j j}|sq|j jj}d
| _t|j|j
�}|D ]�}
z�t |
|�\}}|r�d�|�nd }| �!� �p | j"t#j$t#j%t#j&fv r�|j'j(||j)j*t+d||
j
dd
d�t+dt,|d �|
j
|dd
d�g d�|t-d�}
| �.|
j
|
j/� |
r�|r�t0j�t0j
|j1k��� }|r�|j2|
j
kr�|
j
|_2|
j3|_4tj�� ddl5m6} ||� W d � n 1 �sw Y W q} t7�y1 } zt�t8�9� � t�d�|
j
�� W Y d }~q}d }~ww |
d u �rAd|_tj�� d S d S )N�REDIS_CONFIG_URL�REDIS_CONFIG_PORT��host�portzParallel call task started.T)�
expand_groupsz+No agents are available to service lead {}.�missed�Calling {} agents...F�wwww{}z!twilio_inbound.agent_digit_prompt�https��lead_id�agent_id� _external�_schemez(twilio_inbound.agent_inbound_call_status� dialDigit��
dial_digitr) r( r* r+ )�ringing�answered� completed��to�from_�url�status_callback�status_callback_event�send_digits�timeoutr )�send_agent_push_notification�Error calling agent {}...):�redis�StrictRedis�celery�conf�log�debugr �query�join�partnership_accountr �partnership�filter�id�one�partnership_account_id�firstr �partnership_idr �warning�format�statusr �session�commitr �len�subscription�is_groupr �twilio_subaccount_sidr �lock�state�State�NEW�LEAD_ONHOLD�CALLBACK_PROMPT�calls�create�inbound�phonenumberr �str�
AGENT_TIMEOUT�push_agent_call�sidr �
contact_idr) � full_name�agent_assigned�!buyercall.blueprints.mobile.utilsr: � Exception� traceback�
format_exc)� agent_idsr( �routing�kwargs�redis_db�lead�partner_account�partner�agents�storage�callrR �
twilio_client�agent�agent_number� extension�digits�contactr: �e� r{ �I/home/arjun/projects/buyercall/buyercall/blueprints/phonenumbers/tasks.py�call_simultaneous, s�
���
��
��
���%���
�r} c K s t jtjd tjd d�}tj�tj��tj ��
tj| k��� }tj�
tj|j
k��� }tj�
tj|jk��� }|jj}|sC|jj j}t|j|j�}t|| �}|�� �* |jtjkru|jj|jtd| ddd�d� tj|_W d � d S W d � d S 1 s�w Y d S )
z�
If nobody has picked up in 30 seconds, redirect lead to a callback
prompt. See https://trello.com/c/Gbwmo0Ox/ for discussion.
r r r z#twilio_inbound.lead_callback_promptTr&