<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_access_token_by_refresh_token(self, refresh_token, scope=None):
 """Function that is used to get a new access token using refresh token Parameters: * **refresh_token (str):
** refresh_token from get_tokens_by_code command * **scope (list, optional):
** a list of scopes. If not specified should grant access with scope provided in previous request Returns: **dict:** the tokens with expiry time. Example response:: { "access_token":"SlAV32hkKG", "expires_in":3600, "refresh_token":"aaAV32hkKG1" } """

        params = {
            "oxd_id": self.oxd_id,
            "refresh_token": refresh_token
        }

        if scope:
            params['scope'] = scope

        logger.debug("Sending command `get_access_token_by_refresh_token` with"
                     " params %s", params)
        response = self.msgr.request("get_access_token_by_refresh_token",
                                     **params)
        logger.debug("Received response: %s", response)

        if response['status'] == 'error':
            raise OxdServerError(response['data'])
        return response['data']