async def METHOD_NAME(
    self,
    utter_action: Text,
    tracker: DialogueStateTracker,
    output_channel: Text,
    **kwargs: Any,
) -> Dict[Text, Any]:
    """Retrieve a named response from the domain using an endpoint."""
    domain_responses = kwargs.pop("domain_responses")
    response_id = self.fetch_response_id(
        utter_action, tracker, output_channel, domain_responses
    )
    kwargs["response_id"] = response_id
    body = nlg_request_format(utter_action, tracker, output_channel, **kwargs)
    logger.debug(
        "Requesting NLG for {} from {}."
        "The request body is {}."
        "".format(utter_action, self.nlg_endpoint.url, json.dumps(body))
    )
    response = await self.nlg_endpoint.request(
        method="post", json=body, timeout=DEFAULT_REQUEST_TIMEOUT
    )
    logger.debug(f"Received NLG response: {json.dumps(response)}")
    if isinstance(response, dict) and self.validate_response(response):
        return response
    else:
        raise RasaException("NLG web endpoint returned an invalid response.")