U
    Vc"                     @   s`   d dl Z d dlZd dlZd dlT d dlmZ d dlZd dlmZ d dl	m
Z
 G dd deZdS )    N)*)fields)CmfCallMixin)
TelphinAPIc                   @   s@   e Zd ZdddZdd Zdd Zdd	 ZdddZdd Zd
S )CmfPluginTelphinCALLINGc              	   C   s  t d| d|  |dkr\tjj||d |d dd ||d || d	}|j}|j}nT|d
krtjj||d |d ||d dd || d	}|j}|j}ntd| |	dg |
d|j|_|
d|j|_|d |_|d |_|d |_|d |_|d |_tjjt|d d tjjd|_|
d|j|_|d |_|d |_|d |_|jrv|jddgd |||fS )Nz_process_call call_status=z call_flow=inZCallIDZCalledNumberr      ZCallerIDNum)call_log_rawZcall_idcalled_number	call_flowZcaller_numbercall_statusZchanneloutuH   Неправильный параметр, call_flow "in" или "out": **Z	CalledDIDZCalledExtensionZCallerExtensionZ	CallAPIIDZCallerIDNameZ	EventTimei@B )ZtzZCalledExtensionIDZCallerExtensionIDZ	SubCallIDZ	EventTypeT)	only_datar   )gdebugmodelsZCmfChannelCallZprocess_callsplitZcallerZcalled	Exceptionload_fieldsgetZcalled_d_idZcalled_extensionZcaller_extensionZcaller_id_numr   Zcall_api_idcaller_id_namedatetimeZfromtimestampinttimezoneZutcZ
event_timeZcalled_extension_idZcaller_extension_idZsub_call_idZ
event_typeZ
is_changedsave)selfr
   r   r   channel_callcontactperson r!   +./modules/voip/models/cmf_plugin_telphin.py_process_call   sR      







zCmfPluginTelphin._process_callc                 K   sL   |  ||\}}}|jj|d< |jjj|d< |jj|d< td||gd |S )u  
        Отправляем на фронт событие о звонке
        {'CalledExtension': '03255*100@sipproxy.telphin.ru', 'CalledExtensionID': '548632',
        'CallerExtension': '03255*099@sipproxy.telphin.ru', 'CallerExtensionID': '544289',
        'EventType': 'dial-in', 'CallID': 'e02f53480bd311ecafe057508a2fd486', 'CallerIDNum': '+79221674299',
        'CallerIDName': '+79221674299', 'CalledDID': '78007778500', 'CallStatus': 'CALLING', 'CallFlow': 'in',
        'CalledNumber': '03255*100', 'SubCallID': '548632-e6cf0fc20bd311ecb57e57508a2fd486',
        'CallAPIID': '167903695-e02f5348-0bd3-11ec-afe0-57508a2fd486', 'EventTime': '1630576527983053'}
        	person_id	deal_codecontact_name	voip_callZevent_persons)r#   idvalueparentcodenamecmf_emit_event)r   r
   r   kwargsr   r   r    r!   r!   r"   r'   6   s    zCmfPluginTelphin.voip_callc                 K   sn   t d | |||\}}}|d |_|jdd |jj|d< |jjj|d< |j	j|d< t
d||gd |S )	at  
        {'CalledExtension': '03255*100@sipproxy.telphin.ru', 'CalledExtensionID': '548632',
        'CallerExtension': '03255*099@sipproxy.telphin.ru', 'CallerExtensionID': '544289',
        'EventType': 'hangup', 'CallID': 'e02f53480bd311ecafe057508a2fd486', 'CallerIDNum': '+79221674299',
        'CallerIDName': '+79221674299', 'CalledDID': '78007778500', 'CallStatus': 'CONGESTION',
        'CallFlow': 'in', 'CalledNumber': '03255*100', 'SubCallID': '548632-e6cf0fc20bd311ecb57e57508a2fd486',
        'Duration': '0', 'CallAPIID': '167903695-e02f5348-0bd3-11ec-afe0-57508a2fd486', 'EventTime': '1630576531883054'}
        voip_call_endZDurationT)r   r$   r%   r&   r(   )r   r   r#   Zdurationr   r)   r*   r+   r,   r-   r.   r   r
   r   r   r/   r   r   r    r!   r!   r"   r0   I   s    	

zCmfPluginTelphin.voip_call_endc                 K   sX   t d | |||\}}}|jj|d< |jjj|d< |jj|d< td||gd |S )Nvoip_call_startr$   r%   r&   r(   )	r   r   r#   r)   r*   r+   r,   r-   r.   r1   r!   r!   r"   r2   \   s    
z CmfPluginTelphin.voip_call_startNc                 O   s   t d t| jjj| jjj}|d|d dd  d|d  i }|j	dkr|rt|
dg ||j |S t d	 nt d
|j  d S )Nvoip_record/api/ver1.0/extension/ZRecID-r   z/record/   r   u    Не найден звонок?!u+   Ошибка загрузки записи )r   r   r   pluginext_keyr*   
ext_secretcallr   status_coder   Zupload_recordZcontent)r   r
   r   argsr/   apiresr!   r!   r"   r3   f   s    
*
zCmfPluginTelphin.voip_recordc                 O   sF  |  ddg t| jjj| jjj}|jdi d}t| |	 }|d }|jd| dd|d	d
d}t| |	 D ]}	|	d 
dd |kr||	d }
tj|}|g||jjd}t| |jd|
 d|dd}t| |jdkr,i }tjjj|d< d |d< |jj|d< td|tjgd |	   S q|td d S )Nzplugin.ext_keyzplugin.ext_secretz/api/ver1.0/user/)methodparams	client_idz/api/ver1.0/client/z/extension/phoneZactive)typer-   statusr-   r   r	   r)   )Zsrc_numZdst_numr   r4   z
/callback/ZPOST)r?   r@   Zrequest_type   r$   r%   r&   r'   r(   u\   Телефонный номер не зарегестрирован на АТС Телфин)r   r   r7   r8   r*   r9   r:   r   r   Zjsonr   r   Z	CmfPersonZget_by_phoner-   r;   Zcurrent_personr)   r.   Z	cmf_alert)r   rB   callbackr<   r/   r=   Zres_jsonr>   rA   extZext_idr   r@   r
   r!   r!   r"   rF   t   s6    




zCmfPluginTelphin.callback)r   )N)	__name__
__module____qualname__r#   r'   r0   r2   r3   rF   r!   r!   r!   r"   r      s   
'

r   )timer   ZujsonZcmf.includeZcmfr   ZrequestsZ"modules.voip.models.cmf_call_mixinr   Ztelphin.apir   r   r!   r!   r!   r"   <module>   s   