
    B
d"                     h    d dl Z d dlZd dlZd dl d dlmZ d dlZd dlmZ d dl	m
Z
  G d de      Zy)    N)*)fields)CmfCallMixin)
TelphinAPIc                   4    e Zd ZddZd Zd Zd Zd	dZd Zy)
CmfPluginTelphinc           	      >   t         j                  d| d|        |dk(  rZt        j                  j	                  ||d   |d   j                  d      d   ||d   || 	      }|j                  }|j                  }nm|d
k(  rZt        j                  j	                  ||d   |d   ||d   j                  d      d   || 	      }|j                  }|j                  }nt        d|       |j                  dg       |j                  d|j                        |_        |j                  d|j                        |_        |d   |_        |d   |_        |d   |_        |d   |_        |d   |_        t$        j$                  j'                  t)        |d         dz  t$        j*                  j,                        |_        |j                  d|j0                        |_        |d   |_        |d   |_        |d   |_        |j8                  r|j;                  ddg       |||fS )Nz_process_call call_status=z call_flow=inCallIDCalledNumberr      CallerIDNum)call_log_rawcall_idcalled_number	call_flowcaller_numbercall_statuschanneloutuH   Неправильный параметр, call_flow "in" или "out": **	CalledDIDCalledExtensionCallerExtension	CallAPIIDCallerIDName	EventTimei@B )tzCalledExtensionIDCallerExtensionID	SubCallID	EventTypeT)	only_datar   )gdebugmodelsCmfChannelCallprocess_callsplitcallercalled	Exceptionload_fieldsgetcalled_d_idcalled_extensioncaller_extensioncaller_id_numr   call_api_idcaller_id_namedatetimefromtimestampinttimezoneutc
event_timecalled_extension_idcaller_extension_idsub_call_id
event_type
is_changedsave)selfr   r   r   channel_callcontactpersons          +./modules/voip/models/cmf_plugin_telphin.py_process_callzCmfPluginTelphin._process_call   sT   	,[MYKPQ!00==<amnvawLXYgLhLnLnorLstuLvHQLXYfLgJU_c	 > eL
 #))G!((F%!00==<FRS[F\LXYgLhHQLXYfLgLmLmnqLrstLuJU_c > eL #))G!((Ffgpfqrss  $(#/#3#3KAYAY#Z (4(8(89JLLiLi(j%(45F(G%%1-%@"%1.%A"#/#< &2>&B#"*"3"3"A"A#lS^F_B`ahBhEMEVEVEZEZ #B #\+7+;+;<OQ]QqQq+r(+78K+L(#/#< ".{";""dV<Wf,,    c                     | j                  ||      \  }}}|j                  j                  |d<   |j                  j                  j                  |d<   |j
                  j                  |d<   t        d||g       |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event_persons)rF   idvalueparentcodenamecmf_emit_event)rA   r   r   kwargsrB   rC   rD   s          rE   rL   zCmfPluginTelphin.voip_call6   ss     )-(:(:<(S%gv$*IIOO[!$0$7$7$<$<$B$B[!'.||'9'9^${LIrG   c                 ^   t         j                  d       | j                  |||      \  }}}|d   |_        |j	                  d       |j
                  j                  |d<   |j                  j                  j                  |d<   |j                  j                  |d<   t        d||g       |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_endDurationT)r#   rI   rJ   rK   rM   )r$   r%   rF   durationr@   rO   rP   rQ   rR   rS   rT   rA   r   r   r   rU   rB   rC   rD   s           rE   rW   zCmfPluginTelphin.voip_call_endI   s     	
 (,(:(:<T_(`%gv ,Z 8D)$*IIOO[!$0$7$7$<$<$B$B[!'.||'9'9^$VHMrG   c                 &   t         j                  d       | j                  |||      \  }}}|j                  j                  |d<   |j
                  j                  j                  |d<   |j                  j                  |d<   t        d||g       |S )Nvoip_call_startrI   rJ   rK   rM   )	r$   r%   rF   rO   rP   rQ   rR   rS   rT   rZ   s           rE   r\   z CmfPluginTelphin.voip_call_start\   s    	!"(,(:(:<T_(`%gv$*IIOO[!$0$7$7$<$<$B$B[!'.||'9'9^$(,vhOrG   Nc                    t         j                  d       t        | j                  j                  j                         | j                  j                  j                               }|j                  d|d   j                  d      d    d|d    i       }|j                  dk(  rG|r/|j                  dg       |j                  |j                         |S t         j                  d	       y t         j                  d
|j                          y )Nvoip_record/api/ver1.0/extension/RecID-r   z/record/   r   u    Не найден звонок?!u+   Ошибка загрузки записи )r$   r%   r   pluginext_keydecrypt
ext_secretcallr)   status_coder-   upload_recordcontent)rA   r   rB   argsrU   apiress          rE   r^   zCmfPluginTelphin.voip_recordf   s    	,,4468N8N8V8V8XYhh/W0E0K0KC0PQR0S/TT\]ijq]r\stvxy??c!(($0**3;;7##:;GGA#++OPrG   c                 &   | j                  ddg       t        | j                  j                  j	                         | j                  j
                  j	                               }|j                  di       }t        j                  |       |j                         }|d   }|j                  d| dd|d	d
      }t        j                  |       |j                         D ]"  }	|	d   j                  d      d   |k(  s|	d   }
t        j                  j                  |      }|g||j                  j                  d}t        j                  |       |j                  d|
 d|d      }t        j                  |       |j                   dk(  rdi }t        j"                  j$                  j                  |d<   d |d<   |j                  j                  |d<   t'        d|t        j"                  g       |j                         c S  t)        d       y )Nzplugin.ext_keyzplugin.ext_secretz/api/ver1.0/user/)methodparams	client_idz/api/ver1.0/client/z/extension/phoneactive)typerS   statusrS   r   r   rO   )src_numdst_numr4   r_   z
/callback/POST)ro   rp   request_type   rI   rJ   rK   rL   rM   u\   Телефонный номер не зарегестрирован на АТС Телфин)r-   r   rc   rd   re   rf   rg   r$   r%   jsonr)   r&   	CmfPersonget_by_phonerS   rP   rh   current_personrO   rT   	cmf_alert)rA   rr   callbackrk   rU   rl   res_jsonrm   rq   extext_idrC   rp   r   s                 rE   r   zCmfPluginTelphin.callbackt   s   *,?@A,,4468N8N8V8V8XY88%68C	mmo$	88%8;#OahaickYm8 n 	
==? 	'C6{  %a(H4T **77>&.ZEU\UaUaUgUgh88-CF8:+V_etz8{!''3. $&L010@0@0C0C0I0IL-04L-3:<<3E3EL0";QM]M]L^_}}&#	'$ 	pqrG   )CALLING)N)	__name__
__module____qualname__rF   rL   rW   r\   r^   r    rG   rE   r   r      s#    %-N&&QrrG   r   )timer5   ujsoncmf.includecmfr   requests"modules.voip.models.cmf_call_mixinr   telphin.apir   r   r   rG   rE   <module>r      s-          ; "Dr| DrrG   