
    ]d?                     X    d dl Z d dl d dlmZ d dlmZ d dlmZ d dlZ G d de      Z	y)    N)*)fields)CmfCallMixin)
ZadarmaAPIc                   H     e Zd Z fdZddZddZd	dZd Zd Zd Z	 xZ
S )
CmfPluginZadarmac                 (    t        |   |ddi| y)u3   
        Дает доступ из вне
        ext_ipz185.45.152.42N)super_init_secret)selfargskwargs	__class__s      +./modules/voip/models/cmf_plugin_zadarma.pyr   zCmfPluginZadarma._init_secret   s     	dE?EfE    c           	         t         j                  d       t         j                  |       |dk(  rt        j                  j	                  ||d   |j                  d      ||d   ||       }|j                  }|j                  }|j                  r|j                  r|j                  j                  }|j                          n|dk(  r\|d   dk(  rTt        j                  j	                  ||d   |j                  d      ||d	   ||       }|j                  }|j                  }ng|dk(  rTt        j                  j	                  ||d   |j                  d	      ||d   ||       }|j                  }|j                  }nt        d
|       |j                  dg       |j                  d|j                        |_        |d   |_        |j                  d|j                         |_        |d   |_        |d   |_        |||fS )u^   
        Ищем клиента и сделку, если нет то создаем
        u%   Обрабатываем звонокinpbx_call_idinternal	caller_id)call_log_rawcall_idcalled_number	call_flowcaller_numbercall_statuschannelout0dst_e164uH   Неправильный параметр, call_flow "in" или "out": z**
called_did
call_startevent)gdebugmodelsCmfChannelCallprocess_callgetcallercalledis_nullparentresponsibleload	Exceptionload_fieldscalled_d_idcaller_id_numr   
event_time
event_type)r   r   r   r   channel_callcontactpersons          r   r)   zCmfPluginZadarma.process_call   s    	
78	!00==<amn{a|LXL\L\]gLhHQLXYdLeJU_c	 > eL
 #))G!((F~~,"5"5%,,88%L$=$D!00==<FRS`FaLXL\L\]gLhHQLXYcLdJU_c > eL #))G!((F%!00==<FRS`FaLXL\L\]gLhHQLXYcLdJU_c > eL #))G!((Ffgpfqrss  $(#/#3#3L,BZBZ#[  &2+%>"%1%5%5j,B\B\%]" #/|"< #/w"7Wf,,r   c                     | j                  |||      \  }}}|j                  j                  |d<   |j                  j                  j                  |d<   |j
                  j                  |d<   t        d||g       |S )uU   
        Отправляем на фронт событие о звонке
        r   r   	person_id	deal_codecontact_name	voip_callevent_personsr)   idvaluer.   codenamecmf_emit_eventr   r   r   r   r   r7   r8   r9   s           r   r?   zCmfPluginZadarma.voip_callG   sz     )-(9(9,R[it(9(u%gv$*IIOO[!$0$7$7$<$<$B$B[!'.||'9'9^${LIr   c                 J   |d   dk(  rd}| j                  |||      \  }}}|d   |_        |j                  d       |j                  j                  |d<   |j
                  j                  j                  |d	<   |j                  j                  |d
<   t        d||g       |S )NdispositionansweredANSWERr;   durationT)	only_datar<   r=   r>   voip_call_endr@   )	r)   rM   saverC   rD   r.   rE   rF   rG   rH   s           r   rO   zCmfPluginZadarma.voip_call_endS   s    &*4"K(,(9(9,R[it(9(u%gv ,Z 8D)$*IIOO[!$0$7$7$<$<$B$B[!'.||'9'9^$VHMr   c                     | j                  |||      \  }}}|j                  j                  |d<   |j                  j                  j                  |d<   |j
                  j                  |d<   t        d||g       |S )Nr;   r<   r=   r>   voip_call_startr@   rB   rH   s           r   rR   z CmfPluginZadarma.voip_call_start_   sy    (,(9(9,R[it(9(u%gv$*IIOO[!$0$7$7$<$<$B$B[!'.||'9'9^$(,vhOr   c                    t        | j                  j                  j                         | j                  j                  j                               }|j                  dd|d   i      }t        j                  |      }t        j                  d|        |d   }t        j                  d|        t        j                  |      }|j                  dk7  rt        d|j                         t        j                   j                  |d	   d
g      }|r|j#                  |j                         |S t        j                  d       y )Nz/v1/pbx/record/request/r   call_id_with_reczapi call res: linkzdownload from    u0   Не удалось скачать запись r   z-id)r   order_byuC   Не найден звонок для вложения записи)r   pluginext_keydecrypt
ext_secretcallujsonloadsr%   r&   requestsr*   status_coder1   contentr'   r(   upload_record)	r   r   r   apires_jsonresurlrr7   s	            r   voip_recordzCmfPluginZadarma.voip_recordh   s
   ,,4468N8N8V8V8XY885	<PbCc7dekk(#	.&'&k	.&'LL==CNqyykZ[[!0044\-=Xdicj4kL**1995##]^r   c                 (   t        | j                  j                  j                         | j                  j                  j                               }||d}t
        j                  |       |j                  d|      }t
        j                  |       |S )N)fromtoz/v1/request/callback/)r   rX   rY   rZ   r[   r%   r&   r\   )r   phonecallbackr   r   rc   paramsrd   s           r   rm   zCmfPluginZadarma.callbackz   sk    ,,4468N8N8V8V8XY"%0	883V<	r   )CALLING)
CONGESTION)__name__
__module____qualname__r   r)   r?   rO   rR   rh   rm   __classcell__)r   s   @r   r   r   
   s)    F4-l

_$r   r   )
r]   cmf.includecmfr   "modules.voip.models.cmf_call_mixinr   zadarma.apir   r_   r    r   r   <module>rz      s%       ; " v| vr   