Slack-Benachrichtigungen von Autonomous Database senden

Beschreibt, wie Sie Slack so konfigurieren, dass Sie Nachrichten, Alerts oder die Ausgabe einer Abfrage von Autonomous Database an einen Slack-Kanal senden können. Außerdem werden die Verfahren beschrieben, mit denen Sie Slack-Benachrichtigungen senden.

Slack-Benachrichtigungen von Autonomous Database senden vorbereiten

Um Slack-Benachrichtigungen zu senden, müssen Sie Ihre Slack-Anwendung so konfigurieren, dass sie Nachrichten von Autonomous Database empfängt. Erstellen Sie als Nächstes Zugangsdaten für die DBMS_CLOUD_NOTIFICATION-Prozeduren, um Slack-Benachrichtigungen von Autonomous Database zu senden.

So verwenden Sie Slack mit DBMS_CLOUD_NOTIFICATION-Prozeduren:

  1. Erstellen Sie Ihre Slack-App.

    Die Slack-App wird in einem Slack-Workspace installiert, der wiederum Kanäle enthält, über die Nachrichten gesendet werden können. Für das Bottoken der Slack-App müssen die folgenden Berechtigungsbereiche definiert sein:

    channels:read
    chat:write
    files:write

    Informationen zum Einrichten einer Slack-App finden Sie unter App erstellen.

  2. Lassen Sie Ihren Slack-Administrator die Slack-App zu den Kanälen hinzufügen, an die DBMS_CLOUD_NOTIFICATION eine Nachricht über die Option "Integrationen" im Kanal senden kann.

    Weitere Informationen finden Sie unter Einfaches App-Setup.

  3. Suchen Sie das Bottoken der App, das auf der spezifischen Seite der Slack-Anwendung unter https://app.slack.com verfügbar ist.

    Weitere Informationen finden Sie unter Einfaches App-Setup.

  4. Erstellen Sie ein Zugangsdatenobjekt, um über Autonomous Database auf die Slack-App zuzugreifen.

    Tipp:

    Wenn Sie die Prozedur CREATE_CREDENTIAL nicht erfolgreich verwenden können, fragen Sie den ADMIN-Benutzer, um Ausführungszugriff für DBMS_CLOUD-Packages zu erteilen.

    Der Benutzername der Zugangsdaten lautet SLACK_TOKEN, und das Kennwort ist das Bottoken.

    Beispiel:

    BEGIN
       DBMS_CLOUD.CREATE_CREDENTIAL(
         credential_name => 'SLACK_CRED',
         username    => 'SLACK_TOKEN',
         password    => 'xoxb-34....96-34....52-zW....cy');
    END;
    /

    Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.

  5. Konfigurieren Sie die Zugriffskontrolle, um den Benutzerzugriff auf externe Netzwerkservices (Slack) zu ermöglichen.
    BEGIN
     DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE (
      host         => 'slack.com', 
      lower_port   => 443,
      upper_port   => 443,
      ace          => xs$ace_type(
          privilege_list => xs$name_list('http'),
          principal_name => example_invoking_user, 
          principal_type => xs_acl.ptype_db)); 
    END;

    Weitere Informationen finden Sie unter Zugriffskontrolle für externe Netzwerkservices konfigurieren.

  6. Wenn Sie SQL senden, konfigurieren Sie die Zugriffskontrolle, damit die Ausgabe mit DBMS_CLOUD_NOTIFICATION.SEND_DATA gesendet werden kann.
    BEGIN
     DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE (
      host         => 'files.slack.com', 
      lower_port   => 443,
      upper_port   => 443,
      ace          => xs$ace_type(
          privilege_list => xs$name_list('http'),
          principal_name => example_invoking_user, 
          principal_type => xs_acl.ptype_db)); 
    END;

    Weitere Informationen finden Sie unter Zugriffskontrolle für externe Netzwerkservices konfigurieren.

Nachrichten an einen Slack-Kanal senden

Nachdem Sie das Slack-Zugangsdatenobjekt erstellt haben, wie unter Slack-Benachrichtigungen von Autonomous Database senden vorbereiten beschrieben, können Sie mit der Prozedur DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE eine Nachricht an einen Slack-Channel senden.
Beispiel:
BEGIN
   DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
      provider          => 'slack',
      credential_name   => 'SLACK_CRED',
      message           => 'Alert from Autonomous Database...',
      params            => json_object('channel' value 'C0....08'));
END;
/ 

Verwenden Sie den Parameter params, um den Slack-Kanal anzugeben.

  • channel: Gibt die Kanal-ID an.

    Die Kanal-ID ist eine eindeutige ID für einen Kanal und unterscheidet sich vom Kanalnamen. Wenn Sie in Slack Kanaldetails anzeigen, finden Sie die Kanal-ID auf der Registerkarte "Info". Weitere Informationen finden Sie unter So finden Sie Ihre Slack-Team-ID und Slack-Kanal-ID.

Weitere Informationen finden Sie unter Prozedur SEND_MESSAGE.

Abfrageergebnisse an einen Slack-Kanal senden

Nachdem Sie das Slack-Zugangsdatenobjekt erstellt haben, wie unter Slack-Benachrichtigungen von Autonomous Database senden vorbereiten beschrieben, können Sie die Ausgabe einer Abfrage mit der Prozedur DBMS_CLOUD_NOTIFICATION.SEND_DATA an einen Slack-Channel senden.
Beispiel:
BEGIN
  DBMS_CLOUD_NOTIFICATION.SEND_DATA(
      provider => 'slack',
      credential_name => 'SLACK_CRED',
      query => 'SELECT username, account_status, expiry_date FROM USER_USERS WHERE rownum < 5',
      params => json_object('channel' value 'C0....08',
                            'type' value 'csv'));
END;
/

Verwenden Sie den Parameter params, um den Slack-Kanal und den Datentyp anzugeben:

  • channel: Gibt die Kanal-ID an.

    Die Kanal-ID ist eine eindeutige ID für einen Kanal und unterscheidet sich vom Kanalnamen. Wenn Sie in Slack Kanaldetails anzeigen, finden Sie die Kanal-ID auf der Registerkarte "Info". Weitere Informationen finden Sie unter So finden Sie Ihre Slack-Team-ID und Slack-Kanal-ID.

  • type: Gibt den Ausgabetyp an. Gültige Werte sind: "csv" oder "json".

Weitere Informationen finden Sie unter Prozedur SEND_DATA.