a
    !fD                    @   s$  d Z ddlmZ G dd deZG dd deZG dd deZG d	d
 d
eZG dd deZG dd deZG dd deZ	G dd deZ
G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd  d eZG d!d" d"eZG d#d$ d$eZG d%d& d&eZG d'd( d(eZG d)d* d*eZG d+d, d,eZG d-d. d.eZG d/d0 d0eZG d1d2 d2eZG d3d4 d4eZG d5d6 d6eZG d7d8 d8eZG d9d: d:eZG d;d< d<eZG d=d> d>eZ G d?d@ d@eZ!G dAdB dBeZ"G dCdD dDeZ#G dEdF dFeZ$G dGdH dHeZ%G dIdJ dJeZ&G dKdL dLeZ'G dMdN dNeZ(G dOdP dPeZ)G dQdR dReZ*G dSdT dTeZ+G dUdV dVeZ,G dWdX dXeZ-G dYdZ dZeZ.G d[d\ d\eZ/G d]d^ d^eZ0G d_d` d`eZ1G dadb dbeZ2G dcdd ddeZ3deS )fza
This code was generated by
\ / _    _  _|   _  _
 | (_)\/(_)(_|\/| |(/_  v1.0.0
      /       /
    )TwiMLc                       s   e Zd ZdZ fddZd-ddZd.ddZd	d
 Zd/ddZd0ddZ	dd Z
dd Zd1ddZd2ddZd3ddZd4ddZd5ddZd6ddZd7dd Zd8d!d"Zd9d#d$Zd:d%d&Zd;d'd(Zd)d* Zd<d+d,Z  ZS )=VoiceResponsez<Response> TwiML for Voicec                    s    t t| jf i | d| _d S )NResponse)superr   __init__nameselfkwargs	__class__ \/var/www/html/python-backend/venv/lib/python3.9/site-packages/twilio/twiml/voice_response.pyr      s    zVoiceResponse.__init__Nc                 K   s   |  tf ||d|S )z
        Create a <Connect> element

        :param action: Action URL
        :param method: Action URL method
        :param kwargs: additional attributes

        :returns: <Connect> element
        actionmethod)nestConnectr	   r   r   r
   r   r   r   connect   s    
zVoiceResponse.connectc                 K   s:   |  tf |||||||||	|
||||||||d|S )a  
        Create a <Dial> element

        :param number: Phone number to dial
        :param action: Action URL
        :param method: Action URL method
        :param timeout: Time to wait for answer
        :param hangup_on_star: Hangup call on star press
        :param time_limit: Max time length
        :param caller_id: Caller ID to display
        :param record: Record the call
        :param trim: Trim the recording
        :param recording_status_callback: Recording status callback URL
        :param recording_status_callback_method: Recording status callback URL method
        :param recording_status_callback_event: Recording status callback events
        :param answer_on_bridge: Preserve the ringing behavior of the inbound call until the Dialed call picks up
        :param ring_tone: Ringtone allows you to override the ringback tone that Twilio will play back to the caller while executing the Dial
        :param recording_track: To indicate which audio track should be recorded
        :param sequential: Used to determine if child TwiML nouns should be dialed in order, one after the other (sequential) or dial all at once (parallel). Default is false, parallel
        :param refer_url: Webhook that will receive future SIP REFER requests
        :param refer_method: The HTTP method to use for the refer Webhook
        :param kwargs: additional attributes

        :returns: <Dial> element
        )numberr   r   timeouthangup_on_star
time_limit	caller_idrecordtrimrecording_status_callback recording_status_callback_methodrecording_status_callback_eventanswer_on_bridge	ring_tonerecording_track
sequential	refer_urlrefer_method)r   Dial)r	   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r
   r   r   r   dial!   s0    /zVoiceResponse.dialc                 K   s   |  tf i |S )zy
        Create a <Echo> element

        :param kwargs: additional attributes

        :returns: <Echo> element
        )r   Echor   r   r   r   echoh   s    zVoiceResponse.echoc           	      K   s$   |  tf |||||||d|S )a  
        Create a <Enqueue> element

        :param name: Friendly name
        :param action: Action URL
        :param max_queue_size: Maximum size of queue
        :param method: Action URL method
        :param wait_url: Wait URL
        :param wait_url_method: Wait URL method
        :param workflow_sid: TaskRouter Workflow SID
        :param kwargs: additional attributes

        :returns: <Enqueue> element
        )r   r   max_queue_sizer   wait_urlwait_url_methodworkflow_sid)r   Enqueue)	r	   r   r   r*   r   r+   r,   r-   r
   r   r   r   enqueuer   s    zVoiceResponse.enqueuec                 K   s:   |  tf |||||||||	|
||||||||d|S )a  
        Create a <Gather> element

        :param input: Input type Twilio should accept
        :param action: Action URL
        :param method: Action URL method
        :param timeout: Time to wait to gather input
        :param speech_timeout: Time to wait to gather speech input and it should be either auto or a positive integer.
        :param max_speech_time: Max allowed time for speech input
        :param profanity_filter: Profanity Filter on speech
        :param finish_on_key: Finish gather on key
        :param num_digits: Number of digits to collect
        :param partial_result_callback: Partial result callback URL
        :param partial_result_callback_method: Partial result callback URL method
        :param language: Language to use
        :param hints: Speech recognition hints
        :param barge_in: Stop playing media upon speech
        :param debug: Allow debug for gather
        :param action_on_empty_result: Force webhook to the action URL event if there is no input
        :param speech_model: Specify the model that is best suited for your use case
        :param enhanced: Use enhanced speech model
        :param kwargs: additional attributes

        :returns: <Gather> element
        )inputr   r   r   speech_timeoutmax_speech_timeprofanity_filterfinish_on_key
num_digitspartial_result_callbackpartial_result_callback_methodlanguagehintsbarge_indebugaction_on_empty_resultspeech_modelenhanced)r   Gather)r	   r0   r   r   r   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r
   r   r   r   gather   s0    /zVoiceResponse.gatherc                 K   s   |  tf i |S )z}
        Create a <Hangup> element

        :param kwargs: additional attributes

        :returns: <Hangup> element
        )r   Hangupr   r   r   r   hangup   s    zVoiceResponse.hangupc                 K   s   |  tf i |S )z{
        Create a <Leave> element

        :param kwargs: additional attributes

        :returns: <Leave> element
        )r   Leaver   r   r   r   leave   s    zVoiceResponse.leavec                 K   s   |  tf d|i|S z
        Create a <Pause> element

        :param length: Length in seconds to pause
        :param kwargs: additional attributes

        :returns: <Pause> element
        lengthr   Pauser	   rF   r
   r   r   r   pause   s    	zVoiceResponse.pausec                 K   s   |  tf |||d|S z
        Create a <Play> element

        :param url: Media URL
        :param loop: Times to loop media
        :param digits: Play DTMF tones for digits
        :param kwargs: additional attributes

        :returns: <Play> element
        )urlloopdigitsr   Playr	   rL   rM   rN   r
   r   r   r   play   s    zVoiceResponse.playc              	   K   s    |  t|f||||d|S a]  
        Create a <Queue> element

        :param name: Queue name
        :param url: Action URL
        :param method: Action URL method
        :param reservation_sid: TaskRouter Reservation SID
        :param post_work_activity_sid: TaskRouter Activity SID
        :param kwargs: additional attributes

        :returns: <Queue> element
        )rL   r   reservation_sidpost_work_activity_sidr   Queuer	   r   rL   r   rT   rU   r
   r   r   r   queue  s    zVoiceResponse.queuec                 K   s.   |  tf |||||||||	|
||d|S )a  
        Create a <Record> element

        :param action: Action URL
        :param method: Action URL method
        :param timeout: Timeout to begin recording
        :param finish_on_key: Finish recording on key
        :param max_length: Max time to record in seconds
        :param play_beep: Play beep
        :param trim: Trim the recording
        :param recording_status_callback: Status callback URL
        :param recording_status_callback_method: Status callback URL method
        :param recording_status_callback_event: Recording status callback events
        :param transcribe: Transcribe the recording
        :param transcribe_callback: Transcribe callback URL
        :param kwargs: additional attributes

        :returns: <Record> element
        )r   r   r   r4   
max_length	play_beepr   r   r   r   
transcribetranscribe_callback)r   Record)r	   r   r   r   r4   rZ   r[   r   r   r   r   r\   r]   r
   r   r   r   r   +  s$    #zVoiceResponse.recordc                 K   s   |  t|fd|i|S )z
        Create a <Redirect> element

        :param url: Redirect URL
        :param method: Redirect URL method
        :param kwargs: additional attributes

        :returns: <Redirect> element
        r   )r   Redirect)r	   rL   r   r
   r   r   r   redirect`  s    
zVoiceResponse.redirectc                 K   s   |  tf d|i|S )z
        Create a <Reject> element

        :param reason: Rejection reason
        :param kwargs: additional attributes

        :returns: <Reject> element
        reason)r   Reject)r	   ra   r
   r   r   r   rejectl  s    	zVoiceResponse.rejectc              	   K   s   |  tf ||||d|S a  
        Create a <Say> element

        :param message: Message to say
        :param voice: Voice to use
        :param loop: Times to loop message
        :param language: Message language
        :param kwargs: additional attributes

        :returns: <Say> element
        )messagevoicerM   r8   r   Sayr	   re   rf   rM   r8   r
   r   r   r   sayw  s    zVoiceResponse.sayc              
   K   s"   |  t|f|||||d|S )ay  
        Create a <Sms> element

        :param message: Message body
        :param to: Number to send message to
        :param from: Number to send message from
        :param action: Action URL
        :param method: Action URL method
        :param status_callback: Status callback URL
        :param kwargs: additional attributes

        :returns: <Sms> element
        )tofrom_r   r   status_callback)r   Sms)r	   re   rk   rl   r   r   rm   r
   r   r   r   sms  s    zVoiceResponse.smsc                 K   s:   |  tf |||||||||	|
||||||||d|S )a  
        Create a <Pay> element

        :param input: Input type Twilio should accept
        :param action: Action URL
        :param bank_account_type: Bank account type for ach transactions. If set, payment method attribute must be provided and value should be set to ach-debit. defaults to consumer-checking
        :param status_callback: Status callback URL
        :param status_callback_method: Status callback method
        :param timeout: Time to wait to gather input
        :param max_attempts: Maximum number of allowed retries when gathering input
        :param security_code: Prompt for security code
        :param postal_code: Prompt for postal code and it should be true/false or default postal code
        :param min_postal_code_length: Prompt for minimum postal code length
        :param payment_connector: Unique name for payment connector
        :param payment_method: Payment method to be used. defaults to credit-card
        :param token_type: Type of token
        :param charge_amount: Amount to process. If value is greater than 0 then make the payment else create a payment token
        :param currency: Currency of the amount attribute
        :param description: Details regarding the payment
        :param valid_card_types: Comma separated accepted card types
        :param language: Language to use
        :param kwargs: additional attributes

        :returns: <Pay> element
        )r0   r   bank_account_typerm   status_callback_methodr   max_attemptssecurity_codepostal_codemin_postal_code_lengthpayment_connectorpayment_method
token_typecharge_amountcurrencydescriptionvalid_card_typesr8   )r   Pay)r	   r0   r   rp   rm   rq   r   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r8   r
   r   r   r   pay  s0    /zVoiceResponse.payc              
   K   s    |  tf |||||d|S a  
        Create a <Prompt> element

        :param for_: Name of the payment source data element
        :param error_type: Type of error
        :param card_type: Type of the credit card
        :param attempt: Current attempt count
        :param require_matching_inputs: Require customer to input requested information twice and verify matching.
        :param kwargs: additional attributes

        :returns: <Prompt> element
        )for_
error_type	card_typeattemptrequire_matching_inputsr   Promptr	   r   r   r   r   r   r
   r   r   r   prompt  s    zVoiceResponse.promptc                 K   s   |  tf ||d|S )z
        Create a <Start> element

        :param action: Action URL
        :param method: Action URL method
        :param kwargs: additional attributes

        :returns: <Start> element
        r   )r   Startr   r   r   r   start  s    
zVoiceResponse.startc                 K   s   |  tf i |S )zy
        Create a <Stop> element

        :param kwargs: additional attributes

        :returns: <Stop> element
        )r   Stopr   r   r   r   stop  s    zVoiceResponse.stopc                 K   s   |  tf ||d|S )z
        Create a <Refer> element

        :param action: Action URL
        :param method: Action URL method
        :param kwargs: additional attributes

        :returns: <Refer> element
        r   )r   Referr   r   r   r   refer'  s    
zVoiceResponse.refer)NN)NNNNNNNNNNNNNNNNNN)NNNNNNN)NNNNNNNNNNNNNNNNNN)N)NNN)NNNN)NNNNNNNNNNNN)N)N)NNNN)NNNNN)NNNNNNNNNNNNNNNNNN)NNNNN)NN)NN)__name__
__module____qualname____doc__r   r   r'   r)   r/   r@   rB   rD   rJ   rR   rY   r   r`   rc   rj   ro   r~   r   r   r   r   __classcell__r   r   r   r   r      s   
                  
G       
(                  
G



    
"            
5


     
%                  
I     
 

r   c                       s(   e Zd ZdZ fddZdd Z  ZS )r   z<Refer> TwiML Verbc                    s    t t| jf i | d| _d S )Nr   )r   r   r   r   r   r   r   r   r   7  s    zRefer.__init__c                 K   s   |  t|fi |S )z
        Create a <Sip> element

        :param sip_url: SIP URL
        :param kwargs: additional attributes

        :returns: <Sip> element
        )r   ReferSipr	   sip_urlr
   r   r   r   sip;  s    	z	Refer.sip)r   r   r   r   r   r   r   r   r   r   r   r   4  s   r   c                       s    e Zd ZdZ fddZ  ZS )r   z <Sip> TwiML Noun used in <Refer>c                    s&   t t| jf i | d| _|| _d S NSip)r   r   r   r   valuer   r   r   r   r   J  s    zReferSip.__init__r   r   r   r   r   r   r   r   r   r   r   G  s   r   c                       s4   e Zd ZdZ fddZd	ddZd
ddZ  ZS )r   z<Stop> TwiML Verbc                    s    t t| jf i | d| _d S )Nr   )r   r   r   r   r   r   r   r   r   S  s    zStop.__init__Nc                 K   s"   |  tf ||||||d|S a  
        Create a <Stream> element

        :param name: Friendly name given to the Stream
        :param connector_name: Unique name for Stream Connector
        :param url: URL of the remote service where the Stream is routed
        :param track: Track to be streamed to remote service
        :param status_callback: Status Callback URL
        :param status_callback_method: Status Callback URL method
        :param kwargs: additional attributes

        :returns: <Stream> element
        )r   connector_namerL   trackrm   rq   r   Streamr	   r   r   rL   r   rm   rq   r
   r   r   r   streamW  s    zStop.streamc                 K   s   |  tf |||d|S a&  
        Create a <Siprec> element

        :param name: Friendly name given to SIPREC
        :param connector_name: Unique name for Connector
        :param track: Track to be streamed to remote service
        :param kwargs: additional attributes

        :returns: <Siprec> element
        )r   r   r   r   Siprecr	   r   r   r   r
   r   r   r   siprecz  s    zStop.siprec)NNNNNN)NNNr   r   r   r   r   r   r   r   r   r   r   r   r   P  s         
#r   c                       s*   e Zd ZdZ fddZdddZ  ZS )r   z<Siprec> TwiML Nounc                    s    t t| jf i | d| _d S )Nr   )r   r   r   r   r   r   r   r   r     s    zSiprec.__init__Nc                 K   s   |  tf ||d|S z
        Create a <Parameter> element

        :param name: The name of the custom parameter
        :param value: The value of the custom parameter
        :param kwargs: additional attributes

        :returns: <Parameter> element
        r   r   r   	Parameterr	   r   r   r
   r   r   r   	parameter  s    
zSiprec.parameter)NNr   r   r   r   r   r   r   r   r   r   r   r     s   r   c                       s    e Zd ZdZ fddZ  ZS )r   z<Parameter> TwiML Nounc                    s    t t| jf i | d| _d S )Nr   )r   r   r   r   r   r   r   r   r     s    zParameter.__init__r   r   r   r   r   r     s   r   c                       s*   e Zd ZdZ fddZdddZ  ZS )r   z<Stream> TwiML Nounc                    s    t t| jf i | d| _d S )Nr   )r   r   r   r   r   r   r   r   r     s    zStream.__init__Nc                 K   s   |  tf ||d|S r   r   r   r   r   r   r     s    
zStream.parameter)NNr   r   r   r   r   r     s   r   c                       s4   e Zd ZdZ fddZd	ddZd
ddZ  ZS )r   z<Start> TwiML Verbc                    s    t t| jf i | d| _d S )Nr   )r   r   r   r   r   r   r   r   r     s    zStart.__init__Nc                 K   s"   |  tf ||||||d|S r   r   r   r   r   r   r     s    zStart.streamc                 K   s   |  tf |||d|S r   r   r   r   r   r   r     s    zStart.siprec)NNNNNN)NNNr   r   r   r   r   r     s         
#r   c                       s>   e Zd ZdZ fddZdddZdddZdd	d
Z  ZS )r   z<Prompt> Twiml Verbc                    s    t t| jf i | d| _d S )Nr   )r   r   r   r   r   r   r   r   r     s    zPrompt.__init__Nc              	   K   s   |  tf ||||d|S rd   rg   ri   r   r   r   rj     s    z
Prompt.sayc                 K   s   |  tf |||d|S rK   rO   rQ   r   r   r   rR     s    zPrompt.playc                 K   s   |  tf d|i|S rE   rG   rI   r   r   r   rJ     s    	zPrompt.pause)NNNN)NNN)N)	r   r   r   r   r   rj   rR   rJ   r   r   r   r   r   r     s
   

r   c                       s    e Zd ZdZ fddZ  ZS )rH   z<Pause> TwiML Verbc                    s    t t| jf i | d| _d S )NrH   )r   rH   r   r   r   r   r   r   r   '  s    zPause.__init__r   r   r   r   r   rH   $  s   rH   c                       s"   e Zd ZdZd fdd	Z  ZS )rP   z<Play> TwiML VerbNc                    s*   t t| jf i | d| _|r&|| _d S )NrP   )r   rP   r   r   r   r	   rL   r
   r   r   r   r   /  s    zPlay.__init__)Nr   r   r   r   r   rP   ,  s   rP   c                       s   e Zd ZdZd fdd	ZdddZdddZdd	d
ZdddZdddZ	dddZ
d ddZd!ddZd"ddZd#ddZ  ZS )$rh   z<Say> TwiML VerbNc                    s*   t t| jf i | d| _|r&|| _d S )Nrh   )r   rh   r   r   r   r	   re   r
   r   r   r   r   9  s    zSay.__init__c                 K   s   |  tf ||d|S a4  
        Create a <Break> element

        :param strength: Set a pause based on strength
        :param time: Set a pause to a specific length of time in seconds or milliseconds, available values: [number]s, [number]ms
        :param kwargs: additional attributes

        :returns: <Break> element
        )strengthtimer   	SsmlBreakr	   r   r   r
   r   r   r   break_?  s    
z
Say.break_c                 K   s   |  tf ||d|S z
        Create a <Emphasis> element

        :param words: Words to emphasize
        :param level: Specify the degree of emphasis
        :param kwargs: additional attributes

        :returns: <Emphasis> element
        )wordslevelr   SsmlEmphasisr	   r   r   r
   r   r   r   emphasisK  s    
zSay.emphasisc                 K   s   |  tf ||d|S z
        Create a <Lang> element

        :param words: Words to speak
        :param xml:lang: Specify the language
        :param kwargs: additional attributes

        :returns: <Lang> element
        )r   xml_langr   SsmlLangr	   r   r   r
   r   r   r   langW  s    
zSay.langc                 K   s   |  tf d|i|S z
        Create a <P> element

        :param words: Words to speak
        :param kwargs: additional attributes

        :returns: <P> element
        r   r   SsmlPr	   r   r
   r   r   r   pc  s    	zSay.pc                 K   s   |  t|f||d|S a  
        Create a <Phoneme> element

        :param words: Words to speak
        :param alphabet: Specify the phonetic alphabet
        :param ph: Specifiy the phonetic symbols for pronunciation
        :param kwargs: additional attributes

        :returns: <Phoneme> element
        )alphabetphr   SsmlPhonemer	   r   r   r   r
   r   r   r   phonemen  s    zSay.phonemec              	   K   s   |  tf ||||d|S a  
        Create a <Prosody> element

        :param words: Words to speak
        :param volume: Specify the volume, available values: default, silent, x-soft, soft, medium, loud, x-loud, +ndB, -ndB
        :param rate: Specify the rate, available values: x-slow, slow, medium, fast, x-fast, n%
        :param pitch: Specify the pitch, available values: default, x-low, low, medium, high, x-high, +n%, -n%
        :param kwargs: additional attributes

        :returns: <Prosody> element
        )r   volumeratepitchr   SsmlProsodyr	   r   r   r   r   r
   r   r   r   prosody{  s    zSay.prosodyc                 K   s   |  tf d|i|S z
        Create a <S> element

        :param words: Words to speak
        :param kwargs: additional attributes

        :returns: <S> element
        r   r   SsmlSr   r   r   r   s  s    	zSay.sc                 K   s   |  t|f||d|S aD  
        Create a <Say-As> element

        :param words: Words to be interpreted
        :param interpret-as: Specify the type of words are spoken
        :param format: Specify the format of the date when interpret-as is set to date
        :param kwargs: additional attributes

        :returns: <Say-As> element
        )interpret_asformatr   	SsmlSayAsr	   r   r   r   r
   r   r   r   say_as  s    z
Say.say_asc                 K   s   |  t|fd|i|S a  
        Create a <Sub> element

        :param words: Words to be substituted
        :param alias: Substitute a different word (or pronunciation) for selected text such as an acronym or abbreviation
        :param kwargs: additional attributes

        :returns: <Sub> element
        aliasr   SsmlSubr	   r   r   r
   r   r   r   sub  s    
zSay.subc                 K   s   |  tf ||d|S u  
        Create a <W> element

        :param words: Words to speak
        :param role: Customize the pronunciation of words by specifying the word’s part of speech or alternate meaning
        :param kwargs: additional attributes

        :returns: <W> element
        )r   roler   SsmlWr	   r   r   r
   r   r   r   w  s    
zSay.w)N)NN)NN)NN)N)NN)NNNN)N)NN)N)NNr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rh   6  s   








rh   c                       s^   e Zd ZdZd fdd	ZdddZdddZdd	d
ZdddZdddZ	dddZ
  ZS )r   z>Improving Pronunciation by Specifying Parts of Speech in <Say>Nc                    s*   t t| jf i | d| _|r&|| _d S )Nr   )r   r   r   r   r   r   r   r   r   r     s    zSsmlW.__init__c                 K   s   |  tf ||d|S r   r   r   r   r   r   r     s    
zSsmlW.break_c                 K   s   |  tf ||d|S r   r   r   r   r   r   r     s    
zSsmlW.emphasisc                 K   s   |  t|f||d|S r   r   r   r   r   r   r     s    zSsmlW.phonemec              	   K   s   |  tf ||||d|S r   r   r   r   r   r   r     s    zSsmlW.prosodyc                 K   s   |  t|f||d|S r   r   r   r   r   r   r     s    zSsmlW.say_asc                 K   s   |  t|fd|i|S r   r   r   r   r   r   r     s    
z	SsmlW.sub)N)NN)NN)NN)NNNN)NN)N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s   




r   c                       s    e Zd ZdZ fddZ  ZS )r   z/Pronouncing Acronyms and Abbreviations in <Say>c                    s&   t t| jf i | d| _|| _d S )Nr   )r   r   r   r   r   r   r   r   r   r     s    zSsmlSub.__init__r   r   r   r   r   r     s   r   c                       s    e Zd ZdZ fddZ  ZS )r   z:Controlling How Special Types of Words Are Spoken in <Say>c                    s&   t t| jf i | d| _|| _d S )Nzsay-as)r   r   r   r   r   r   r   r   r   r   $  s    zSsmlSayAs.__init__r   r   r   r   r   r   !  s   r   c                       s   e Zd ZdZd fdd	ZdddZdddZdd	d
ZdddZdddZ	dddZ
d ddZd!ddZd"ddZd#ddZ  ZS )$r   z4Controling Volume, Speaking Rate, and Pitch in <Say>Nc                    s*   t t| jf i | d| _|r&|| _d S )Nr   )r   r   r   r   r   r   r   r   r   r   -  s    zSsmlProsody.__init__c                 K   s   |  tf ||d|S r   r   r   r   r   r   r   3  s    
zSsmlProsody.break_c                 K   s   |  tf ||d|S r   r   r   r   r   r   r   ?  s    
zSsmlProsody.emphasisc                 K   s   |  tf ||d|S r   r   r   r   r   r   r   K  s    
zSsmlProsody.langc                 K   s   |  tf d|i|S r   r   r   r   r   r   r   W  s    	zSsmlProsody.pc                 K   s   |  t|f||d|S r   r   r   r   r   r   r   b  s    zSsmlProsody.phonemec              	   K   s   |  tf ||||d|S r   r   r   r   r   r   r   o  s    zSsmlProsody.prosodyc                 K   s   |  tf d|i|S r   r   r   r   r   r   r     s    	zSsmlProsody.sc                 K   s   |  t|f||d|S r   r   r   r   r   r   r     s    zSsmlProsody.say_asc                 K   s   |  t|fd|i|S r   r   r   r   r   r   r     s    
zSsmlProsody.subc                 K   s   |  tf ||d|S r   r   r   r   r   r   r     s    
zSsmlProsody.w)N)NN)NN)NN)N)NN)NNNN)N)NN)N)NNr   r   r   r   r   r   *  s   








r   c                       sr   e Zd ZdZd fdd	ZdddZdddZdd	d
ZdddZdddZ	dddZ
dddZdddZ  ZS )r   z)Adding A Pause Between Sentences in <Say>Nc                    s*   t t| jf i | d| _|r&|| _d S )Nr   )r   r   r   r   r   r   r   r   r   r     s    zSsmlS.__init__c                 K   s   |  tf ||d|S r   r   r   r   r   r   r     s    
zSsmlS.break_c                 K   s   |  tf ||d|S r   r   r   r   r   r   r     s    
zSsmlS.emphasisc                 K   s   |  tf ||d|S r   r   r   r   r   r   r     s    
z
SsmlS.langc                 K   s   |  t|f||d|S r   r   r   r   r   r   r     s    zSsmlS.phonemec              	   K   s   |  tf ||||d|S r   r   r   r   r   r   r     s    zSsmlS.prosodyc                 K   s   |  t|f||d|S r   r   r   r   r   r   r     s    zSsmlS.say_asc                 K   s   |  t|fd|i|S r   r   r   r   r   r   r     s    
z	SsmlS.subc                 K   s   |  tf ||d|S r   r   r   r   r   r   r     s    
zSsmlS.w)N)NN)NN)NN)NN)NNNN)NN)N)NNr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s   






r   c                       s    e Zd ZdZ fddZ  ZS )r   z%Using Phonetic Pronunciation in <Say>c                    s&   t t| jf i | d| _|| _d S )Nr   )r   r   r   r   r   r   r   r   r   r   '  s    zSsmlPhoneme.__init__r   r   r   r   r   r   $  s   r   c                       s   e Zd ZdZd fdd	ZdddZdddZdd	d
ZdddZdddZ	dddZ
d ddZd!ddZd"ddZd#ddZ  ZS )$r   z7Specifying Another Language for Specific Words in <Say>Nc                    s*   t t| jf i | d| _|r&|| _d S )Nr   )r   r   r   r   r   r   r   r   r   r   0  s    zSsmlLang.__init__c                 K   s   |  tf ||d|S r   r   r   r   r   r   r   6  s    
zSsmlLang.break_c                 K   s   |  tf ||d|S r   r   r   r   r   r   r   B  s    
zSsmlLang.emphasisc                 K   s   |  tf ||d|S r   r   r   r   r   r   r   N  s    
zSsmlLang.langc                 K   s   |  tf d|i|S r   r   r   r   r   r   r   Z  s    	z
SsmlLang.pc                 K   s   |  t|f||d|S r   r   r   r   r   r   r   e  s    zSsmlLang.phonemec              	   K   s   |  tf ||||d|S r   r   r   r   r   r   r   r  s    zSsmlLang.prosodyc                 K   s   |  tf d|i|S r   r   r   r   r   r   r     s    	z
SsmlLang.sc                 K   s   |  t|f||d|S r   r   r   r   r   r   r     s    zSsmlLang.say_asc                 K   s   |  t|fd|i|S r   r   r   r   r   r   r     s    
zSsmlLang.subc                 K   s   |  tf ||d|S r   r   r   r   r   r   r     s    
z
SsmlLang.w)N)NN)NN)NN)N)NN)NNNN)N)NN)N)NNr   r   r   r   r   r   -  s   








r   c                       s|   e Zd ZdZd fdd	ZdddZdddZdd	d
ZdddZdddZ	dddZ
dddZdddZd ddZ  ZS )!r   z*Adding a Pause Between Paragraphs in <Say>Nc                    s*   t t| jf i | d| _|r&|| _d S )Nr   )r   r   r   r   r   r   r   r   r   r     s    zSsmlP.__init__c                 K   s   |  tf ||d|S r   r   r   r   r   r   r     s    
zSsmlP.break_c                 K   s   |  tf ||d|S r   r   r   r   r   r   r     s    
zSsmlP.emphasisc                 K   s   |  tf ||d|S r   r   r   r   r   r   r     s    
z
SsmlP.langc                 K   s   |  t|f||d|S r   r   r   r   r   r   r     s    zSsmlP.phonemec              	   K   s   |  tf ||||d|S r   r   r   r   r   r   r     s    zSsmlP.prosodyc                 K   s   |  tf d|i|S r   r   r   r   r   r   r     s    	zSsmlP.sc                 K   s   |  t|f||d|S r   r   r   r   r   r   r   
  s    zSsmlP.say_asc                 K   s   |  t|fd|i|S r   r   r   r   r   r   r     s    
z	SsmlP.subc                 K   s   |  tf ||d|S r   r   r   r   r   r   r   %  s    
zSsmlP.w)N)NN)NN)NN)NN)NNNN)N)NN)N)NN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s   







r   c                       sr   e Zd ZdZd fdd	ZdddZdddZdd	d
ZdddZdddZ	dddZ
dddZdddZ  ZS )r   zEmphasizing Words in <Say>Nc                    s*   t t| jf i | d| _|r&|| _d S )Nr   )r   r   r   r   r   r   r   r   r   r   5  s    zSsmlEmphasis.__init__c                 K   s   |  tf ||d|S r   r   r   r   r   r   r   ;  s    
zSsmlEmphasis.break_c                 K   s   |  tf ||d|S r   r   r   r   r   r   r   G  s    
zSsmlEmphasis.emphasisc                 K   s   |  tf ||d|S r   r   r   r   r   r   r   S  s    
zSsmlEmphasis.langc                 K   s   |  t|f||d|S r   r   r   r   r   r   r   _  s    zSsmlEmphasis.phonemec              	   K   s   |  tf ||||d|S r   r   r   r   r   r   r   l  s    zSsmlEmphasis.prosodyc                 K   s   |  t|f||d|S r   r   r   r   r   r   r   |  s    zSsmlEmphasis.say_asc                 K   s   |  t|fd|i|S r   r   r   r   r   r   r     s    
zSsmlEmphasis.subc                 K   s   |  tf ||d|S r   r   r   r   r   r   r     s    
zSsmlEmphasis.w)N)NN)NN)NN)NN)NNNN)NN)N)NNr   r   r   r   r   r   2  s   






r   c                       s    e Zd ZdZ fddZ  ZS )r   zAdding a Pause in <Say>c                    s    t t| jf i | d| _d S )Nbreak)r   r   r   r   r   r   r   r   r     s    zSsmlBreak.__init__r   r   r   r   r   r     s   r   c                       s4   e Zd ZdZ fddZd	ddZd
ddZ  ZS )r}   z<Pay> Twiml Verbc                    s    t t| jf i | d| _d S )Nr}   )r   r}   r   r   r   r   r   r   r     s    zPay.__init__Nc              
   K   s    |  tf |||||d|S r   r   r   r   r   r   r     s    z
Pay.promptc                 K   s   |  tf ||d|S r   r   r   r   r   r   r     s    
zPay.parameter)NNNNN)NN)r   r   r   r   r   r   r   r   r   r   r   r   r}     s        
 r}   c                       s    e Zd ZdZ fddZ  ZS )rn   z<Sms> TwiML Nounc                    s&   t t| jf i | d| _|| _d S )Nrn   )r   rn   r   r   r   r   r   r   r   r     s    zSms.__init__r   r   r   r   r   rn     s   rn   c                       s*   e Zd ZdZ fddZdddZ  ZS )rb   z<Reject> TwiML Verbc                    s    t t| jf i | d| _d S )Nrb   )r   rb   r   r   r   r   r   r   r     s    zReject.__init__Nc                 K   s   |  tf ||d|S r   r   r   r   r   r   r     s    
zReject.parameter)NNr   r   r   r   r   rb     s   rb   c                       s    e Zd ZdZ fddZ  ZS )r_   z<Redirect> TwiML Verbc                    s&   t t| jf i | d| _|| _d S )Nr_   )r   r_   r   r   r   r   r   r   r   r      s    zRedirect.__init__r   r   r   r   r   r_     s   r_   c                       s    e Zd ZdZ fddZ  ZS )r^   z<Record> TwiML Verbc                    s    t t| jf i | d| _d S )Nr^   )r   r^   r   r   r   r   r   r   r   	  s    zRecord.__init__r   r   r   r   r   r^     s   r^   c                       s    e Zd ZdZ fddZ  ZS )rW   z<Queue> TwiML Nounc                    s&   t t| jf i | d| _|| _d S )NrW   )r   rW   r   r   r   r	   r   r
   r   r   r   r     s    zQueue.__init__r   r   r   r   r   rW     s   rW   c                       s    e Zd ZdZ fddZ  ZS )rC   z<Leave> TwiML Verbc                    s    t t| jf i | d| _d S )NrC   )r   rC   r   r   r   r   r   r   r     s    zLeave.__init__r   r   r   r   r   rC     s   rC   c                       s*   e Zd ZdZ fddZdddZ  ZS )rA   z<Hangup> TwiML Verbc                    s    t t| jf i | d| _d S )NrA   )r   rA   r   r   r   r   r   r   r   "  s    zHangup.__init__Nc                 K   s   |  tf ||d|S r   r   r   r   r   r   r   &  s    
zHangup.parameter)NNr   r   r   r   r   rA     s   rA   c                       s>   e Zd ZdZ fddZdddZdddZdd	d
Z  ZS )r?   z<Gather> TwiML Verbc                    s    t t| jf i | d| _d S )Nr?   )r   r?   r   r   r   r   r   r   r   6  s    zGather.__init__Nc              	   K   s   |  tf ||||d|S rd   rg   ri   r   r   r   rj   :  s    z
Gather.sayc                 K   s   |  tf d|i|S rE   rG   rI   r   r   r   rJ   J  s    	zGather.pausec                 K   s   |  tf |||d|S rK   rO   rQ   r   r   r   rR   U  s    zGather.play)NNNN)N)NNN)	r   r   r   r   r   rj   rJ   rR   r   r   r   r   r   r?   3  s
   

r?   c                       s,   e Zd ZdZd fdd	ZdddZ  ZS )	r.   z<Enqueue> TwiML NounNc                    s*   t t| jf i | d| _|r&|| _d S )Nr.   )r   r.   r   r   r   r   r   r   r   r   f  s    zEnqueue.__init__c                 K   s   |  t|f||d|S )a  
        Create a <Task> element

        :param body: TaskRouter task attributes
        :param priority: Task priority
        :param timeout: Timeout associated with task
        :param kwargs: additional attributes

        :returns: <Task> element
        )priorityr   )r   Task)r	   bodyr   r   r
   r   r   r   taskl  s    zEnqueue.task)N)NN)r   r   r   r   r   r   r   r   r   r   r   r.   c  s   r.   c                       s    e Zd ZdZ fddZ  ZS )r   z<Task> TwiML Nounc                    s&   t t| jf i | d| _|| _d S )Nr   )r   r   r   r   r   )r	   r   r
   r   r   r   r   }  s    zTask.__init__r   r   r   r   r   r   z  s   r   c                       s    e Zd ZdZ fddZ  ZS )r(   z<Echo> TwiML Verbc                    s    t t| jf i | d| _d S )Nr(   )r   r(   r   r   r   r   r   r   r     s    zEcho.__init__r   r   r   r   r   r(     s   r(   c                       sf   e Zd ZdZd fdd	ZdddZdddZdd	d
ZdddZdd Z	dddZ
dddZ  ZS )r&   z<Dial> TwiML VerbNc                    s*   t t| jf i | d| _|r&|| _d S )Nr&   )r   r&   r   r   r   )r	   r   r
   r   r   r   r     s    zDial.__init__c                 K   s"   |  tf ||||||d|S )a  
        Create a <Client> element

        :param identity: Client identity
        :param url: Client URL
        :param method: Client URL Method
        :param status_callback_event: Events to trigger status callback
        :param status_callback: Status Callback URL
        :param status_callback_method: Status Callback URL Method
        :param kwargs: additional attributes

        :returns: <Client> element
        )identityrL   r   status_callback_eventrm   rq   )r   Client)r	   r   rL   r   r   rm   rq   r
   r   r   r   client  s    zDial.clientc                 K   s@   |  t|f||||||||	|
|||||||||||d|S )a.  
        Create a <Conference> element

        :param name: Conference name
        :param muted: Join the conference muted
        :param beep: Play beep when joining
        :param start_conference_on_enter: Start the conference on enter
        :param end_conference_on_exit: End the conferenceon exit
        :param wait_url: Wait URL
        :param wait_method: Wait URL method
        :param max_participants: Maximum number of participants
        :param record: Record the conference
        :param region: Conference region
        :param coach: Call coach
        :param trim: Trim the conference recording
        :param status_callback_event: Events to call status callback URL
        :param status_callback: Status callback URL
        :param status_callback_method: Status callback URL method
        :param recording_status_callback: Recording status callback URL
        :param recording_status_callback_method: Recording status callback URL method
        :param recording_status_callback_event: Recording status callback events
        :param event_callback_url: Event callback URL
        :param jitter_buffer_size: Size of jitter buffer for participant
        :param participant_label: A label for participant
        :param kwargs: additional attributes

        :returns: <Conference> element
        )mutedbeepstart_conference_on_enterend_conference_on_exitr+   wait_methodmax_participantsr   regioncoachr   r   rm   rq   r   r   r   event_callback_urljitter_buffer_sizeparticipant_label)r   
Conference)r	   r   r   r   r   r   r+   r  r  r   r  r  r   r   rm   rq   r   r   r   r  r  r  r
   r   r   r   
conference  s8    5zDial.conferencec                 K   s4   |  t|f||||||||	|
|||||d|S )a  
        Create a <Number> element

        :param phone_number: Phone Number to dial
        :param send_digits: DTMF tones to play when the call is answered
        :param url: TwiML URL
        :param method: TwiML URL method
        :param status_callback_event: Events to call status callback
        :param status_callback: Status callback URL
        :param status_callback_method: Status callback URL method
        :param byoc: BYOC trunk SID (Beta)
        :param machine_detection: Enable machine detection or end of greeting detection
        :param amd_status_callback_method: HTTP Method to use with amd_status_callback
        :param amd_status_callback: The URL we should call to send amd status information to your application
        :param machine_detection_timeout: Number of seconds to wait for machine detection
        :param machine_detection_speech_threshold: Number of milliseconds for measuring stick for the length of the speech activity
        :param machine_detection_speech_end_threshold: Number of milliseconds of silence after speech activity
        :param machine_detection_silence_timeout: Number of milliseconds of initial silence
        :param kwargs: additional attributes

        :returns: <Number> element
        )send_digitsrL   r   r   rm   rq   byocmachine_detectionamd_status_callback_methodamd_status_callbackmachine_detection_timeout"machine_detection_speech_threshold&machine_detection_speech_end_threshold!machine_detection_silence_timeout)r   Number)r	   phone_numberr
  rL   r   r   rm   rq   r  r  r  r  r  r  r  r  r
   r   r   r   r     s,    )zDial.numberc              	   K   s    |  t|f||||d|S rS   rV   rX   r   r   r   rY   E  s    z
Dial.queuec                 K   s   |  t|fi |S )z
        Create a <Sim> element

        :param sim_sid: SIM SID
        :param kwargs: additional attributes

        :returns: <Sim> element
        )r   Simr	   Zsim_sidr
   r   r   r   sime  s    	zDial.simc                 K   s4   |  t|f||||||||	|
|||||d|S )a  
        Create a <Sip> element

        :param sip_url: SIP URL
        :param username: SIP Username
        :param password: SIP Password
        :param url: Action URL
        :param method: Action URL method
        :param status_callback_event: Status callback events
        :param status_callback: Status callback URL
        :param status_callback_method: Status callback URL method
        :param machine_detection: Enable machine detection or end of greeting detection
        :param amd_status_callback_method: HTTP Method to use with amd_status_callback
        :param amd_status_callback: The URL we should call to send amd status information to your application
        :param machine_detection_timeout: Number of seconds to wait for machine detection
        :param machine_detection_speech_threshold: Number of milliseconds for measuring stick for the length of the speech activity
        :param machine_detection_speech_end_threshold: Number of milliseconds of silence after speech activity
        :param machine_detection_silence_timeout: Number of milliseconds of initial silence
        :param kwargs: additional attributes

        :returns: <Sip> element
        )usernamepasswordrL   r   r   rm   rq   r  r  r  r  r  r  r  )r   r   )r	   r   r  r  rL   r   r   rm   rq   r  r  r  r  r  r  r  r
   r   r   r   r   p  s,    )zDial.sipc	           
      K   s&   |  tf ||||||||d|	S )a  
        Create a <Application> element

        :param application_sid: Application sid
        :param url: TwiML URL
        :param method: TwiML URL Method
        :param status_callback_event: Events to trigger status callback
        :param status_callback: Status Callback URL
        :param status_callback_method: Status Callback URL Method
        :param customer_id: Identity of the customer calling application
        :param copy_parent_to: Copy parent call To field to called application side, otherwise use the application sid as To field
        :param kwargs: additional attributes

        :returns: <Application> element
        )application_sidrL   r   r   rm   rq   customer_idcopy_parent_to)r   Application)
r	   r  rL   r   r   rm   rq   r  r  r
   r   r   r   application  s    	zDial.application)N)NNNNNN)NNNNNNNNNNNNNNNNNNNN)NNNNNNNNNNNNNN)NNNN)NNNNNNNNNNNNNN)NNNNNNNN)r   r   r   r   r   r   r	  r   rY   r  r   r  r   r   r   r   r   r&     s         
&                    
S              
A    
               
@        r&   c                       s4   e Zd ZdZd	 fdd	Zdd Zd
ddZ  ZS )r  z<Application> TwiML NounNc                    s*   t t| jf i | d| _|r&|| _d S )Nr  )r   r  r   r   r   )r	   r  r
   r   r   r   r     s    zApplication.__init__c                 K   s   |  t|fi |S )z
        Create a <ApplicationSid> element

        :param sid: Application sid to dial
        :param kwargs: additional attributes

        :returns: <ApplicationSid> element
        )r   ApplicationSidr	   Zsidr
   r   r   r   r    s    	zApplication.application_sidc                 K   s   |  tf ||d|S r   r   r   r   r   r   r     s    
zApplication.parameter)N)NN)r   r   r   r   r   r  r   r   r   r   r   r   r    s   r  c                       s    e Zd ZdZ fddZ  ZS )r  z<ApplicationSid> TwiML Nounc                    s&   t t| jf i | d| _|| _d S )Nr  )r   r  r   r   r   r   r   r   r   r     s    zApplicationSid.__init__r   r   r   r   r   r    s   r  c                       s    e Zd ZdZ fddZ  ZS )r   z<Sip> TwiML Nounc                    s&   t t| jf i | d| _|| _d S r   )r   r   r   r   r   r   r   r   r   r   	  s    zSip.__init__r   r   r   r   r   r   	  s   r   c                       s    e Zd ZdZ fddZ  ZS )r  z<Sim> TwiML Nounc                    s&   t t| jf i | d| _|| _d S )Nr  )r   r  r   r   r   r  r   r   r   r   	  s    zSim.__init__r   r   r   r   r   r  	  s   r  c                       s    e Zd ZdZ fddZ  ZS )r  z<Number> TwiML Nounc                    s&   t t| jf i | d| _|| _d S )Nr  )r   r  r   r   r   )r	   r  r
   r   r   r   r   	  s    zNumber.__init__r   r   r   r   r   r  	  s   r  c                       s    e Zd ZdZ fddZ  ZS )r  z<Conference> TwiML Nounc                    s&   t t| jf i | d| _|| _d S )Nr  )r   r  r   r   r   r   r   r   r   r    	  s    zConference.__init__r   r   r   r   r   r  	  s   r  c                       s4   e Zd ZdZd	 fdd	Zdd Zd
ddZ  ZS )r   z<Client> TwiML NounNc                    s*   t t| jf i | d| _|r&|| _d S )Nr   )r   r   r   r   r   )r	   r   r
   r   r   r   r   )	  s    zClient.__init__c                 K   s   |  t|fi |S )z
        Create a <Identity> element

        :param client_identity: Identity of the client to dial
        :param kwargs: additional attributes

        :returns: <Identity> element
        )r   Identityr	   Zclient_identityr
   r   r   r   r   /	  s    	zClient.identityc                 K   s   |  tf ||d|S r   r   r   r   r   r   r   :	  s    
zClient.parameter)N)NN)r   r   r   r   r   r   r   r   r   r   r   r   r   &	  s   r   c                       s    e Zd ZdZ fddZ  ZS )r!  z<Identity> TwiML Nounc                    s&   t t| jf i | d| _|| _d S )Nr!  )r   r!  r   r   r   r"  r   r   r   r   J	  s    zIdentity.__init__r   r   r   r   r   r!  G	  s   r!  c                       sP   e Zd ZdZ fddZdddZdd Zdd	d
ZdddZdddZ	  Z
S )r   z<Connect> TwiML Verbc                    s    t t| jf i | d| _d S )Nr   )r   r   r   r   r   r   r   r   r   S	  s    zConnect.__init__Nc                 K   s   |  t|fd|i|S )z
        Create a <Room> element

        :param name: Room name
        :param participant_identity: Participant identity when connecting to the Room
        :param kwargs: additional attributes

        :returns: <Room> element
        participant_identity)r   Room)r	   r   r#  r
   r   r   r   roomW	  s    
zConnect.roomc                 K   s   |  t|fi |S )z
        Create a <Autopilot> element

        :param name: Autopilot assistant sid or unique name
        :param kwargs: additional attributes

        :returns: <Autopilot> element
        )r   	Autopilotr   r   r   r   	autopilote	  s    	zConnect.autopilotc                 K   s"   |  tf ||||||d|S r   r   r   r   r   r   r   p	  s    zConnect.streamc              
   K   s    |  tf |||||d|S )a5  
        Create a <VirtualAgent> element

        :param connector_name: Defines the conversation profile Dialogflow needs to use
        :param language: Language to be used by Dialogflow to transcribe speech
        :param sentiment_analysis: Whether sentiment analysis needs to be enabled or not
        :param status_callback: URL to post status callbacks from Twilio
        :param status_callback_method: HTTP method to use when requesting the status callback URL
        :param kwargs: additional attributes

        :returns: <VirtualAgent> element
        )r   r8   sentiment_analysisrm   rq   )r   VirtualAgent)r	   r   r8   r(  rm   rq   r
   r   r   r   virtual_agent	  s    zConnect.virtual_agentc                 K   s2   |  tf |||||||||	|
||||d|S )a  
        Create a <Conversation> element

        :param service_instance_sid: Service instance Sid
        :param inbound_autocreation: Inbound autocreation
        :param routing_assignment_timeout: Routing assignment timeout
        :param inbound_timeout: Inbound timeout
        :param url: TwiML URL
        :param method: TwiML URL method
        :param record: Record
        :param trim: Trim
        :param recording_status_callback: Recording status callback URL
        :param recording_status_callback_method: Recording status callback URL method
        :param recording_status_callback_event: Recording status callback events
        :param status_callback: Status callback URL
        :param status_callback_method: Status callback URL method
        :param status_callback_event: Events to call status callback URL
        :param kwargs: additional attributes

        :returns: <Conversation> element
        )service_instance_sidinbound_autocreationrouting_assignment_timeoutinbound_timeoutrL   r   r   r   r   r   r   rm   rq   r   )r   Conversation)r	   r+  r,  r-  r.  rL   r   r   r   r   r   r   rm   rq   r   r
   r   r   r   conversation	  s(    'zConnect.conversation)N)NNNNNN)NNNNN)NNNNNNNNNNNNNN)r   r   r   r   r   r%  r'  r   r*  r0  r   r   r   r   r   r   P	  s@   
      
%     
"              r   c                       s    e Zd ZdZ fddZ  ZS )r/  z<Conversation> TwiML Nounc                    s    t t| jf i | d| _d S )Nr/  )r   r/  r   r   r   r   r   r   r   	  s    zConversation.__init__r   r   r   r   r   r/  	  s   r/  c                       s4   e Zd ZdZ fddZd	ddZd
ddZ  ZS )r)  z<VirtualAgent> TwiML Nounc                    s    t t| jf i | d| _d S )Nr)  )r   r)  r   r   r   r   r   r   r   	  s    zVirtualAgent.__init__Nc                 K   s   |  tf ||d|S )z
        Create a <Config> element

        :param name: The name of the custom config
        :param value: The value of the custom config
        :param kwargs: additional attributes

        :returns: <Config> element
        r   )r   Configr   r   r   r   config	  s    
zVirtualAgent.configc                 K   s   |  tf ||d|S r   r   r   r   r   r   r   

  s    
zVirtualAgent.parameter)NN)NN)r   r   r   r   r   r2  r   r   r   r   r   r   r)  	  s   
r)  c                       s    e Zd ZdZ fddZ  ZS )r1  z<Config> TwiML Nounc                    s    t t| jf i | d| _d S )Nr1  )r   r1  r   r   r   r   r   r   r   
  s    zConfig.__init__r   r   r   r   r   r1  
  s   r1  c                       s    e Zd ZdZ fddZ  ZS )r&  z<Autopilot> TwiML Nounc                    s&   t t| jf i | d| _|| _d S )Nr&  )r   r&  r   r   r   r   r   r   r   r   "
  s    zAutopilot.__init__r   r   r   r   r   r&  
  s   r&  c                       s    e Zd ZdZ fddZ  ZS )r$  z<Room> TwiML Nounc                    s&   t t| jf i | d| _|| _d S )Nr$  )r   r$  r   r   r   r   r   r   r   r   +
  s    zRoom.__init__r   r   r   r   r   r$  (
  s   r$  N)4r   Ztwilio.twimlr   r   r   r   r   r   r   r   r   r   rH   rP   rh   r   r   r   r   r   r   r   r   r   r   r}   rn   rb   r_   r^   rW   rC   rA   r?   r.   r   r(   r&   r  r  r   r  r  r  r   r!  r   r/  r)  r1  r&  r$  r   r   r   r   <module>   sx       *	::0
 	Z		 	r	 	}r4			0	  O!					!	   	