Envío de notificaciones de Slack desde Autonomous Database on Dedicated Exadata Infrastructure

Puede configurar Slack para enviar mensajes, alertas o salidas de una consulta desde Autonomous Database on Dedicated Exadata Infrastructure a un canal de Slack mediante el paquete DBMS_CLOUD_NOTIFICATION.

Temas relacionados

Preparación para enviar notificaciones de Slack desde Autonomous Database

Para enviar notificaciones de Slack, debe configurar la aplicación Slack para que reciba mensajes de Autonomous Database. A continuación, cree una credencial para utilizarla con los procedimientos DBMS_CLOUD_NOTIFICATION para enviar notificaciones de Slack desde Autonomous Database.

Para utilizar Slack con procedimientos DBMS_CLOUD_NOTIFICATION:

  1. Cree su aplicación Slack.

    La aplicación Slack está instalada en un espacio de trabajo de Slack, que a su vez tiene canales donde se pueden enviar mensajes. El token de bot de la aplicación Slack debe tener definidos los siguientes ámbitos de permiso:

    channels:read
    chat:write
    files:write

    Consulte Creación de una aplicación para obtener información sobre la configuración de una aplicación de Slack.

  2. Pida al administrador de Slack que agregue la aplicación Slack a los canales a los que DBMS_CLOUD_NOTIFICATION puede enviar mensajes a través de la opción "Integraciones" del canal.

    Consulte Configuración básica de la aplicación para obtener más información.

  3. Localice el token de bot de la aplicación disponible en la página específica de la aplicación Slack, en https://app.slack.com.

    Consulte Configuración básica de la aplicación para obtener más información.

  4. En Exadata Cloud@Customer, configure los valores de proxy HTTP en el entorno para permitir que la base de datos acceda a Slack. Consulte Uso de la consola para aprovisionar Exadata Database Service en Cloud@Customer para obtener información sobre la configuración del proxy HTTP al crear una infraestructura de Exadata Cloud@Customer.

    Note:

    La configuración de red, incluido el proxy HTTP, solo se puede editar hasta que la infraestructura de Exadata tenga el estado Requiere activación. Una vez activada, no puede editar esa configuración.

    Para configurar un proxy HTTP para una infraestructura de Exadata ya aprovisionada, envíe una solicitud de servicio (SR) en My Oracle Support. Consulte Creación de una solicitud de servicio en My Oracle Support para obtener más información.

  5. Cree un objeto de credencial para acceder a la aplicación Slack desde Autonomous Database.

    Sugerencia:

    Si no puede utilizar el procedimiento CREATE_CREDENTIAL correctamente, consulte con el usuario ADMIN para otorgar acceso de ejecución en los paquetes DBMS_CLOUD.

    El nombre de usuario de la credencial es SLACK_TOKEN y la contraseña es el token del bot.

    Por ejemplo:

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

    Consulte Procedimiento CREATE_CREDENTIAL para obtener más información.

  6. Configure el control de acceso para permitir el acceso del usuario a los servicios de red externos (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 envía SQL, configure el control de acceso para permitir el envío de la salida con 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;

    Consulte Configuring Access Control for External Network Services en Oracle Database 19c Security Guide o Oracle Database 23ai Security Guide para obtener más información.

Envío de mensajes a un canal de Slack

Después de crear el objeto de credencial de Slack como se describe en Preparación para enviar notificaciones de Slack desde Autonomous Database, puede utilizar el procedimiento DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE para enviar un mensaje a un canal de Slack.
Ejemplo:
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;
/ 

Utilice el parámetro params para especificar el canal de Slack.

  • channel: especifica el ID de canal.

    El ID de canal es un ID único para un canal y es diferente del nombre del canal. En Slack, al ver los detalles del canal, puede encontrar el ID de canal en el separador "About". Consulte Cómo buscar el ID de equipo de Slack y el ID de canal de Slack para obtener más información.

Consulte procedimiento SEND_MESSAGE para obtener más información.

Enviar resultados de consulta a un canal de Slack

Después de crear el objeto de credencial de Slack como se describe en Preparación para enviar notificaciones de Slack desde Autonomous Database, puede utilizar el procedimiento DBMS_CLOUD_NOTIFICATION.SEND_DATA para enviar la salida de una consulta a un canal de Slack.
Ejemplo:
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;
/

Utilice el parámetro params para especificar el canal de Slack y el tipo de dato:

  • channel: especifica el ID de canal.

    El ID de canal es un ID único para un canal y es diferente del nombre del canal. En Slack, al ver los detalles del canal, puede encontrar el ID de canal en el separador "About". Consulte Cómo buscar el ID de equipo de Slack y el ID de canal de Slack para obtener más información.

  • type: especifica el tipo de salida. Los valores válidos son: 'csv' o 'json'.

Consulte procedimiento SEND_DATA para obtener más información.