Envoyer des avis Slack à partir d'Autonomous Database sur une infrastructure Exadata dédiée

Vous pouvez configurer Slack pour envoyer des messages, des alertes ou la sortie d'une interrogation d'Autonomous Database sur une infrastructure Exadata dédiée à un canal Slack à l'aide de l'ensemble DBMS_CLOUD_NOTIFICATION.

Préparer l'envoi d'avis Slack à partir d'Autonomous Database

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

Pour utiliser Slack avec les procédures DBMS_CLOUD_NOTIFICATION :

  1. Créez votre application Slack.

    L'application Slack est installée dans un espace de travail Slack, qui comporte à son tour des canaux où les messages peuvent être envoyés. Les étendues d'autorisation suivantes doivent être définies pour le jeton de robot de l'application Slack :

    channels:read
    chat:write
    files:write

    Voir Création d'une application pour plus d'informations sur la configuration d'une application Slack.

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

    Pour plus d'informations, voir Configuration d'applications de base.

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

    Pour plus d'informations, voir Configuration d'applications de base.

  4. Sur Exadata Cloud@Customer, configurez les paramètres du mandataire HTTP dans votre environnement pour permettre à la base de données d'accéder à Slack. Voir Utilisation de la console pour provisionner le service Exadata Database sur Cloud@Customer pour plus d'informations sur la configuration des paramètres de mandataire HTTP lors de la création d'une infrastructure Exadata Cloud@Customer.

    Note :

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

    Pour configurer un mandataire HTTP pour une infrastructure Exadata déjà provisionnée, soumettez une demande de service dans My Oracle Support. Pour plus de détails, voir Créer une demande de service dans My Oracle Support.

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

    Conseil :

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

    Le nom d'utilisateur des données d'identification est SLACK_TOKEN et le mot de passe est le jeton du robot.

    Par 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, voir Procédure CREATE_CREDENTIAL.

  6. Configurez le contrôle d'accès pour permettre à l'utilisateur d'accéder aux 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, voir Configuration du contrôle d'accès pour les services de réseau externe dans le guide de sécurité d'Oracle Database 19c ou le guide de sécurité d'Oracle Database 23ai.

Envoyer des messages à un canal Slack

Après avoir créé l'objet de données d'identification Slack, comme décrit dans Préparer l'envoi d'avis 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 spécifier le canal Slack.

  • channel : Spécifie l'ID canal.

    L'ID canal est un ID unique pour un canal et est différent du nom du canal. Dans Slack, lorsque vous consultez les détails du canal, vous pouvez trouver l'ID du canal dans l'onglet "À propos". Pour plus d'informations, voir Comment trouver votre ID équipe Slack et votre ID canal Slack.

Voir Procédure SEND_MESSAGE pour plus d'informations.

Envoyer les résultats de l'interrogation à un canal Slack

Après avoir créé l'objet de données d'identification Slack tel que décrit dans Préparer l'envoi d'avis Slack à partir d'Autonomous Database, vous pouvez utiliser la procédure DBMS_CLOUD_NOTIFICATION.SEND_DATA pour envoyer la sortie d'une interrogation à 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 spécifier le canal Slack et le type de données :

  • channel : Spécifie l'ID canal.

    L'ID canal est un ID unique pour un canal et est différent du nom du canal. Dans Slack, lorsque vous consultez les détails du canal, vous pouvez trouver l'ID du canal dans l'onglet "À propos". Pour plus d'informations, voir Comment trouver votre ID équipe Slack et votre ID canal Slack.

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

Voir Procédure SEND_DATA pour plus d'informations.