o
    lWi01                     @   s   d dl Z d dlmZ ddlmZ ddlmZmZ ddlm	Z	m
Z
 ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ e e jdZG dd dZG dd dZdS )    N)JSONDecodeError   )ApiError)AsyncClientWrapperSyncClientWrapper)AsyncHttpResponseHttpResponse)RequestOptions)'convert_and_respect_annotation_metadata)construct_type)UnprocessableEntityError),ConversationInitiationClientDataRequestInput)HttpValidationError)TwilioOutboundCallResponse   )LBodyRegisterATwilioCallAndReturnTwiMlV1ConvaiTwilioRegisterCallPostDirection.c                   @      e Zd ZdefddZedddededed	eje	 d
eje
 dee fddZeedddedededeje d	eje	 d
eje
 ded fddZdS )RawTwilioClientclient_wrapperc                C   
   || _ d S N_client_wrapperselfr    r   r/var/www/html/asistente-voz-ia/venv/lib/python3.10/site-packages/elevenlabs/conversational_ai/twilio/raw_client.py__init__      
zRawTwilioClient.__init__N#conversation_initiation_client_datarequest_optionsagent_idagent_phone_number_id	to_numberr    r!   returnc          	      C   s   | j jjdd|||t|tdddddi|td}z>d	|j  kr%d
k r:n ntt	t
t	| d}t||dW S |jdkrRtt|jttt
t| dd| }W n tyj   t|jt|j|jdw t|jt|j|d)a  
        Handle an outbound call via Twilio

        Parameters
        ----------
        agent_id : str

        agent_phone_number_id : str

        to_number : str

        conversation_initiation_client_data : typing.Optional[ConversationInitiationClientDataRequestInput]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[TwilioOutboundCallResponse]
            Successful Response
        v1/convai/twilio/outbound-callPOSTwriteobject_
annotation	directionr"   r#   r$   r    content-typeapplication/jsonmethodjsonheadersr!   omit   ,  type_r*   responsedata  r3   bodystatus_coder3   r>   )r   httpx_clientrequestr
   r   OMITr@   typingcastr   r   r2   r   r   dictr3   r   r   r   text	r   r"   r#   r$   r    r!   	_response_data_response_jsonr   r   r   outbound_call   sV   

zRawTwilioClient.outbound_callr,   r    r!   from_numberr,   c          	      C   s   | j jjdd||||t|tdddddi|td}z2d	|j  kr&d
k r/n nt|ddW S |jdkrGtt	|j
tttt| dd| }W n ty_   t|jt	|j
|jdw t|jt	|j
|d)aB  
        Register a Twilio call and return TwiML to connect the call

        Parameters
        ----------
        agent_id : str

        from_number : str

        to_number : str

        direction : typing.Optional[BodyRegisterATwilioCallAndReturnTwiMlV1ConvaiTwilioRegisterCallPostDirection]

        conversation_initiation_client_data : typing.Optional[ConversationInitiationClientDataRequestInput]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        HttpResponse[None]
        v1/convai/twilio/register-callr'   r(   r)   r"   rN   r$   r,   r    r.   r/   r0   r5   r6   Nr9   r<   r7   r=   r?   )r   rA   rB   r
   r   rC   r@   r   r   rF   r3   rD   rE   r   r   r2   r   r   rG   	r   r"   rN   r$   r,   r    r!   rI   rK   r   r   r   register_callg   sJ    

zRawTwilioClient.register_call)__name__
__module____qualname__r   r   rC   strrD   Optionalr   r	   r   r   rL   r   rR   r   r   r   r   r      F    	
Q	r   c                   @   r   )AsyncRawTwilioClientr   c                C   r   r   r   r   r   r   r   r      r   zAsyncRawTwilioClient.__init__Nr   r"   r#   r$   r    r!   r%   c          	         s   | j jjdd|||t|tdddddi|tdI d	H }z>d
|j  kr)dk r>n ntt	t
t	| d}t||dW S |jdkrVtt|jttt
t| dd| }W n tyn   t|jt|j|jdw t|jt|j|d)a  
        Handle an outbound call via Twilio

        Parameters
        ----------
        agent_id : str

        agent_phone_number_id : str

        to_number : str

        conversation_initiation_client_data : typing.Optional[ConversationInitiationClientDataRequestInput]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[TwilioOutboundCallResponse]
            Successful Response
        r&   r'   r(   r)   r-   r.   r/   r0   Nr5   r6   r7   r9   r<   r=   r?   )r   rA   rB   r
   r   rC   r@   rD   rE   r   r   r2   r   r   rF   r3   r   r   r   rG   rH   r   r   r   rL      sX   

z"AsyncRawTwilioClient.outbound_callrM   rN   r,   c          	         s   | j jjdd||||t|tdddddi|tdI d	H }z2d
|j  kr*dk r3n nt|d	dW S |jdkrKtt	|j
tttt| dd| }W n tyc   t|jt	|j
|jdw t|jt	|j
|d)aG  
        Register a Twilio call and return TwiML to connect the call

        Parameters
        ----------
        agent_id : str

        from_number : str

        to_number : str

        direction : typing.Optional[BodyRegisterATwilioCallAndReturnTwiMlV1ConvaiTwilioRegisterCallPostDirection]

        conversation_initiation_client_data : typing.Optional[ConversationInitiationClientDataRequestInput]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AsyncHttpResponse[None]
        rO   r'   r(   r)   rP   r.   r/   r0   Nr5   r6   r9   r<   r7   r=   r?   )r   rA   rB   r
   r   rC   r@   r   r   rF   r3   rD   rE   r   r   r2   r   r   rG   rQ   r   r   r   rR      sL    

z"AsyncRawTwilioClient.register_call)rS   rT   rU   r   r   rC   rV   rD   rW   r   r	   r   r   rL   r   rR   r   r   r   r   rY      rX   rY   ) rD   json.decoderr   core.api_errorr   core.client_wrapperr   r   core.http_responser   r   core.request_optionsr	   core.serializationr
   core.unchecked_base_modelr   !errors.unprocessable_entity_errorr   7types.conversation_initiation_client_data_request_inputr   types.http_validation_errorr   #types.twilio_outbound_call_responser   btypes.body_register_a_twilio_call_and_return_twi_ml_v_1_convai_twilio_register_call_post_directionr   rE   AnyrC   r   rY   r   r   r   r   <module>   s"    