<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:mule="http://www.mulesoft.org/schema/mule/core" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://www.mulesoft.org/schema/mule/twiml">
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"></xs:import>
  <xs:import schemaLocation="http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" namespace="http://www.springframework.org/schema/beans"></xs:import>
  <xs:import schemaLocation="http://www.mulesoft.org/schema/mule/core/current/mule.xsd" namespace="http://www.mulesoft.org/schema/mule/core"></xs:import>
  <xs:import schemaLocation="http://www.mulesoft.org/schema/mule/devkit/current/mule-devkit.xsd" namespace="http://www.mulesoft.org/schema/mule/devkit"></xs:import>
  <xs:simpleType name="integerType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:integer"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="decimalType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:decimal"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="floatType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:float"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="doubleType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:double"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="dateTimeType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:dateTime"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="longType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:long"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="byteType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:byte"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="booleanType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:boolean"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="anyUriType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:anyURI"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="charType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:minLength value="1"></xs:minLength>
          <xs:maxLength value="1"></xs:maxLength>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:complexType name="XmlType">
    <xs:sequence>
      <xs:any maxOccurs="unbounded" minOccurs="0" processContents="lax"></xs:any>
    </xs:sequence>
    <xs:attribute name="ref" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation>The reference object for this parameter</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:element xmlns:devkit="http://www.mulesoft.org/schema/mule/devkit" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="config" substitutionGroup="mule:abstract-extension" devkit:javaClass="org.mule.modules.twiml.config.TwiMLModuleHttpCallbackAdapter">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mule:abstractExtensionType">
          <xs:annotation>
            <xs:documentation>A Mule module for generating Twilios Markup Language. Twilio can handle instructions for calls and SMS messages in
real time from iON applications. When an SMS or incoming call is received, Twilio looks up the iON app associated
with the phone number called and makes a request to it. iON will respond to the request and that response will
decides how the call should proceed by returning a Twilio Markup XML (TwiML) document telling Twilio to say text
to the caller, send an SMS message, play audio files, get input from the keypad, record audio, connect the call
to another phone and more.
&lt;p/&gt;
TwiML is similar to HTML. Just as HTML is rendered in a browser to display a webpage, TwiML is 'rendered' by Twilio
to the caller. Only one TwiML document is rendered to the caller at once but many documents can be linked together
to build complex interactive voice applications.
&lt;p/&gt;
Outgoing calls are controlled in the same manner as incoming calls using TwiML. The initial flow for the call is
provided as a parameter to the Twilio Cloud Connector.</xs:documentation>
          </xs:annotation>
          <xs:sequence>
            <xs:element name="http-callback-config" maxOccurs="1" minOccurs="0">
              <xs:annotation>
                <xs:documentation>Config for http callbacks.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:complexContent>
                  <xs:extension base="mule:abstractExtensionType">
                    <xs:attribute name="localPort" default="${http.port}" use="optional" type="xs:string"></xs:attribute>
                    <xs:attribute name="remotePort" default="${http.port}" use="optional" type="xs:string"></xs:attribute>
                    <xs:attribute name="domain" default="${fullDomain}" use="optional" type="xs:string"></xs:attribute>
                    <xs:attribute name="async" default="true" use="optional" type="xs:boolean"></xs:attribute>
                  </xs:extension>
                </xs:complexContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="name" use="optional" type="xs:string">
            <xs:annotation>
              <xs:documentation>Give a name to this configuration so it can be later referenced by config-ref.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/twiml" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="response" substitutionGroup="mule:abstract-message-processor" type="ResponseType">
    <xs:annotation>
      <xs:documentation>The root element of Twilio's XML Markup is the &lt;Response&gt; element. In any TwiML response to a Twilio request,
all verb elements must be nested within this element. Any other structure is considered invalid.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="ResponseType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:group ref="mule:messageProcessorOrOutboundEndpoint" maxOccurs="unbounded" minOccurs="0"></xs:group>
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="text" use="optional" type="xs:string"></xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/twiml" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="say" substitutionGroup="mule:abstract-message-processor" type="SayType">
    <xs:annotation>
      <xs:documentation>The Say verb converts text to speech that is read back to the caller. &lt;Say&gt; is useful for development or saying dynamic text that is difficult to pre-record.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="SayType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:group ref="mule:messageProcessorOrOutboundEndpoint" maxOccurs="unbounded" minOccurs="0"></xs:group>
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/twiml" name="lang" use="optional" type="TwiMLLanguageEnumType">
          <xs:annotation>
            <xs:documentation>The 'language' attribute allows you pick a voice with a specific language's accent and pronunciations. Twilio currently supports languages English, Spanish, French and German. The default is 'English'.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/twiml" name="voice" use="optional" type="TwiMLVoiceEnumType">
          <xs:annotation>
            <xs:documentation>The 'voice' attribute allows you to choose a male or female voice to read text back. The default value is 'man'.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/twiml" name="loop" default="1" use="optional" type="integerType">
          <xs:annotation>
            <xs:documentation>The 'loop' attribute specifies how many times you'd like the text repeated. The default is once. Specifying '0' will cause the the Say verb to loop until the call is hung up.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="text" use="optional" type="xs:string"></xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/twiml" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="play" substitutionGroup="mule:abstract-message-processor" type="PlayType">
    <xs:annotation>
      <xs:documentation>The Play verb plays an audio file back to the caller. Twilio retrieves the file from a URL that you provide.
&lt;p/&gt;
&lt;ul&gt;
&lt;li&gt;Twilio will attempt to cache the audio file the first time it is played. This means the first attempt may
be slow to play due to the time spent downloading the file from your remote server. Twilio may play a
processing sound while the file is being downloaded.&lt;/li&gt;
&lt;li&gt;Twilio obeys standard HTTP caching headers. If you change a file already cached by Twilio, make sure your
web server is sending the proper headers to inform us that the contents of the file have changed.&lt;/li&gt;
&lt;li&gt;Audio played over the telephone network is transcoded to a format the telephone network understands.
Regardless of the quality of the file you provide us, we will transcode so it plays correctly. This may result
in lower quality because the telephone number does not support high bitrate audio.&lt;/li&gt;
&lt;li&gt;High bitrate, lossy encoded files, such as 128kbps mp3 files, will take longer to transcode and potentially
sound worse than files that are in lossless 8kbps formats. This is due to the inevitable degradation that
occurs when converting from lossy compressed formats and the processing involved in converting from higher bit
rates to low bit rates.&lt;/li&gt;
&lt;/ul&gt;
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="PlayType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/twiml" name="loop" default="1" use="optional" type="integerType">
          <xs:annotation>
            <xs:documentation>The 'loop' attribute specifies how many times the audio file is played. The default behavior is to play the audio once. Specifying '0' will cause the the &lt;Play&gt; verb to loop until the call is hung up.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="file" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Audio file to play</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/twiml" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="gather" substitutionGroup="mule:abstract-message-processor" type="GatherType">
    <xs:annotation>
      <xs:documentation>The &lt;Gather&gt; verb collects digits that a caller enters into his or her telephone keypad. When the caller is
done entering data, Twilio submits that data to the provided 'action' URL in an HTTP GET or POST request, just
like a web browser submits data from an HTML form.
&lt;p/&gt;
If no input is received before timeout, &lt;Gather&gt; falls through to the next verb in the TwiML document.
&lt;p/&gt;
You may optionally nest &lt;Say&gt; and &lt;Play&gt; verbs within a &lt;Gather&gt; verb while waiting for input. This allows
you to read menu options to the caller while letting her enter a menu selection at any time. After the first
digit is received the audio will stop playing.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="GatherType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:group ref="mule:messageProcessorOrOutboundEndpoint" maxOccurs="unbounded" minOccurs="0"></xs:group>
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="action-flow-ref" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>When the caller has finished entering digits Twilio will make a GET request to this flow including a Digits variable which represent the digits the caller pressed, excluding the finishOnKey digit if used.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/twiml" name="timeout" default="5" use="optional" type="integerType">
          <xs:annotation>
            <xs:documentation>Sets the limit in seconds that Twilio will wait for the caller to press another digit before moving on and making a request to the 'action' flow. For example, if 'timeout' is '10', Twilio will wait ten seconds for the caller to press another key before submitting the previously entered digits to the 'action' flow. Twilio waits until completing the execution of all nested verbs before beginning the timeout period.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="finishOnKey" default="#" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>The 'finishOnKey' attribute lets you choose one value that submits the received data when entered. For example, if you set 'finishOnKey' to '#' and the user enters '1234#', Twilio will immediately stop waiting for more input when the '#' is received and will submit "Digits=1234" to the 'action' flow.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/twiml" name="numDigits" use="optional" type="integerType">
          <xs:annotation>
            <xs:documentation>The 'numDigits' attribute lets you set the number of digits you are expecting, and submits the data to the 'action' flow once the caller enters that number of digits. For example, one might set 'numDigits' to '5' and ask the caller to enter a 5 digit zip code. When the caller enters the fifth digit of '94117', Twilio will immediately submit the data to the 'action' flow.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="text" use="optional" type="xs:string"></xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/twiml" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="record" substitutionGroup="mule:abstract-message-processor" type="RecordType">
    <xs:annotation>
      <xs:documentation>The &lt;Record&gt; verb records the caller's voice and returns to you the URL of a file containing the audio
recording. You can optionally generate text transcriptions of recorded calls by setting the 'transcribe'
attribute of the &lt;Record&gt; verb to 'true'.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="RecordType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="action-flow-ref" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>The 'action' attribute takes an absolute or relative URL as a value. When recording is finished Twilio will make a request to this flow. After making this request, Twilio will continue the current call using the TwiML received in your response. There is one exception: if Twilio receives an empty recording, it will not make a request to the 'action' URL. The current call flow will continue with the next verb in the current TwiML document.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/twiml" name="timeout" default="5" use="optional" type="integerType">
          <xs:annotation>
            <xs:documentation>The 'timeout' attribute tells Twilio to end the recording after a number of seconds of silence has passed. The default is 5 seconds.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="finishOnKey" default="#" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>The 'finishOnKey' attribute lets you choose a set of digits that end the recording when entered. For example, if you set 'finishOnKey' to '#' and the caller presses '#', Twilio will immediately stop recording and submit 'RecordingUrl', 'RecordingDuration', and the '#' as parameters in a request to the 'action' flow. The allowed values are the digits 0-9, '#' and '*'. The default is '1234567890*#' (i.e. any key will end the recording). Unlike &lt;Gather&gt;, you may specify more than one character as a 'finishOnKey' value.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/twiml" name="maxLength" default="3600" use="optional" type="integerType">
          <xs:annotation>
            <xs:documentation>The 'maxLength' attribute lets you set the maximum length for the recording in seconds. If you set 'maxLength' to '30', the recording will automatically end after 30 seconds of recorded time has elapsed. This defaults to 3600 seconds (one hour) for a normal recording and 120 seconds (two minutes) for a transcribed recording.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/twiml" name="shouldTranscribe" default="false" use="optional" type="booleanType">
          <xs:annotation>
            <xs:documentation>The 'transcribe' attribute tells Twilio that you would like a text representation of the audio of the recording. Twilio will pass this recording to our speech-to-text engine and attempt to convert the audio to human readable text. The 'transcribe' option is off by default. If you do not wish to perform transcription, simply do not include the transcribe attribute.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="transcribe-flow-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>The 'transcribeCallback' attribute is used in conjunction with the 'transcribe' attribute. It allows you to specify a flow to which Twilio will make an asynchronous request when the transcription is complete.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/twiml" name="playBeep" default="true" use="optional" type="booleanType">
          <xs:annotation>
            <xs:documentation>The 'playBeep' attribute allows you to toggle between playing a sound before the start of a recording. If you set the value to 'false', no beep sound will be played.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/twiml" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="sms" substitutionGroup="mule:abstract-message-processor" type="SmsType">
    <xs:annotation>
      <xs:documentation>The &lt;Sms&gt; verb sends an SMS message to a phone number during a phone call.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="SmsType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:group ref="mule:messageProcessorOrOutboundEndpoint" maxOccurs="unbounded" minOccurs="0"></xs:group>
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="action-flow-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>The 'action' attribute takes a flow as an argument. After processing the &lt;Sms&gt; verb, Twilio will call this flow with the inbound headers 'SmsStatus' and 'SmsSid'. Using an 'action' flow, your application can receive synchronous notification that the message was successfully enqueued.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="from" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>The 'from' attribute takes a valid phone number as an argument. This number must be a phone number that you've purchased from or ported to Twilio. When sending an SMS during an incoming call, 'from' defaults to the called party. When sending an SMS during an outgoing call, 'from' defaults to the calling party. This number must be an SMS-capable local phone number assigned to your account. If the phone number isn't SMS-capable, then the &lt;Sms&gt; verb will not send an SMS message.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="to" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>The 'to' attribute takes a valid phone number as a value. Twilio will send an SMS message to this number. When sending an SMS during an incoming call, 'to' defaults to the caller. When sending an SMS during an outgoing call, 'to' defaults to the called party. The value of 'to' must be a valid phone number. NOTE: sending to short codes is not currently supported.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="status-flow-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Flow to call when SMS delivery status notification is required.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="text" use="optional" type="xs:string"></xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/twiml" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="dial" substitutionGroup="mule:abstract-message-processor" type="DialType">
    <xs:annotation>
      <xs:documentation>The &lt;Dial&gt; verb connects the current caller to an another phone. If the called party picks up, the two parties
are connected and can communicate until one hangs up. If the called party does not pick up, if a busy signal
is received, or if the number doesn't exist, the dial verb will finish.
&lt;p/&gt;
When the dialed call ends, Twilio makes a request to the 'action' flow if provided. Call flow will continue
using the TwiML received in response to that request.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="DialType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:group ref="mule:messageProcessorOrOutboundEndpoint" maxOccurs="unbounded" minOccurs="0"></xs:group>
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="action-flow-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>The 'action' attribute takes a flow as an argument. When the dialed call ends, Twilio will make a request to this flow. If you provide an 'action' flow, Twilio will continue the current call after the dialed party has hung up, using the TwiML received in your response to the 'action' URL request. Any TwiML verbs occuring after a &lt;Dial&gt; which specifies an 'action' attribute are unreachable. &lt;p/&gt; If no 'action' is provided, Dial will finish and Twilio will move on to the next TwiML verb in the document. If there is no next verb, Twilio will end the phone call. Note that this is different from the behavior of &lt;Record&gt; and &lt;Gather&gt;.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/twiml" name="timeout" default="30" use="optional" type="integerType">
          <xs:annotation>
            <xs:documentation>The 'timeout' attribute sets the limit in seconds that &lt;Dial&gt; waits for the called party to answer the call. Basically, how long should Twilio let the call ring before giving up and reporting 'no-answer' as the 'DialCallStatus'.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/twiml" name="hangupOnStar" default="false" use="optional" type="booleanType">
          <xs:annotation>
            <xs:documentation>The 'hangupOnStar' attribute lets the calling party hang up on the called party by pressing the '*' key on his phone. When two parties are connected using &lt;Dial&gt;, Twilio blocks execution of further verbs until the caller or called party hangs up. This feature allows the calling party to hang up on the called party without having to hang up her phone and ending her TwiML processing session. When the caller presses '*' Twilio will hang up on the called party. If an 'action' URL was provided, Twilio submits 'completed' as the 'DialCallStatus' to the URL and processes the response. If no 'action' was provided Twilio will continue on to the next verb in the current TwiML document.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/twiml" name="timeLimit" default="14400" use="optional" type="integerType">
          <xs:annotation>
            <xs:documentation>The 'timeLimit' attribute sets the maximum duration of the &lt;Dial&gt; in seconds. For example, by setting a time limit of 120 seconds &lt;Dial&gt; will hang up on the called party automatically two minutes into the phone call. By default, there is a four hour time limit set on calls.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="callerId" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>The 'callerId' attribute lets you specify the caller ID that will appear to the called party when Twilio calls. By default, when you put a &lt;Dial&gt; in your TwiML response to Twilio's inbound call request, the caller ID that the dialed party sees is the inbound caller's caller ID. &lt;p/&gt; For example, an inbound caller to your Twilio number has the caller ID 1-415-123-4567. You tell Twilio to execute a &lt;Dial&gt; verb to 1-858-987-6543 to handle the inbound call. The called party (1-858-987-6543) will see 1-415-123-4567 as the caller ID on the incoming call.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="text" use="optional" type="xs:string"></xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="TwiMLLanguageEnumType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="ENGLISH"></xs:enumeration>
          <xs:enumeration value="SPANSIH"></xs:enumeration>
          <xs:enumeration value="FRENCH"></xs:enumeration>
          <xs:enumeration value="GERMAN"></xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="TwiMLVoiceEnumType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="MAN"></xs:enumeration>
          <xs:enumeration value="WOMAN"></xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
</xs:schema>