U
    {yd?                     @   sP   d dl Z d dlT d dlmZ d dlmZ d dlmZ d dlZG dd deZ	dS )    N)*)fields)CmfCallMixin)
ZadarmaAPIc                       sR   e Zd Z fddZdddZdddZdd	d
Zdd Zdd Zdd Z	  Z
S )CmfPluginZadarmac                    s   t  j|ddi| dS )u3   
        Дает доступ из вне
        Zext_ipz185.45.152.42N)super_init_secret)selfargskwargs	__class__ +./modules/voip/models/cmf_plugin_zadarma.pyr      s    zCmfPluginZadarma._init_secretCALLINGc              	   C   sX  t d t | |dkrntjj||d |d||d || d}|j}|j}|jrl|j	rl|j	j
}|  n|dkr|d dkrtjj||d |d||d	 || d}|j}|j}nL|dkrtjj||d |d	||d || d}|j}|j}ntd
| |dg |d|j|_|d |_|d|j|_|d |_|d |_|||fS )u^   
        Ищем клиента и сделку, если нет то создаем
        u%   Обрабатываем звонокinpbx_call_idZinternalZ	caller_id)call_log_rawcall_idcalled_number	call_flowZcaller_numbercall_statusZchannelout0Zdst_e164uH   Неправильный параметр, call_flow "in" или "out": z**Z
called_didZ
call_startZevent)gdebugmodelsCmfChannelCallprocess_callgetZcallerZcalledZis_nullparentZresponsibleload	ExceptionZload_fieldsZcalled_d_idZcaller_id_numr   Z
event_timeZ
event_type)r	   r   r   r   channel_callcontactpersonr   r   r   r      sZ    

 
  


zCmfPluginZadarma.process_callc                 K   sP   | j |||d\}}}|jj|d< |jjj|d< |jj|d< td||gd |S )uU   
        Отправляем на фронт событие о звонке
        r   r   	person_id	deal_codecontact_name	voip_callZevent_personsr   idvaluer    codenamecmf_emit_eventr	   r   r   r   r   r#   r$   r%   r   r   r   r*   G   s    zCmfPluginZadarma.voip_call
CONGESTIONc                 K   sv   |d dkrd}| j |||d\}}}|d |_|jdd |jj|d< |jjj|d	< |jj|d
< td||gd |S )NZdispositionZansweredZANSWERr&   durationT)Z	only_datar'   r(   r)   voip_call_endr+   )	r   r4   Zsaver-   r.   r    r/   r0   r1   r2   r   r   r   r5   S   s    
zCmfPluginZadarma.voip_call_endc                 K   sP   | j |||d\}}}|jj|d< |jjj|d< |jj|d< td||gd |S )Nr&   r'   r(   r)   voip_call_startr+   r,   r2   r   r   r   r6   _   s    z CmfPluginZadarma.voip_call_startc           	      K   s   t | jj | jj }|dd|d i}t|}t	d|  |d }t	d|  t
|}|jdkrtd|j n4tjj|d	 d
gd}|r||j |S t	d d S )Nz/v1/pbx/record/request/r   Zcall_id_with_reczapi call res: linkzdownload from    u0   Не удалось скачать запись r   z-id)r   Zorder_byuC   Не найден звонок для вложения записи)r   pluginext_keydecrypt
ext_secretcallujsonloadsr   r   requestsr   Zstatus_coder"   Zcontentr   r   Zupload_record)	r	   r   r   apires_jsonresZurlrr#   r   r   r   voip_recordh   s    


zCmfPluginZadarma.voip_recordc                 O   sH   t | jj | jj }||d}t| |d|}t| |S )N)fromtoz/v1/request/callback/)r   r9   r:   r;   r<   r   r   r=   )r	   Zphonecallbackr
   r   rA   paramsrB   r   r   r   rH   z   s    


zCmfPluginZadarma.callback)r   )r   )r3   )__name__
__module____qualname__r   r   r*   r5   r6   rE   rH   __classcell__r   r   r   r   r   
   s   
6

	r   )
r>   Zcmf.includeZcmfr   Z"modules.voip.models.cmf_call_mixinr   Zzadarma.apir   r@   r   r   r   r   r   <module>   s   