DBMS_CLOUD_NOTIFICATIONパッケージ

DBMS_CLOUD_NOTIFICATIONパッケージを使用すると、メッセージまたはSQL問合せの出力をプロバイダに送信できます。

DBMS_CLOUD_NOTIFICATIONでサポートされるプロバイダは、電子メール、Microsoft Teams、OCI通知(ONS)およびSlackです。

DBMS_CLOUD_NOTIFICATIONパッケージでOCI通知サービスを使用する場合、DBMS_CLOUD_NOTIFICATION.SEND_MESSAGEプロシージャのみがサポートされます(DBMS_CLOUD_NOTIFICATION.SEND_DATAプロシージャはサポートされていません)。

前提条件

DBMS_CLOUD_NOTIFICATIONサブプログラムの要約

この表は、パッケージに含まれるサブプログラムの概要を示しています。

サブプログラム 説明
SEND_DATAプロシージャ SQL問合せ出力をプロバイダに送信します。
SEND_MESSAGEプロシージャ プロバイダにテキスト・メッセージを送信します。

SEND_DATAプロシージャ

SEND_DATAプロシージャは、指定された問合せの結果をプロバイダに送信します。

構文

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

Parameters

パラメータ 説明
provider

プロバイダを指定します。

有効な値は、'email'、'msteams'および'slack'です

このパラメータは必須です。

credential_name

プロバイダにアクセスするための資格証明オブジェクトの名前。

電子メール・プロバイダの場合、資格証明は、ユーザー名とパスワードを含むSMTP承認済送信者の資格証明の名前です。

msteamsプロバイダの場合、資格証明は資格証明の名前です。

Slackプロバイダの場合、資格証明のユーザー名は"SLACK_TOKEN"passwordはSlackボット・トークンである必要があります。

このパラメータは必須です。

query

実行するSQL問合せを指定します。結果がプロバイダに送信されました。

このパラメータは必須です。

params

providerの特定のパラメータをJSON形式で指定します。

プロバイダ・タイプemailの場合、有効なパラメータは次のとおりです。

  • sender. 承認済送信者の電子メールIDをString値で指定します。
  • smtp_host. これは、SMTPホスト名をString値で指定します。
  • subject. Eメールの件名をString値で指定します。最大サイズは100文字です。
  • recipient. これは、受信者の電子メールIDをString値で指定します。複数の受信者がいる場合は、電子メールIDの間にカンマを使用します。
  • to_cc. 電子メールのCCを受信する電子メールIDを指定します。String値です。複数のCC受信者がいる場合は、電子メールIDの間にカンマを使用します。
  • to_bcc. EメールのBCCを受信するEメールIDを指定します。String値です。複数のBCC受信者が存在する場合は、電子メールIDの間にカンマを使用します。
  • message. これは、メッセージ・テキストをString値で指定します。
  • type. これは、出力形式をString値でCSVまたはJSONとして指定します。
  • title. これは、SQL出力の添付のタイトルをString値で指定します。タイトルは、ファイル名の生成に使用されているため、値に文字、数字、アンダースコア、ハイフンまたはドットのみを含める必要があります。

プロバイダ・タイプmsteamsの場合、有効なパラメータは次のとおりです。

  • tenant. これは、テナントIDをString形式で指定します。
  • team. これは、チームIDをString形式で指定します。
  • channel. これは、チャネルIDをString形式で指定します。
  • title. これは、ファイルのタイトルをString形式で指定します。最大サイズは50文字です。
  • type. これは、出力形式をString値で指定します。有効な値はCSVまたはJSONです。

プロバイダ・タイプslackの場合、有効なパラメータは次のとおりです。

  • channel. これにより、チャネルIDがString値で指定されます。チャネルIDはチャネルの一意のIDであり、チャネル名とは異なります。Slackでは、チャネルの詳細を表示すると、「バージョン情報」タブでチャネルIDを確認できます。
  • type. これは、出力形式をString値で指定します。有効な値はCSVまたはJSONです。

このパラメータは必須です。

使用上のノート

資格証明オブジェクトを作成するには、プロシージャDBMS_CLOUD.CREATE_CREDENTIAL(credential_nameusernameおよびpassword)を使用します。詳細は、「CREATE_CREDENTIALプロシージャ」を参照してください。

emailプロバイダを使用してSQL出力を送信します。

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;
/

msteamsプロバイダを使用してSQL出力を送信します。

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;
/

slackプロバイダを使用してSQL出力を送信します。

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;
/

SEND_MESSAGEプロシージャ

プロシージャは、プロバイダにテキスト・メッセージを送信します。

構文

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

Parameters

パラメータ 説明
provider

プロバイダを指定します。

有効な値は、'email'、'msteams'、'slack'および'oci'です。

このパラメータは必須です。

credential_name

プロバイダにアクセスするための資格証明オブジェクトの名前。

電子メール・プロバイダの場合、資格証明は、ユーザー名とパスワードを含むSMTP承認済送信者の資格証明の名前です。

msteamsプロバイダの場合、資格証明にはユーザー名およびパスワードの両方にbot_idおよびbot_secretキーが含まれている必要があります。

Slackプロバイダの場合、資格証明のユーザー名は"SLACK_TOKEN"passwordはSlackボット・トークンである必要があります。

ociプロバイダの場合、資格証明は有効なOracle Cloud Infrastructure署名キー・ベースの資格証明です。

このパラメータは必須です。

message

メッセージ・テキストを指定します。

このパラメータは必須です。

params

providerの特定のパラメータをJSON形式で指定します。

プロバイダ・タイプemailの場合、有効なパラメータは次のとおりです。

  • sender. 承認済送信者の電子メールIDをString値で指定します。
  • smtp_host. これは、SMTPホスト名をString値で指定します。
  • subject. 電子メールの件名をString値で指定します。最大サイズは100文字です。
  • recipient. これは、受信者の電子メールIDをString値で指定します。複数の受信者がいる場合は、電子メールIDの間にカンマを使用します。
  • to_cc. 電子メールのCCを受信する電子メールIDを指定します。複数のCC受信者がいる場合は、電子メールIDの間にカンマを使用します。
  • to_bcc. EメールのBCCを受信するEメールIDを指定します。複数のBCC受信者が存在する場合は、電子メールIDの間にカンマを使用します。

プロバイダ・タイプmsteamsの場合、有効なパラメータは次のとおりです。

  • channel. String値にチャネルIDを指定します。

プロバイダ・タイプslackの場合、有効なパラメータは次のとおりです。

  • channel. String値にチャネルIDを指定します。

タイプがociのプロバイダOCI通知の場合、有効なパラメータは次のとおりです。

  • topic_ocid: 指定
  • title: メッセージの件名の行を指定します。

ociプロバイダでは、サブスクリプションに基づいて、メッセージに対して可能なエンドポイントが異なります。titleパラメータは、サブスクリプションごとに異なる方法で処理されます。

  • email: titleは、メッセージの件名を指定します。
  • Slack: title値は使用されません。含まれている場合、値は無視されます。

チャネルIDはチャネルの一意のIDであり、チャネル名とは異なります。Slackでは、チャネルの詳細を表示すると、チャネルIDを「About」タブで確認できます。

このパラメータは必須です。

使用上のノート

資格証明オブジェクトを作成するには、プロシージャDBMS_CLOUD.CREATE_CREDENTIAL(credential_nameusernameおよびpassword)を使用します。詳細は、「CREATE_CREDENTIALプロシージャ」を参照してください。

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;
/

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;
/

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 AI Database.',
      params            => json_object('channel' value 'C0....08'));
END;
/

OCI通知を使用してテキスト・メッセージを送信し、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;
/