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-se para Enviar Notificações do Slack pelo Autonomous Database

Para enviar notificações do Slack, configure seu aplicativo Slack para receber mensagens do Autonomous Database. Em seguida, crie uma credencial a ser usada com os procedimentos DBMS_CLOUD_NOTIFICATION para enviar notificações do Slack do Autonomous Database.

Para usar o Slack com procedimentos DBMS_CLOUD_NOTIFICATION:

  1. Criar seu aplicativo Slack.

    O aplicativo Slack é instalado em um Espaço de Trabalho do Slack, que por sua vez tem Canais onde as mensagens podem ser enviadas. O token de 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 para os 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 Procedimento para obter mais informações.

  5. Configure o controle de acesso para permitir o acesso do usuário a 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 Configuring Access Control for External Network Services para obter mais informações.

  6. Se você estiver enviando SQL, configure o controle de acesso para permitir o envio da 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 Externa 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 pelo Autonomous Database, você pode usar o procedimento DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE para enviar uma mensagem a um canal do Slack.
Por 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.

Consulte SEND_MESSAGE Procedimento 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 pelo Autonomous Database, você pode usar o procedimento DBMS_CLOUD_NOTIFICATION.SEND_DATA para enviar a saída de uma consulta a 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 para um canal e é diferente do nome do canal. No Slack, ao exibir os detalhes do canal, você 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 Procedimento para obter mais informações.