Envoi de notifications Slack à partir d'Autonomous Database on Dedicated Exadata Infrastructure

Vous pouvez configurer Slack pour envoyer des messages, des alertes ou la sortie d'une requête à partir d'Autonomous Database on Dedicated Exadata Infrastructure vers un canal Slack à l'aide du package DBMS_CLOUD_NOTIFICATION.

Rubriques connexes

Préparation à l'envoi de notifications Slack à partir d'Autonomous Database

Pour envoyer des notifications Slack, vous devez configurer votre application Slack de sorte qu'elle reçoive des messages d'Autonomous Database. Créez ensuite des informations d'identification à utiliser avec les procédures DBMS_CLOUD_NOTIFICATION pour envoyer des notifications Slack à partir d'Autonomous Database.

Pour utiliser Slack avec les procédures DBMS_CLOUD_NOTIFICATION, procédez comme suit :

  1. Créez votre application Slack.

    L'application Slack est installée dans un espace de travail Slack, qui dispose à son tour de canaux où les messages peuvent être envoyés. Les portées d'accès suivantes doivent être définies pour le jeton de bot de l'application Slack :

    channels:read
    chat:write
    files:write

    Pour plus d'informations sur la configuration d'une application Slack, reportez-vous à Création d'une application.

  2. Demandez à l'administrateur Slack d'ajouter l'application Slack aux canaux auxquels DBMS_CLOUD_NOTIFICATION peut envoyer un message via l'option "Intégrations" du canal.

    Pour plus d'informations, reportez-vous à Configuration de base de l'application.

  3. Localisez le jeton de bot de l'application disponible sur la page propre à l'application Slack, sous https://app.slack.com.

    Pour plus d'informations, reportez-vous à Configuration de base de l'application.

  4. Sur Exadata Cloud@Customer, configurez les paramètres de proxy HTTP dans votre environnement pour permettre à la base de données d'accéder à Slack. Pour plus d'informations sur la configuration des paramètres de proxy HTTP lors de la création d'une infrastructure Exadata Cloud@Customer, reportez-vous à Utilisation de la console pour provisionner Exadata Database Service on Cloud@Customer.

    Remarques :

    La configuration réseau, y compris le proxy HTTP, ne peut être modifiée que jusqu'à ce que l'infrastructure Exadata présente l'état Activation requise. Une fois activé, vous ne pouvez plus modifier ces paramètres.

    Afin de configurer un proxy HTTP pour une infrastructure Exadata déjà provisionnée, soumettez une demande de service dans My Oracle Support. Pour plus d'informations, reportez-vous à Création d'une demande d'assistance dans My Oracle Support.

  5. Créez un objet d'informations d'identification pour accéder à l'application Slack à partir d'Autonomous Database.

    Conseil :

    Si vous ne pouvez pas utiliser la procédure CREATE_CREDENTIAL, consultez l'utilisateur ADMIN pour accorder l'accès d'exécution aux packages DBMS_CLOUD.

    Le nom utilisateur des informations d'identification est SLACK_TOKEN et le mot de passe est le jeton de bot.

    Exemple :

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

    Pour plus d'informations, reportez-vous à Procédure CREATE_CREDENTIAL.

  6. Configurez le contrôle d'accès pour permettre à l'utilisateur d'accéder à des services réseau externes (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;
  7. Si vous envoyez du code SQL, configurez le contrôle d'accès pour autoriser l'envoi de la sortie avec DBMS_CLOUD_NOTIFICATION.SEND_DATA.
    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;

    Pour plus d'informations, reportez-vous à Configuration du contrôle d'accès pour les services réseau externes dans le Guide de sécurité Oracle Database 19c ou le Guide de sécurité Oracle Database 23ai.

Envoyer des messages à un canal Slack

Après avoir créé l'objet d'informations d'identification Slack, comme décrit dans Préparation à l'envoi de notifications Slack à partir d'Autonomous Database, vous pouvez utiliser la procédure DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE pour envoyer un message à un canal Slack.
Exemple :
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;
/ 

Utilisez le paramètre params pour indiquer le canal Slack.

  • channel : indique l'ID de canal.

    L'ID de canal est un ID unique pour un canal et est différent du nom du canal. Dans Slack, lorsque vous affichez les détails du canal, vous pouvez trouver l'ID de canal dans l'onglet "About". Pour plus d'informations, reportez-vous à Recherche de votre ID d'équipe Slack et de votre ID de canal Slack.

Pour plus d'informations, reportez-vous à Procédure SEND_MESSAGE.

Envoyer les résultats de la requête à un canal Slack

Après avoir créé l'objet d'informations d'identification Slack, comme décrit dans Préparation à l'envoi de notifications Slack à partir d'Autonomous Database, vous pouvez utiliser la procédure DBMS_CLOUD_NOTIFICATION.SEND_DATA pour envoyer la sortie d'une requête à un canal Slack.
Exemple :
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;
/

Utilisez le paramètre params pour indiquer le canal Slack et le type de données :

  • channel : indique l'ID de canal.

    L'ID de canal est un ID unique pour un canal et est différent du nom du canal. Dans Slack, lorsque vous affichez les détails du canal, vous pouvez trouver l'ID de canal dans l'onglet "About". Pour plus d'informations, reportez-vous à Recherche de votre ID d'équipe Slack et de votre ID de canal Slack.

  • type : indique le type de sortie. Les valeurs valides sont : 'csv' ou 'json'.

Pour plus d'informations, reportez-vous à Procédure SEND_DATA.