Pacote DBMS_CLOUD_NOTIFICATION

O pacote DBMS_CLOUD_NOTIFICATION permite que você envie mensagens ou a saída de uma consulta SQL para um provedor.

DBMS_CLOUD_NOTIFICATION Visão Geral

Descreve o pacote DBMS_CLOUD_NOTIFICATION.

Os provedores suportados com DBMS_CLOUD_NOTIFICATION são: E-mail, Microsoft Teams, OCI Notifications (ONS) e Slack.

Quando você usa o serviço OCI Notifications com o pacote DBMS_CLOUD_NOTIFICATION, só há suporte para o procedimento DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE (o procedimento DBMS_CLOUD_NOTIFICATION.SEND_DATA não é suportado)

Resumo de Subprogramas DBMS_CLOUD_NOTIFICATION

Esta tabela resume os subprogramas incluídos no pacote.

Subprograma Descrição

Procedimento SEND_DATA

Enviar a saída da consulta SQL a um provedor.

Procedimento SEND_MESSAGE

Enviar mensagem de texto a um profissional de saúde.

Procedimento SEND_DATA

O procedimento SEND_DATA envia os resultados da consulta especificada para um provedor.

Sintaxe

DBMS_CLOUD_NOTIFICATION.SEND_DATA(
       provider           IN  VARCHAR2,
       credential_name    IN  VARCHAR2,
       query              IN  CLOB,
       params             IN  CLOB
 );

Parâmetros

Parâmetro Descrição

provider

Especifica o provedor.

Os valores válidos são: 'email', 'msteams' e 'slack'

Este parâmetro é obrigatório.

credential_name

O nome do objeto de credencial para acessar o provedor.

Para o provedor de e-mail, a credencial é o nome da credencial do remetente aprovado pelo SMTP que contém seu nome de usuário e senha.

Para o provedor msteams, a credencial é o nome da credencial.

Para o provedor Slack, o nome de usuário da credencial deve ser "SLACK_TOKEN" e password é o Token de Bot do Slack.

Este parâmetro é obrigatório.

query

Especifica a consulta SQL a ser executada. Os resultados são enviados ao profissional de saúde.

Este parâmetro é obrigatório.

params

Especifica parâmetros específicos para o provider no formato JSON.

Para o tipo de provedor email, os parâmetros válidos são:

  • sender. Especifica o ID de E-mail do remetente aprovado em um valor String.
  • smtp_host. Isso especifica o nome do host SMTP em um valor String.
  • subject. Especifica o assunto do e-mail em um valor String. O tamanho máximo é 100 caracteres.
  • recipient. Especifica os IDs de e-mail dos destinatários em um valor String. Use uma vírgula entre os IDs de e-mail quando houver vários destinatários.
  • to_cc. Isso especifica os IDs de e-mail que estão recebendo um CC do e-mail. É um valor String. Use uma vírgula entre os IDs de e-mail quando houver vários destinatários CC.
  • to_bcc. Especifica os IDs de e-mail que estão recebendo um Cco do e-mail. É um valor String. Use uma vírgula entre os IDs de e-mail quando houver vários destinatários Cco.
  • message. Isso especifica o texto da mensagem em um valor String.
  • type. Isso especifica o formato de saída em um valor String como CSV ou JSON.
  • title. Isso especifica o título do anexo da saída SQL em um valor String. O título deve conter apenas letras, dígitos, sublinhados, hifens ou pontos como caracteres em seu valor, pois ele está sendo usado para gerar um nome de arquivo.

Para o tipo de provedor msteams, os parâmetros válidos são:

  • tenant. Isso especifica o ID do tenant em um formato String.
  • team. Isso especifica o ID da equipe em um formato String.
  • channel. Isso especifica o ID do canal em um formato String.
  • title. Isso especifica o título do arquivo em um formato String. O tamanho máximo é de 50 caracteres.
  • type. Isso especifica o formato de saída em um valor String. Os valores válidos são CSV ou JSON.

Para o tipo de provedor slack, os parâmetros válidos são:

  • channel. Isso especifica o ID do Canal em um valor String. 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".
  • type. Isso especifica o formato de saída em um valor String. Os valores válidos são CSV ou JSON.

Este parâmetro é obrigatório.

Observações de Uso

  • Use o procedimento DBMS_CLOUD.CREATE_CREDENTIAL(credential_name, username e password) para criar o objeto de credencial.

    Consulte CREATE_CREDENTIAL Procedimento para obter mais informações.

  • Para o provedor email, observe o seguinte:

    • O usuário requer um ponto final de conexão SMTP para que o servidor do serviço Email Delivery obtenha smtp_host. O usuário também requer um remetente aprovado pelo SMTP e suas credenciais para autenticação no servidor do Email Delivery a fim de obter o credential_name. A conexão SMTP deve ser configurada e as credenciais SMTP devem ser geradas e aprovadas.

    • O tamanho máximo da mensagem suportado ao usar DBMS_CLOUD_NOTIFICATION.SEND_DATA com o provedor email é 32k bytes.

    • Você só pode usar DBMS_CLOUD_NOTIFICATION para notificações de e-mail com o Autonomous Database versão 19.21 e posterior.

  • Para o provedor msteams, o usuário requer o Aplicativo Microsoft Teams e um bot configurado nele. O aplicativo precisa ser publicado para a organização e instalado após a aprovação do administrador do centro de administração. O usuário também requer acesso às permissões Files.ReadWrite.All e ChannelSettings.Read.All para a API de Gráfico no Portal do Azure. Para gerar o token necessário, o usuário requer bot_id no nome de usuário e bot_secret na senha.

    O tamanho máximo de arquivo suportado ao usar DBMS_CLOUD_NOTIFICATION.SEND_DATA para o Microsoft Teams é de 4 MB.

  • Para o provedor slack, o valor username pode ser qualquer string válida e password é o token de bot do Slack.

Exemplos

Envie a saída SQL com o provedor email:

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'EMAIL_CRED',
    username        => 'username',
    password        => 'password');
END;
/

BEGIN
   DBMS_CLOUD_NOTIFICATION.SEND_DATA(
        provider        => 'email',
        credential_name => 'EMAIL_CRED',
        query           => 'SELECT tablespace_name FROM dba_tablespaces',
        params          => json_object('recipient' value  'mark@oracle.com, suresh@oracle.com',
                                       'to_cc'  value 'nicole@oracle.com1, jordan@oracle.com',
                                       'to_bcc' value 'manisha@oracle.com',
                                       'subject' value 'Test subject',
                                       'type' value 'json',
                                       'title' value 'mytitle',
                                       'message' value 'This is the message',
                                       'smtp_host' value 'smtp.email.example.com',
                                       'sender'    value  'approver_sender@oracle.com' )
   );
   END;
/

Envie a saída SQL com o provedor msteams:

BEGIN     
    DBMS_CLOUD.CREATE_CREDENTIAL(credential_name => 'TEAMS_CRED',       
        username        => 'bot_id', 
        password        => 'bot_secret');
END;
/

BEGIN
     DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(provider => 'msteams',
        credential_name => 'TEAMS_CRED',
        query           => 'SELECT tablespace_name FROM dba_tablespaces',
        params          => json_object('tenant'value '5b743bc******c0286',
                                       'team'value '0ae401*********5d2bd',
                                       'channel'value '19%3a94be023*****%40thread.tacv2',
                                       'title'value 'today',
                                       'type'value 'csv'));
END;
/
 

Envie a saída SQL com o provedor slack:

BEGIN
   DBMS_CLOUD.CREATE_CREDENTIAL(
     credential_name => 'SLACK_CRED',
     username        => 'SLACK_TOKEN',
     password        => 'password');
END;
/
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;
/ 

Procedimento SEND_MESSAGE

O procedimento envia uma mensagem de texto para um profissional de saúde.

Sintaxe

DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
       provider           IN  VARCHAR2,
       credential_name    IN  VARCHAR2,
       message            IN  CLOB,
       params             IN  CLOB
 );

Parâmetros

Parâmetro Descrição

provider

Especifica o provedor.

Os valores válidos são: 'email', 'msteams', 'slack' e 'oci'.

Este parâmetro é obrigatório.

credential_name

O nome do objeto de credencial para acessar o provedor.

  • Provedor email: a credencial é o nome da credencial do remetente aprovado pelo SMTP que contém seu nome de usuário e senha.

  • Provedor msteams: a credencial deve conter a chave bot_id e bot_secret na username e na password.

  • Provedor slack: o username da credencial deve ser "SLACK_TOKEN" e o password é o Token de Bot do Slack.

  • Provedor oci: a credencial é uma credencial válida baseada em chave de assinatura do Oracle Cloud Infrastructure ou uma credencial de controlador de recursos.

Este parâmetro é obrigatório.

Use o procedimento DBMS_CLOUD.CREATE_CREDENTIAL para criar o objeto de credencial. Consulte CREATE_CREDENTIAL Procedures para obter mais informações.

message

Especifica o texto da mensagem.

Este parâmetro é obrigatório.

params

Especifica parâmetros específicos para o provider no formato JSON.

Para o tipo de provedor email, os parâmetros válidos são:

  • sender: Especifica o ID do E-mail do remetente aprovado em um valor String.
  • smtp_host: Especifica o nome do host SMTP em um valor String.
  • subject: Especifica o assunto do e-mail em um valor String. O tamanho máximo é 100 caracteres.
  • recipient: Especifica os IDs de e-mail dos destinatários em um valor String. Use uma vírgula entre os IDs de e-mail quando houver vários destinatários.
  • to_cc: Especifica os IDs de e-mail que estão recebendo um CC do e-mail. Use uma vírgula entre os IDs de e-mail quando houver vários destinatários CC.
  • to_bcc: Especifica os IDs de e-mail que estão recebendo um Cco do e-mail. Use uma vírgula entre os IDs de e-mail quando houver vários destinatários com Cco.

Para o tipo de provedor msteams, o parâmetro válido é:

  • channel: Especifica o ID do Canal em um valor String.

Para o tipo de provedor slack, o parâmetro válido é:

  • channel. Especifica o ID do Canal em um valor String. Este parâmetro é obrigatório. 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".

Para o provedor OCI Notifications com o tipo oci, os parâmetros válidos são:

  • topic_ocid: Especifica
  • title: Especifica a linha de assunto da mensagem.

Com o provedor oci, há diferentes pontos finais possíveis para uma mensagem, com base nas assinaturas. O parâmetro title é tratado de maneira diferente para diferentes assinaturas:

  • email: O title especifica a linha de assunto da mensagem.
  • Slack: O valor title não é usado. Se estiver incluído, o valor será ignorado.

Nota de Uso para Provedor de E-mail

Para o provedor email, o usuário requer um ponto final de conexão SMTP para que o servidor do serviço Email Delivery obtenha smtp_host. O usuário também requer um remetente aprovado pelo SMTP e suas credenciais para autenticação no servidor do Email Delivery a fim de obter o credential_name. A conexão SMTP deve ser configurada e as credenciais SMTP devem ser geradas e aprovadas.

Nota de uso para o provedor Msteams

Para o provedor msteams, o usuário requer o Aplicativo Microsoft Teams e um bot configurado nele. O aplicativo precisa ser publicado para a organização e instalado após a aprovação do administrador do centro de administração. O usuário também requer acesso às permissões Files.ReadWrite.All e ChannelSettings.Read.All para a API de Gráfico no Portal do Azure. Para gerar o token necessário, o usuário requer bot_id no nome de usuário e bot_secret na senha.

Observação de Uso do Provedor do Slack

Para o provedor slack, o valor username pode ser qualquer string válida e password é o token de bot do Slack.

Observações de Uso das Notificações do OCI Provider

O DBMS_CLOUD_NOTIFICATION suporta o provedor do OCI Notifications. Consulte Visão Geral do Serviço Notifications para obter detalhes sobre o provedor do OCI Notifications.

  • Para usar o provedor do OCI Notifications, faça o seguinte:
    • Criar um tópico. Consulte Criando um Tópico para obter detalhes sobre como criar um tópico
    • Crie as assinaturas necessárias. Consulte Criando uma Assinatura para obter detalhes sobre a criação de uma assinatura.
    • Depois de criar as assinaturas, confirme-as. As mensagens só são publicadas em assinaturas confirmadas. Consulte Confirmando uma Assinatura para obter detalhes sobre a confirmação de assinaturas.
  • A instância do Autonomous Database, a credencial, se você estiver usando credenciais de usuário e o tópico de assinatura deverão estar localizados na mesma região.
  • Observe as seguintes limitações:
    • Limite de Tamanho da Mensagem: O limite de tamanho da mensagem por solicitação é de 64 KB. Mensagens que excedem este tamanho não podem ser enviadas ou processadas em uma única solicitação.
    • Limite de Taxa de Entrega de Mensagens: Existem diferentes limites de taxa de entrega de mensagens, dependendo do protocolo usado.
      • Protocolo email: o limite é de 10 mensagens por minuto por ponto final.

      Esta restrição pode afetar a velocidade com que as mensagens podem ser transmitidas e recebidas.

    • Limite de Transações por Minuto (TPM) por Tenancy: Há um limite de TPM de 60 por tópico para esta operação. Esse limite representa o número máximo de mensagens por minuto que podem ser processadas ou tratadas para um determinado tópico. Exceder esse limite pode resultar em mensagens não sendo processadas ou processadas em uma taxa mais lenta.

Exemplos

Envie uma mensagem de texto com o provedor email:

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'EMAIL_CRED',
    username        => 'username',
    password        => 'password');
END;
/

BEGIN
   DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
        provider        => 'email',
        credential_name => 'EMAIL_CRED',
        message         => 'Subject content',
        params          => json_object('recipient' value  'mark@oracle.com, suresh@oracle.com',
                                       'to_cc'  value 'nicole@oracle.com, jordan@oracle.com',
                                       'to_bcc' value 'manisha@oracle.com',
                                       'subject' value 'Test subject',
                                       'smtp_host' value 'smtp.email.example.com',
                                       'sender'    value  'approver_sender@oracle.com' )
   );
   END;
/

Envie uma mensagem de texto com o provedor msteams:

BEGIN     
    DBMS_CLOUD.CREATE_CREDENTIAL(credential_name => 'TEAMS_CRED',       
        username        => 'bot_id', 
        password        => 'bot_secret');
END;
/

BEGIN
     DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
        provider        => 'msteams',
        credential_name => 'TEAMS_CRED',
        message         => 'text from new teams api',
        params          => json_object('channel'value 'C0....08'),'region'value 'india');
END;
/
 

Envie uma mensagem de texto com o provedor slack:

BEGIN
   DBMS_CLOUD.CREATE_CREDENTIAL(
     credential_name => 'SLACK_CRED',
     username        => 'SLACK_TOKEN',
     password        => 'password');
END;
/
BEGIN
   DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
      provider          => 'slack',
      credential_name   => 'SLACK_CRED',
      message           => 'Send text from Autonomous Database.',
      params            => json_object('channel' value 'C0....08'));
END;
/ 

Envie uma mensagem de texto com o OCI Notifications, digite o provedor oci:


BEGIN
   DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
      provider          => 'oci',
      credential_name  => 'OCI_CRED',
      message          => 'Text message for you.',      
      params           => json_object('topic_ocid'  value 'oci********pa',   
      'title'  value 'Title for message subject' ));
END;
/ 

BEGIN
   DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
      provider          => 'oci',
      credential_name  => 'OCI$RESOURCE_PRINCIPAL',
      message          => 'Text message for you.',      
      params           => json_object('topic_ocid'  value 'oci********pa',   
      'title'  value 'Title for message subject' ));
END;
/