code: def detect_intent_with_model_selection(project_id, session_id, audio_file_path,
                                         language_code):
      
      import dialogflow_v2beta1 as dialogflow
      session_client = dialogflow.SessionsClient()
  
      # Note: hard coding audio_encoding and sample_rate_hertz for simplicity.
      audio_encoding = dialogflow.enums.AudioEncoding.AUDIO_ENCODING_LINEAR_16
      sample_rate_hertz = 16000
  
      session_path = session_client.session_path(project_id, session_id)
      print('Session path: {}\n'.format(session_path))
  
      with open(audio_file_path, 'rb') as audio_file:
          input_audio = audio_file.read()
  
      # Which Speech model to select for the given request.
      # Possible models: video, phone_call, command_and_search, default
      model = 'phone_call'
  
      audio_config = dialogflow.types.InputAudioConfig(
          audio_encoding=audio_encoding, language_code=language_code,
          sample_rate_hertz=sample_rate_hertz,
          model=model)
      query_input = dialogflow.types.QueryInput(audio_config=audio_config)
  
      response = session_client.detect_intent(
          session=session_path, query_input=query_input,
          input_audio=input_audio)
  
      print('=' * 20)
      print('Query text: {}'.format(response.query_result.query_text))
      print('Detected intent: {} (confidence: {})\n'.format(
          response.query_result.intent.display_name,
          response.query_result.intent_detection_confidence))
      print('Fulfillment text: {}\n'.format(
          response.query_result.fulfillment_text))
docs: Returns the result of detect intent with model selection on an audio file
      as input
  
      Using the same `session_id` between requests allows continuation
      of the conversaion.