
    qi                        d dl mZ d dlZd dlmZmZmZmZmZm	Z	m
Z
mZ d dlmZmZ ddlmZ ddlmZ dZ	  G d	 d
e      Zy)    )annotationsN)DialWhatsAppCallRequestDialWhatsAppCallResponseDisconnectWhatsAppCallRequestDisconnectWhatsAppCallResponseConnectWhatsAppCallRequestConnectWhatsAppCallResponseAcceptWhatsAppCallRequestAcceptWhatsAppCallResponse)ConnectTwilioCallRequestConnectTwilioCallResponse   )Service)VideoGrants	Connectorc                  t     e Zd ZdZd fdZ	 	 	 	 d	dZ	 	 	 	 d
dZ	 	 	 	 ddZ	 	 	 	 ddZ	 	 	 	 ddZ	 xZ
S )ConnectorServicezClient for LiveKit Connector Service API

    Recommended way to use this service is via `livekit.api.LiveKitAPI`:

    ```python
    from livekit import api
    lkapi = api.LiveKitAPI()
    connector_service = lkapi.connector
    ```
    c                *    t         |   ||||       y )N)super__init__)selfsessionurlapi_key
api_secret	__class__s        O/opt/pipecat/venv/lib/python3.12/site-packages/livekit/api/connector_service.pyr   zConnectorService.__init__&   s    #w
;    c           
        K   | j                   j                  t        d|| j                  t	        d            t
               d{   S 7 w)z
        Initiate an outbound WhatsApp call

        Args:
            request: DialWhatsAppCallRequest containing call parameters

        Returns:
            DialWhatsAppCallResponse with the WhatsApp call ID and room name
        DialWhatsAppCallTroom_createN)_clientrequestSVC_auth_headerr   r   r   r$   s     r   dial_whatsapp_callz#ConnectorService.dial_whatsapp_call)   sH      \\))kd;<$
 
 	
 
   AAAAc           
        K   | j                   j                  t        d|| j                  t	        d            t
               d{   S 7 w)z
        Disconnect an active WhatsApp call

        Args:
            request: DisconnectWhatsAppCallRequest containing the call ID to disconnect

        Returns:
            DisconnectWhatsAppCallResponse (empty response)
        DisconnectWhatsAppCallTr!   N)r#   r$   r%   r&   r   r   r'   s     r   disconnect_whatsapp_callz)ConnectorService.disconnect_whatsapp_call=   sH      \\))$kd;<*
 
 	
 
r)   c           
        K   | j                   j                  t        d|| j                  t	        d            t
               d{   S 7 w)z
        Connect a WhatsApp call with SDP information

        Args:
            request: ConnectWhatsAppCallRequest containing call ID and SDP

        Returns:
            ConnectWhatsAppCallResponse (empty response)
        ConnectWhatsAppCallTr!   N)r#   r$   r%   r&   r   r	   r'   s     r   connect_whatsapp_callz&ConnectorService.connect_whatsapp_callQ   sH      \\))!kd;<'
 
 	
 
r)   c           
        K   | j                   j                  t        d|| j                  t	        d            t
               d{   S 7 w)z
        Accept an inbound WhatsApp call

        Args:
            request: AcceptWhatsAppCallRequest containing call parameters and SDP

        Returns:
            AcceptWhatsAppCallResponse with the room name
        AcceptWhatsAppCallTr!   N)r#   r$   r%   r&   r   r   r'   s     r   accept_whatsapp_callz%ConnectorService.accept_whatsapp_calle   sH      \\)) kd;<&
 
 	
 
r)   c           
        K   | j                   j                  t        d|| j                  t	        d            t
               d{   S 7 w)z
        Connect a Twilio call to a LiveKit room

        Args:
            request: ConnectTwilioCallRequest containing call parameters

        Returns:
            ConnectTwilioCallResponse with the websocket URL for Twilio media stream
        ConnectTwilioCallTr!   N)r#   r$   r%   r&   r   r   r'   s     r   connect_twilio_callz$ConnectorService.connect_twilio_cally   sH      \\))kd;<%
 
 	
 
r)   )r   zaiohttp.ClientSessionr   strr   r6   r   r6   )r$   r   returnr   )r$   r   r7   r   )r$   r   r7   r	   )r$   r
   r7   r   )r$   r   r7   r   )__name__
__module____qualname____doc__r   r(   r,   r/   r2   r5   __classcell__)r   s   @r   r   r      sv    	<
.
	!
(
4
	'
(
1
	$
(
0
	#
(
/
	"
r   r   )
__future__r   aiohttp#livekit.protocol.connector_whatsappr   r   r   r   r   r	   r
   r   !livekit.protocol.connector_twilior   r   _servicer   access_tokenr   r%   r    r   r   <module>rD      s=    " 	 	 	  % q
w q
r   