def _get_fields(self, event, pull, message=None):
        """Constructs a dictionary of fields and replacement values based on the
        specified event and the status of the pull request.
        
        :arg event: one of ["start", "error", "finish"].
        :arg pull: an instance of PullRequest that has details about the current
          status of the pull request testing etc.
        :arg message: an additional contextual message to add in the __message__ field.
        """
        result = pull.fields_general(event)            
        if message is not None:
            result["__message__"] = message
            
        return result