class_docstr: Input channel for Twilio Voice.
class_docstr_tok: ["Input","channel","for","Twilio","Voice","."]
docstr: Checks that the user configurations are valid.
docstr_tok: ["Checks","that","the","user","configurations","are","valid","."]
code: def _validate_configuration(self) -> None:
      """Checks that the user configurations are valid."""
      if self.assistant_voice not in self.SUPPORTED_VOICES:
          self._raise_invalid_voice_exception()
  
      try:
          int(self.speech_timeout)
      except ValueError:
          if self.speech_timeout.lower() != "auto":
              self._raise_invalid_speech_timeout_exception()
  
      if self.speech_model not in self.SUPPORTED_SPEECH_MODELS:
          self._raise_invalid_speech_model_exception()
  
      if self.enhanced.lower() not in [
          "true",
          "false",
      ]:
          self._raise_invalid_enhanced_option_exception()
  
      if (
          self.enhanced.lower() == "true"
          and self.speech_model.lower() != "phone_call"
      ):
          self._raise_invalid_enhanced_speech_model_exception()
  
      if (
          self.speech_model.lower() != "numbers_and_commands"
          and self.speech_timeout.lower() == "auto"
      ):
          self._raise_invalid_speech_model_timeout_exception()
  
imports: from sanic import Blueprint, response
  from sanic.request import Request
  from sanic.response import HTTPResponse
  from twilio.twiml.voice_response import VoiceResponse, Gather
  from typing import Text, Callable, Awaitable, List, Any, Dict, Optional
  import rasa.utils.io
  import rasa.shared.utils.io
  from rasa.shared.core.events import BotUttered
  from rasa.shared.exceptions import InvalidConfigException
  from rasa.core.channels.channel import InputChannel, CollectingOutputChannel, UserMessage
label_desc: Use image node_id 4 for calling the TwilioVoiceInput obj's underlying member method code with example usage: obj._validate_configuration() without return types