def send(self, notification_type, message, targets, options, **kwargs):
        """
        A typical check can be performed using the notify command:
        `lemur notify`

        While we receive a `targets` parameter here, it is unused, as Slack webhooks do not allow
        dynamic re-targeting of messages. The webhook itself specifies a channel.
        """
        attachments = None
        if notification_type == "expiration":
            attachments = create_expiration_attachments(message)

        elif notification_type == "rotation":
            attachments = create_rotation_attachments(message)

        if not attachments:
            raise Exception("Unable to create message attachments")

        body = {
            "text": f"Lemur {notification_type.capitalize()} Notification",
            "attachments": attachments,
            "channel": self.get_option("recipients", options),
            "username": self.get_option("username", options),
        }

        r = requests.post(self.get_option("webhook", options), json.dumps(body))

        if r.status_code not in [200]:
            raise Exception(f"Failed to send message. Slack response: {r.status_code} {body}")

        current_app.logger.info(
            f"Slack response: {r.status_code} Message Body: {body}"
        )

        A typical check can be performed using the notify command:
        `lemur notify`

        While we receive a `targets` parameter here, it is unused, as Slack webhooks do not allow
        dynamic re-targeting of messages. The webhook itself specifies a channel.
        
lemur/plugins/lemur_slack/plugin.py