Process request body given skill logic.

        To validate a request, both, url and sig are required.

        Attributes received through body will be automatically added to the
            response.

        Args:
            body: str. HTTP request body.
            url: str. SignatureCertChainUrl header value sent by request.
                PEM-encoded X.509 certificate chain that Alexa used to sign the
                message.
            sig: str. Signature header value sent by request. Base64-encoded
                signature of the request body.

        Return:
            str or bool: HTTP response body or False if the request is invalid.

def process(self, body, url=None, sig=None):
        """Process request body given skill logic.

        To validate a request, both, url and sig are required.

        Attributes received through body will be automatically added to the
            response.

        Args:
            body: str. HTTP request body.
            url: str. SignatureCertChainUrl header value sent by request.
                PEM-encoded X.509 certificate chain that Alexa used to sign the
                message.
            sig: str. Signature header value sent by request. Base64-encoded
                signature of the request body.

        Return:
            str or bool: HTTP response body or False if the request is invalid.
        """
        self.request = RequestBody()
        self.response = ResponseBody()

        self.request.parse(body)

        app_id = self.request.session.application.application_id
        stamp = self.request.request.timestamp
        if not self.valid.request(app_id, body, stamp, url, sig):
            return False

        self.pass_session_attributes()

        self.dispatch()

        if self.request.request.type == 'SessionEndedRequest':
            self.terminate()

        return self.response.to_json()