
    hi                         d Z ddlZddlZddlZddlZddlmZ ddlmZ  ej                  e
      Z G d d      Z e       Zy)z
Service Twilio pour WhatsApp
    N)Client)TwilioRestExceptionc            	       j    e Zd ZdZd ZdededefdZddeded	edefd
Z	dede
eef   fdZdefdZy)TwilioServiceu:   Service pour gérer les communications WhatsApp via Twilioc                    t        j                  d      | _        t        j                  d      | _        t        j                  d      | _        t        | j                  | j                  | j                  g      st        d      t        | j                  | j                        | _        t        j                  d       y )NTWILIO_ACCOUNT_SIDTWILIO_AUTH_TOKENTWILIO_WHATSAPP_NUMBERu    Configuration Twilio incomplèteu   ✅ Service Twilio initialisé)osgetenvaccount_sid
auth_tokenwhatsapp_numberall
ValueErrorr   clientloggerinfo)selfs    C/home/www/therecruiter.miabetepe.com/app/services/twilio_service.py__init__zTwilioService.__init__   s    99%9:))$78!yy)ABD$$doot7K7KLM?@@T--t?45    tobodyreturnc                    	 |j                  d      sd| }| j                  j                  j                  | j                  ||      }t
        j                  d| d|j                          y# t        $ r"}t
        j                  d|        Y d}~yd}~wt        $ r"}t
        j                  d	|        Y d}~yd}~ww xY w)
zEnvoie un message WhatsApp	whatsapp:)from_r   r   u   ✅ Message envoyé à : SID=Tu   ❌ Erreur Twilio: NFu   ❌ Erreur inattendue: )
startswithr   messagescreater   r   r   sidr   error	Exception)r   r   r   messagees        r   send_messagezTwilioService.send_message   s    	==- %kk**11** 2 G KK1"VGKK=IJ" 	LL.qc23 	LL21#67	s$   A-A0 0	C9BC"B??CNcontent_sid	variablesc                    	 |j                  d      sd| }| j                  ||d}|rt        j                  |      |d<    | j                  j
                  j                  di |}t        j                  d| d| d|j                          y# t        $ r"}t        j                  d|        Y d	}~y
d	}~wt        $ r"}t        j                  d|        Y d	}~y
d	}~ww xY w)z?Envoie un message WhatsApp via un template Twilio (Content API)r   )r   r   r)   content_variablesu   ✅ Template u    envoyé à r   Tu   ❌ Erreur Twilio template: NFu    ❌ Erreur inattendue template:  )r    r   jsondumpsr   r!   r"   r   r   r#   r   r$   r%   )r   r   r)   r*   paramsr&   r'   s          r   send_template_messagez#TwilioService.send_template_message2   s    	==- % --*F .2jj.C*+1dkk**11;F;GKK-}LF7;;-XY" 	LL7s;< 	LL;A3?@	s$   BB 	C%B77C%C  C%	media_urlc                    	 t        j                  || j                  | j                  fd      }|j	                          |j
                  j                  dd      }t        j                  dt        |j                         d       |j                  |fS # t         j                  $ r}t        j                  d|         d}~ww xY w)	u,   Télécharge un fichier média depuis Twilio   )authtimeoutzContent-Typezapplication/octet-streamu   📥 Média téléchargé: z bytesu$   ❌ Erreur téléchargement média: N)requestsgetr   r   raise_for_statusheadersr   r   lencontentRequestExceptionr$   )r   r2   responsecontent_typer'   s        r   download_mediazTwilioService.download_mediaL   s    	||&&8H
 %%'#++//@Z[LKK5c(:J:J6K5LFST##\11(( 	LL?sCD	s   BB C)CCc                 &   	 | j                   j                  j                  | j                        j	                         }|j
                  |j                  |j                  dS # t        $ r$}t        j                  d|        i cY d}~S d}~ww xY w)u,   Récupère les informations du compte Twilio)r#   friendly_namestatusu   ❌ Erreur info compte: N)r   apiaccountsr   fetchr#   rB   rC   r%   r   r$   )r   accountr'   s      r   get_account_infozTwilioService.get_account_info_   sz    		kkoo..t/?/?@FFHG{{!(!6!6!.. 
  	LL3A378I	s   A A# #	B,BBB)N)__name__
__module____qualname____doc__r   strboolr(   dictr1   tuplebytesr@   rH   r-   r   r   r   r      sn    D	6s # $ , # $ Z^ 4 eSj0A &$ r   r   )rL   r   r.   loggingr7   twilio.restr   twilio.base.exceptionsr   	getLoggerrI   r   r   twilio_servicer-   r   r   <module>rW      sF    
     6			8	$\ \@ r   