o
    oPjõ-  ã                   @   sâ  d dl mZ d dlmZ d dlmZmZmZmZ de	de	de
e	ef de
e	ef fdd	„Zd<de	de
e	ef d
B de
e	ef fdd„Zd<de	de
e	ef d
B de
e	ef fdd„Zde	de	dee de	de
e	ef f
dd„Zde	de	dee de	de
e	ef f
dd„Zde	de	de	dee de	de
e	ef fdd„Z			
d=de	de	de	deded e
e	e	f d
B de
e	ef fd!d"„Zd#e
e	ef d$ede
e	ef fd%d&„Zd#e
e	ef de
e	ef fd'd(„Zd#e
e	ef de
e	ef fd)d*„Zd#e
e	ef de
e	ef fd+d,„Zd#e
e	ef de	fd-d.„Zd#e
e	ef de	d
B fd/d0„Zd1e
e	ef dee
e	ef  fd2d3„Zd4e	d5ee
e	ef  de	d
B de	fd6d7„Zd5ee
e	ef  de	fd8d9„Zd1e
e	ef d5ee
e	ef  de
e	ef d
B fd:d;„Zd
S )>é    )ÚAny)ÚResponseMode)ÚButtonOptionÚConversationResponseÚListRowÚListSectionÚmensajeÚresponse_typeÚdataÚreturnc                 C   s   t d| ||d�jdd�S )NÚfalse©Úerrorr   r	   r
   T©Úexclude_none)r   Ú
model_dump©r   r	   r
   © r   úJ/var/www/html/macrobase-freshchat-api/app/services/conversation_builder.pyÚsuccess_response   s   üûr   Nc                 C   s   d| d|pi dœS )NÚtrueÚtextr   r   )r   r
   r   r   r   Úcontrolled_error   s
   ür   r   Ú
extra_datac                 C   s*   dd| dœgi}|r|  |¡ t| d|ƒS )NÚmessagesr   )Útyper   )Úupdater   )r   r   r
   r   r   r   Úbuild_text_response   s   
r   ÚbuttonsÚfallback_textc              	   C   ó(   t | ddd|dd„ |D ƒ|dœgid�S )Nr   r   c                 S   ó   g | ]}|  ¡ ‘qS r   ©r   )Ú.0Úbuttonr   r   r   Ú
<listcomp>3   ó    z*build_buttons_response.<locals>.<listcomp>)r   r   r   r   r   ©r   )r   r   r   r   r   r   r   Úbuild_buttons_response%   ó   üÿÿýr(   Úrepliesc              	   C   r    )NÚquick_repliesr   c                 S   r!   r   r"   )r#   Úreplyr   r   r   r%   I   r&   z0build_quick_replies_response.<locals>.<listcomp>)r   r   r+   r   r   r'   )r   r   r*   r   r   r   r   Úbuild_quick_replies_response;   r)   r-   Úbutton_textÚsectionsc              
   C   s*   t | ddd||dd„ |D ƒ|dœgid�S )NÚlistr   c                 S   s   g | ]}|j d d�‘qS )Tr   r"   )r#   Úsectionr   r   r   r%   a   s    z'build_list_response.<locals>.<listcomp>)r   r   r.   r/   r   r   r'   )r   r   r.   r/   r   r   r   r   Úbuild_list_responseQ   s   ûÿÿýr2   é   é   Ú	scale_minÚ	scale_maxÚlabelsc                 C   s&   t | ddd||||pi |dœgid�S )NÚratingr   )r   r   r5   r6   r7   r   r   r'   )r   r   r   r5   r6   r7   r   r   r   Úbuild_rating_responsei   s   úÿÿýr9   ÚpayloadÚmodec                 C   s8   |dkrt | ƒS |dkrt| ƒS |dkrt| ƒS tdƒS )NÚinternalÚfreshchat_simpleÚfallbackz!Modo de renderizado no soportado.)Úensure_base_shapeÚto_freshchat_simpleÚto_fallbackr   )r:   r;   r   r   r   Úrender_responseƒ   s   rB   c                 C   s@   t |  dd¡ƒ ¡ |  d¡pt| ƒ|  d¡pd|  d¡pi dœS )Nr   r   r   r	   r   r
   r   )ÚstrÚgetÚlowerÚ_extract_primary_text)r:   r   r   r   r?   �   s
   ür?   c                 C   sX  t | ƒ}| di ¡ dg ¡}|r|d ni }t|ƒ}| d¡}| d¡p'|d }|d |d |d |d t|||ƒ|t|ƒd	 d
d„ |D ƒ¡d	 dd„ |D ƒ¡t|ƒt|ƒdddœ}| d¡}|ri||d< ||d< |ro||d< t||ƒ}	|	rz|	|d< t	|dd�D ])\}
}| d¡|d|
› �< | d¡|d|
› d�< | d¡r©| d¡|d|
› d�< q€|S )Nr
   r   r   r   r   r   r   r	   z, c                 s   ó&   � | ]}|  d ¡r|  d d¡V  qdS )ÚtitleÚ N©rD   ©r#   Úoptionr   r   r   Ú	<genexpr>¦   ó   €$ z&to_freshchat_simple.<locals>.<genexpr>c                 s   rG   )ÚidrI   NrJ   rK   r   r   r   rM   §   rN   Fz›API Library guarda variables; para botones nativos usa acciones nativas de Freshchat o envia el payload whatsapp_interactive desde una integracion directa.)r   r   r	   r
   Úsend_messageÚquestion_textÚoptions_textÚoptions_csvÚoption_ids_csvÚoption_countÚsupports_native_interactiveÚ)freshchat_api_library_renders_interactiveÚintegration_noter   Úmessage_typeÚnative_component_typeÚwhatsapp_interactiver3   ©ÚstartrH   Úoption_rO   Ú_idÚdescriptionÚ_description)
r?   rD   Ú_extract_optionsÚ_build_send_messageÚ_build_options_textÚjoinÚlenÚboolÚ_build_whatsapp_interactiveÚ	enumerate)r:   Úresponser   Úfirst_messageÚoptionsr   rQ   ÚsimplerY   r[   ÚindexrL   r   r   r   r@   –   sH   

ò


€r@   c                 C   s    t | ƒ}t|ƒp|d }t|ƒS )Nr   )r?   Ú_extract_fallback_textr   )r:   rj   r   r   r   r   rA   Æ   s   rA   c                 C   s.   |   di ¡  dg ¡}|r|d   d¡pdS dS )Nr
   r   r   r   zRespuesta generada.rJ   ©r:   r   r   r   r   rF   Ì   s   rF   c                 C   s8   |   di ¡  dg ¡}|sd S |d   d¡p|d   d¡S )Nr
   r   r   r   r   rJ   rp   r   r   r   ro   Ó   s   ro   Úmessagec                 C   s¸   |   d¡dkr|   dg ¡S |   d¡dkr|   dg ¡S |   d¡dkr7g }|   dg ¡D ]}| |  dg ¡¡ q)|S |   d¡dkrZt|   dd	¡ƒ}t|   d
d¡ƒ}dd„ t||d	 ƒD ƒS g S )Nr   r   r+   r0   r/   Úrowsr8   r5   r3   r6   r4   c                 S   s   g | ]}t |ƒt |ƒd œ‘qS )©rO   rH   )rC   )r#   Úvaluer   r   r   r%   ç   s    z$_extract_options.<locals>.<listcomp>)rD   ÚextendÚintÚrange)rq   rl   r1   r5   r6   r   r   r   rb   Ú   s   rb   rQ   rl   c                 C   s,   |s| S |r| › d|› �S | › dt |ƒ› �S )Nz

)rd   )rQ   rl   r   r   r   r   rc   ë   s
   rc   c                 C   s^   | sdS g }t | dd�D ]\}}| d¡p| d¡pd|› �}| |› d|› �¡ qd |¡S )	NrI   r3   r\   rH   rO   zOpcion z. Ú
)ri   rD   Úappendre   )rl   Úlinesrn   rL   rH   r   r   r   rd   ÷   s   
rd   c                 C   s0  |   d¡}|   d¡pd}|dkrDg }|   dg ¡D ]}dd„ |  dg ¡D ƒ}| |  d	d
¡|dœ¡ qddd|i|   dd¡|dœdœdœS |dv ry|ryt|ƒdkrgddd|idd
dd„ |D ƒdœgdœdœdœS ddd|iddd„ |D ƒidœdœS |dkr–|r–ddd|idddd„ |D ƒdœgdœdœdœS d S )Nr   r   zSelecciona una opcionr0   r/   c                 S   ó>   g | ]}|  d ¡|  d¡dœ|  d¡rd|  d¡ini ¥‘qS ©rO   rH   rs   r`   rJ   )r#   Úrowr   r   r   r%     s    üþýÿz/_build_whatsapp_interactive.<locals>.<listcomp>rr   rH   ÚOpciones)rH   rr   Úinteractiver.   zVer opciones)r$   r/   )r   ÚbodyÚaction)r   r   >   r   r+   é   c                 S   r{   r|   rJ   rK   r   r   r   r%   -  s    
øþÿúÿr$   r   c                 S   s(   g | ]}d |  d¡|  d¡dœdœ‘qS )r,   rO   rH   rs   )r   r,   rJ   rK   r   r   r   r%   E  s    úþþÿr8   Ú	CalificarÚCalificacionc                 S   s"   g | ]}|  d ¡|  d¡dœ‘qS )rO   rH   rs   rJ   rK   r   r   r   r%   ^  s    ÿÿ)rD   ry   rf   )rq   rl   rY   r   r/   r1   rr   r   r   r   rh     sp   

ú
þýþ
öþÿþýþøÿýþþþÿþýþrh   )N)r3   r4   N)Útypingr   Úapp.schemas.commonr   Úapp.schemas.responsesr   r   r   r   rC   Údictr   r   r   r0   r(   r-   r2   rv   r9   rB   r?   r@   rA   rF   ro   rb   rc   rd   rh   r   r   r   r   Ú<module>   s¦    *,	,	ÿþýü

ûÿþýü

ûÿþýüû

úúÿþýüûú

ù&"
"	"0&ÿþý
ü

ÿþý