Enviar Notificações do Slack pelo Autonomous Database

Descreve como configurar o Slack para que você possa enviar mensagens, alertas ou saída de uma consulta do Autonomous Database para um Canal do Slack. Também descreve os procedimentos usados para enviar notificações do Slack.

Preparar para Enviar Notificações do Slack do Autonomous Database

Para enviar notificações do Slack, você deve configurar seu aplicativo Slack para receber mensagens do Autonomous Database. Em seguida, crie uma credencial para usar com os procedimentos DBMS_CLOUD_NOTIFICATION a fim de enviar notificações do Slack do Autonomous Database.

Para usar o Slack com procedimentos DBMS_CLOUD_NOTIFICATION:

  1. Crie seu aplicativo Slack.

    O aplicativo Slack é instalado em um Espaço de Trabalho do Slack, que por sua vez tem Canais para onde as mensagens podem ser enviadas. O token do bot do aplicativo Slack deve ter os seguintes escopos de permissão definidos:

    channels:read
    chat:write
    files:write

    Consulte Criando um aplicativo para obter informações sobre como configurar um aplicativo Slack.

  2. Faça com que o administrador do Slack adicione o aplicativo Slack aos canais aos quais o DBMS_CLOUD_NOTIFICATION pode enviar mensagens por meio da opção "Integrações" no canal.

    Consulte Configuração básica de aplicativos para obter mais informações.

  3. Localize o token de bot do aplicativo disponível na página específica do aplicativo Slack, em https://app.slack.com.

    Consulte Configuração básica de aplicativos para obter mais informações.

  4. Crie um objeto de credencial para acessar o aplicativo Slack no Autonomous Database.

    Dica:

    Se você não puder usar o procedimento CREATE_CREDENTIAL com sucesso, consulte o usuário ADMIN para conceder acesso de execução nos pacotes DBMS_CLOUD.

    O nome de usuário da credencial é SLACK_TOKEN e a senha é o token do bot.

    Por exemplo:

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

    Consulte CREATE_CREDENTIAL Procedures para obter mais informações.

  5. Configure o controle de acesso para permitir que o usuário acesse serviços de rede 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;

    Consulte Configurando o Controle de Acesso para Serviços de Rede Externos para obter mais informações.

  6. Se você estiver enviando SQL, configure o controle de acesso para permitir o envio de saída com 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;

    Consulte Configurando o Controle de Acesso para Serviços de Rede Externos para obter mais informações.

Enviar Mensagens para um Canal do Slack

Depois de criar o objeto de credencial do Slack conforme descrito em Preparar para Enviar Notificações do Slack do Autonomous Database, você pode usar o procedimento DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE para enviar uma mensagem a um canal do Slack.
Exemplo:
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;
/ 

Use o parâmetro params para especificar o canal do Slack.

  • channel: Especifica o ID do Canal.

    O ID do Canal é um ID exclusivo de um canal e é diferente do nome do canal. No Slack, quando você exibe os detalhes do canal, pode encontrar o ID do Canal na guia "Sobre". Consulte Como Localizar o ID da Equipe do Slack e o ID do Canal do Slack para obter mais informações.

Consulte SEND_MESSAGE Procedures para obter mais informações.

Enviar Resultados da Consulta para um Canal do Slack

Depois de criar o objeto de credencial do Slack conforme descrito em Preparar para Enviar Notificações do Slack do Autonomous Database, você pode usar o procedimento DBMS_CLOUD_NOTIFICATION.SEND_DATA para enviar a saída de uma consulta para um canal do Slack.
Exemplo:
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;
/

Use o parâmetro params para especificar o canal do Slack e o tipo de dados:

  • channel: Especifica o ID do Canal.

    O ID do Canal é um ID exclusivo de um canal e é diferente do nome do canal. No Slack, quando você exibe os detalhes do canal, pode encontrar o ID do Canal na guia "Sobre". Consulte Como Localizar o ID da Equipe do Slack e o ID do Canal do Slack para obter mais informações.

  • type: Especifica o tipo de saída. Os valores válidos são: 'csv' ou 'json'.

Consulte SEND_DATA Procedures para obter mais informações.