Slack-Benachrichtigungen von Autonomous Database senden

Beschreibt, wie Sie Slack so konfigurieren, dass Sie Nachrichten, Alerts oder Ausgaben 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 vorbereiten

Um Slack-Benachrichtigungen zu senden, müssen Sie die Slack-Anwendung so konfigurieren, dass Nachrichten von Autonomous Database empfangen werden. Erstellen Sie als Nächstes Zugangsdaten, die mit den DBMS_CLOUD_NOTIFICATION-Prozeduren verwendet werden sollen, um Slack-Benachrichtigungen von Autonomous Database zu senden.

So verwenden Sie Slack mit DBMS_CLOUD_NOTIFICATION-Prozeduren:

  1. Slack-App erstellen

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

    channels:read
    chat:write
    files:write

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

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

    Weitere Informationen finden Sie unter Einfaches App-Setup.

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

    Weitere Informationen finden Sie unter Einfaches App-Setup.

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

    Tipp:

    Wenn Sie die Prozedur CREATE_CREDENTIAL nicht erfolgreich verwenden können, wenden Sie sich an 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.

    Beispiele:

    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) zuzulassen.
    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, um das Senden der Ausgabe mit DBMS_CLOUD_NOTIFICATION.SEND_DATA zuzulassen.
    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 Konfigurieren der Zugriffskontrolle für externe Netzwerkservices.

Nachrichten an einen Slack-Kanal senden

Nachdem Sie das Slack-Zugangsdatenobjekt wie unter Senden von Slack-Benachrichtigungen aus Autonomous Database vorbereiten beschrieben erstellt haben, können Sie mit der Prozedur DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE eine Nachricht an einen Slack-Kanal 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 Senden von Slack-Benachrichtigungen aus Autonomous Database vorbereiten beschrieben, können Sie die Ausgabe einer Abfrage mit der Prozedur DBMS_CLOUD_NOTIFICATION.SEND_DATA an einen Slack-Kanal 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;
/

Geben Sie mit dem Parameter params den Slack-Kanal und den Datentyp an:

  • 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.