Invia notifiche Slack da Autonomous Database

Descrive come configurare Slack in modo da poter inviare messaggi, avvisi o output di una query da Autonomous Database a un canale Slack. Vengono inoltre descritte le procedure utilizzate per inviare le notifiche Slack.

Preparati a inviare notifiche Slack da Autonomous Database

Per inviare notifiche Slack, devi configurare l'applicazione Slack in modo che riceva messaggi da Autonomous Database. Creare quindi una credenziale da utilizzare con le procedure DBMS_CLOUD_NOTIFICATION per inviare notifiche Slack da Autonomous Database.

Per utilizzare Slack con le procedure DBMS_CLOUD_NOTIFICATION:

  1. Creare l'app Slack.

    L'applicazione Slack viene installata in un'area di lavoro Slack, che a sua volta dispone di canali in cui è possibile inviare messaggi. Per il token bot dell'applicazione Slack devono essere definiti i seguenti ambiti di autorizzazione:

    channels:read
    chat:write
    files:write

    Per informazioni sull'impostazione di un'applicazione Slack, vedere Creazione di un'applicazione.

  2. Chiedere all'amministratore di Slack di aggiungere l'applicazione Slack ai canali a cui DBMS_CLOUD_NOTIFICATION può inviare il messaggio tramite l'opzione "Integrazioni" nel canale.

    Per ulteriori informazioni, vedere Impostazione di base dell'applicazione.

  3. Individuare il token bot dell'applicazione disponibile nella pagina specifica dell'applicazione Slack, in https://app.slack.com.

    Per ulteriori informazioni, vedere Impostazione di base dell'applicazione.

  4. Creare un oggetto credenziali per accedere all'applicazione Slack da Autonomous Database.

    Suggerimento

    Se non è possibile utilizzare correttamente la procedura CREATE_CREDENTIAL, consultare l'utente ADMIN per concedere l'accesso di esecuzione sui package DBMS_CLOUD.

    Il nome utente della credenziale è SLACK_TOKEN e la password è il token bot.

    Ad esempio:

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

    Per ulteriori informazioni, vedere CREATE_CREDENTIAL Procedura.

  5. Configurare il controllo dell'accesso per consentire all'utente di accedere ai servizi di rete esterni (Slack).
    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;

    Per ulteriori informazioni, vedere Configurazione del controllo dell'accesso per i servizi di rete esterni.

  6. Se si sta inviando SQL, configurare il controllo dell'accesso per consentire l'invio dell'output con DBMS_CLOUD_NOTIFICATION.SEND_DATA.
    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;

    Per ulteriori informazioni, vedere Configurazione del controllo dell'accesso per i servizi di rete esterni.

Inviare messaggi a un canale Slack

Dopo aver creato l'oggetto delle credenziali Slack come descritto in Prepara a inviare notifiche Slack da Autonomous Database, è possibile utilizzare la procedura DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE per inviare un messaggio a un canale Slack.
Ad esempio:
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;
/ 

Utilizzare il parametro params per specificare il canale Slack.

  • channel: specifica l'ID canale.

    L'ID canale è un ID univoco per un canale ed è diverso dal nome del canale. In Slack, quando si visualizzano i dettagli del canale, è possibile trovare l'ID canale nella scheda "Informazioni". Per ulteriori informazioni, vedere Come trovare l'ID team Slack e l'ID canale Slack.

Per ulteriori informazioni, vedere SEND_MESSAGE Procedura.

Invia risultati query a un canale Slack

Dopo aver creato l'oggetto delle credenziali Slack come descritto in Prepara a inviare notifiche Slack da Autonomous Database, è possibile utilizzare la procedura DBMS_CLOUD_NOTIFICATION.SEND_DATA per inviare l'output di una query a un canale Slack.
Ad esempio:
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;
/

Utilizzare il parametro params per specificare il canale Slack e il tipo di dati:

  • channel: specifica l'ID canale.

    L'ID canale è un ID univoco per un canale ed è diverso dal nome del canale. In Slack, quando si visualizzano i dettagli del canale, è possibile trovare l'ID canale nella scheda "Informazioni". Per ulteriori informazioni, vedere Come trovare l'ID team Slack e l'ID canale Slack.

  • type: specifica il tipo di output. I valori validi sono: 'csv' o 'json'.

Per ulteriori informazioni, vedere SEND_DATA Procedura.