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. Descrive inoltre le procedure utilizzate per inviare notifiche Slack.

Preparati a inviare notifiche Slack da Autonomous Database

Per inviare notifiche Slack, è necessario configurare l'applicazione Slack in modo che riceva messaggi da Autonomous Database. Successivamente, creare 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. Crea la tua app Slack.

    L'app Slack è 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 sulla configurazione di un'app Slack, vedere Creazione di un'app.

  2. Chiedi all'amministratore di Slack di aggiungere l'app 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 credenziale 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 pacchetti 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 Procedure.

  5. Configurare il controllo dell'accesso per consentire l'accesso degli utenti 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 Configuring Access Control for External Network Services.

  6. Se si invia 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 Configuring Access Control for External Network Services.

Invia messaggi a un canale Slack

Dopo aver creato l'oggetto credenziale Slack come descritto in Preparazione all'invio di notifiche Slack da Autonomous Database, è possibile utilizzare la procedura DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE per inviare un messaggio a un canale Slack.
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 Procedure.

Invia risultati query a un canale Slack

Dopo aver creato l'oggetto credenziale Slack come descritto in Preparati 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.
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 Procedure.