<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def create_customer_request(self, fields=None, prefetch=True, **fieldargs):
 """Create a new customer request and return an issue Resource for it. Each keyword argument (other than the predefined ones) is treated as a field name and the argument's value is treated as the intended value for that field -- if the fields argument is used, all other keyword arguments will be ignored. By default, the client will immediately reload the issue Resource created by this method in order to return a complete Issue object to the caller; this behavior can be controlled through the 'prefetch' argument. JIRA projects may contain many different issue types. Some issue screens have different requirements for fields in a new issue. This information is available through the 'createmeta' method. Further examples are available here: https://developer.atlassian.com/display/JIRADEV/JIRA+REST+API+Example+-+Create+Issue :param fields: a dict containing field names and the values to use. If present, all other keyword arguments will be ignored :type fields: Dict[str, Any] :param prefetch: whether to reload the created issue Resource so that all of its data is present in the value returned from this method :type prefetch: bool :rtype: Issue """

        data = fields

        p = data['serviceDeskId']
        service_desk = None

        if isinstance(p, string_types) or isinstance(p, integer_types):
            service_desk = self.service_desk(p)
        elif isinstance(p, ServiceDesk):
            service_desk = p

        data['serviceDeskId'] = service_desk.id

        p = data['requestTypeId']
        if isinstance(p, integer_types):
            data['requestTypeId'] = p
        elif isinstance(p, string_types):
            data['requestTypeId'] = self.request_type_by_name(
                service_desk, p).id

        url = self._options['server'] + '/rest/servicedeskapi/request'
        headers = {'X-ExperimentalApi': 'opt-in'}
        r = self._session.post(url, headers=headers, data=json.dumps(data))

        raw_issue_json = json_loads(r)
        if 'issueKey' not in raw_issue_json:
            raise JIRAError(r.status_code, request=r)
        if prefetch:
            return self.issue(raw_issue_json['issueKey'])
        else:
            return Issue(self._options, self._session, raw=raw_issue_json)