Enviar Notificações do Slack pelo Autonomous Database on Dedicated Exadata Infrastructure

Você pode configurar o Slack para enviar mensagens, alertas ou saída de uma consulta do Autonomous Database on Dedicated Exadata Infrastructure para um canal do Slack usando o pacote DBMS_CLOUD_NOTIFICATION.

Tópicos Relacionados

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 para os quais 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 DBMS_CLOUD_NOTIFICATION pode enviar mensagens por meio da opção "Integrações" no canal.

    Consulte Configuração básica do aplicativo 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 do aplicativo para obter mais informações.

  4. No Exadata Cloud@Customer, configure as definições de Proxy HTTP em seu ambiente para permitir que o banco de dados acesse o Slack. Consulte Usando a Console para Provisionar o Exadata Database Service on Cloud@Customer para obter informações sobre como configurar as definições de Proxy HTTP ao criar uma Infraestrutura do Exadata Cloud@Customer.

    Observação:

    A configuração de rede, incluindo o Proxy HTTP, só poderá ser editada até que o Exadata Infrastructure esteja no estado Requer Ativação. Depois de ativado, você não poderá editar essas configurações.

    Para configurar um Proxy HTTP para uma Infraestrutura do Exadata já provisionada, envie uma Solicitação de Serviço (SR) no My Oracle Support. Consulte Criar uma Solicitação de Serviço no My Oracle Support para obter detalhes.

  5. 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 Procedimento CREATE_CREDENTIAL para obter mais informações.

  6. 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;
  7. 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         => '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 no Oracle Database 19c Security Guide ou no Oracle Database 23ai Security Guide 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.
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 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.