I couldn't find any official documentation specifying what each parameter to a `sla_miss_callback` callable are. This would be a great addition to know how to properly format the messages sent.
airflow/models/dag.py
:param creating_job_id: id of the job creating this DagRun
        :type creating_job_id: int
        :param session: database session
        :type session: sqlalchemy.orm.session.Session
        :param dag_hash: Hash of Serialized DAG
        :type dag_hash: str
        :param data_interval: Data interval of the DagRun
        :type data_interval: tuple[datetime, datetime] | None
        """
        if run_id:  
            if not isinstance(run_id, str):
                raise ValueError(f"`run_id` expected to be a str is {type(run_id)}")
            if not run_type:
                run_type = DagRunType.from_run_id(run_id)
        elif run_type and execution_date is not None:  
            if not isinstance(run_type, DagRunType):
                raise ValueError(f"`run_type` expected to be a DagRunType is {type(run_type)}")
            run_id = DagRun.generate_run_id(run_type, execution_date)
        else:
            raise AirflowException(
                "Creating DagRun needs either `run_id` or both `run_type` and `execution_date`"
            )
        logical_date = timezone.coerce_datetime(execution_date)
        if data_interval is None and logical_date is not None:
            warnings.warn(
                "Calling `DAG.create_dagrun()` without an explicit data interval is deprecated",
                DeprecationWarning,
                stacklevel=3,
            )
            if run_type == DagRunType.MANUAL: