Autonomous AI DatabaseからのSlack通知の送信
Autonomous AI DatabaseからSlackチャネルに問合せのメッセージ、アラートまたは出力を送信できるようにSlackを構成する方法について説明します。また、Slack通知の送信に使用する手順についても説明します。
Autonomous AI DatabaseからのSlack通知の送信の準備
Slack通知を送信するには、Autonomous AI Databaseからメッセージを受信するようにSlackアプリケーションを構成する必要があります。次に、DBMS_CLOUD_NOTIFICATIONプロシージャで使用する資格証明を作成して、Autonomous AI DatabaseからSlack通知を送信します。
DBMS_CLOUD_NOTIFICATIONプロシージャでSlackを使用するには:
-
Slackアプリケーションを作成します。
SlackアプリケーションはSlackワークスペースにインストールされ、このワークスペースにはメッセージを送信できるチャネルがあります。Slackアプリケーションのボット・トークンには、次の権限スコープが定義されている必要があります:
channels:read chat:write files:writeSlackアプリケーションの設定の詳細は、アプリケーションの作成を参照してください。
-
Slack管理者に、
DBMS_CLOUD_NOTIFICATIONがチャネルの「統合」オプションを使用してメッセージを送信できるチャネルにSlackアプリケーションを追加してもらいます。詳細は、基本的なアプリケーション設定を参照してください。
-
Slackアプリケーション固有のページにある
https://app.slack.comで、使用可能なアプリケーションのボット・トークンを見つけます。詳細は、基本的なアプリケーション設定を参照してください。
-
Autonomous AI DatabaseからSlackアプリケーションにアクセスするための資格証明オブジェクトを作成します。
ヒント:
CREATE_CREDENTIALプロシージャを正常に使用できない場合は、ADMINユーザーに問い合せて、DBMS_CLOUDパッケージに対する実行アクセス権を付与してください。資格証明のユーザー名は
SLACK_TOKENで、パスワードはボット・トークンです。たとえば:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'SLACK_CRED', username => 'SLACK_TOKEN', password => 'xoxb-34....96-34....52-zW....cy'); END; /詳細は、「CREATE_CREDENTIALプロシージャ」を参照してください。
-
外部ネットワーク・サービス(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;詳細は、外部ネットワーク・サービスのアクセス制御の構成を参照してください。
-
SQLを送信する場合は、
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;詳細は、外部ネットワーク・サービスのアクセス制御の構成を参照してください。
Slackチャネルへのメッセージの送信
Autonomous AI DatabaseからのSlack通知の送信の準備の説明に従ってSlack資格証明オブジェクトを作成した後、DBMS_CLOUD_NOTIFICATION.SEND_MESSAGEプロシージャを使用してSlackチャネルにメッセージを送信できます。
例:
BEGIN
DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
provider => 'slack',
credential_name => 'SLACK_CRED',
message => 'Alert from Autonomous AI Database...',
params => json_object('channel' value 'C0....08'));
END;
/paramsパラメータを使用して、Slackチャネルを指定します。
-
channel: チャネルIDを指定します。チャネルIDはチャネルの一意のIDであり、チャネル名とは異なります。Slackでは、チャネルの詳細を表示すると、「バージョン情報」タブでチャネルIDを確認できます。詳細は、「SlackチームIDおよびSlackチャネルIDの検索方法」を参照してください。
詳細は、SEND_MESSAGEプロシージャを参照してください。
Slackチャネルへの問合せ結果の送信
Autonomous AI DatabaseからのSlack通知の送信の準備の説明に従ってSlack資格証明オブジェクトを作成した後、DBMS_CLOUD_NOTIFICATION.SEND_DATAプロシージャを使用して問合せの出力をSlackチャネルに送信できます。
例:
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;
/paramsパラメータを使用して、Slackチャネルおよびデータ型を指定します。
-
channel: チャネルIDを指定します。チャネルIDはチャネルの一意のIDであり、チャネル名とは異なります。Slackでは、チャネルの詳細を表示すると、「バージョン情報」タブでチャネルIDを確認できます。詳細は、「SlackチームIDおよびSlackチャネルIDの検索方法」を参照してください。
-
type: 出力タイプを指定します。有効な値は'csv'または'json'です。
詳細は、SEND_DATAプロシージャを参照してください。
関連トピック