class_docstr: Natural language generator that generates messages based on responses.
  
  The responses can use variables to customize the utterances based on the
  state of the dialogue.
class_docstr_tok: ["Natural","language","generator","that","generates","messages","based","on","responses",".","The","responses","can","use","variables","to","customize","the","utterances","based","on","the","state","of","the","dialogue","."]
docstr: Combine slot values and key word arguments to fill responses.
docstr_tok: ["Combine","slot","values","and","key","word","arguments","to","fill","responses","."]
code: def _fill_response(
      self,
      response: Dict[Text, Any],
      filled_slots: Optional[Dict[Text, Any]] = None,
      **kwargs: Any,
  ) -> Dict[Text, Any]:
      """Combine slot values and key word arguments to fill responses."""
      # Getting the slot values in the response variables
      response_vars = self._response_variables(filled_slots, kwargs)
  
      keys_to_interpolate = [
          "text",
          "image",
          "custom",
          "buttons",
          "attachment",
          "quick_replies",
      ]
      if response_vars:
          for key in keys_to_interpolate:
              if key in response:
                  response[key] = interpolator.interpolate(
                      response[key], response_vars
                  )
      return response
  
file_path: rasa/rasa/core/nlg/response.py
imports: import copy
  import logging
  from rasa.shared.core.trackers import DialogueStateTracker
  from typing import Text, Any, Dict, Optional, List
  from rasa.core.nlg import interpolator
  from rasa.core.nlg.generator import NaturalLanguageGenerator, ResponseVariationFilter
  from rasa.shared.constants import RESPONSE_CONDITION
label_desc: Use image node_id 4 for calling the TemplatedNaturalLanguageGenerator obj's underlying member method code with example usage: obj._fill_response(response, filled_slots) and returns: response