在專用 Exadata 基礎架構上從自治式 AI 資料庫傳送 Slack 通知
您可以將 Slack 設定為使用 DBMS_CLOUD_NOTIFICATION 套裝程式,從專用 Exadata 基礎架構上的自治式 AI 資料庫,將查詢的訊息、警示或輸出傳送至 Slack 通道。
準備從自治式 AI 資料庫傳送 Slack 通知
若要傳送 Slack 通知,您必須將 Slack 應用程式設定為接收來自自治式 AI 資料庫的訊息。接著,建立要與 DBMS_CLOUD_NOTIFICATION 程序搭配使用的證明資料,以從自治式 AI 資料庫傳送 Slack 通知。
若要搭配 DBMS_CLOUD_NOTIFICATION 程序使用 Slack,請執行下列動作:
-
建立您的 Slack 應用程式。
Slack 應用程式會安裝在 Slack Workspace 中,接著會有可傳送訊息的通道。Slack App 的機器人權杖必須定義下列權限範圍:
channels:read chat:write files:write如需有關設定 Slack 應用程式的資訊,請參閱建立應用程式。
-
讓您的 Slack 管理員將 Slack 應用程式新增至
DBMS_CLOUD_NOTIFICATION可透過通道中的「整合」選項傳送訊息的通道。如需更多資訊,請參閱基本應用程式設定。
-
在
https://app.slack.com底下,找到 Slack 應用程式特定頁面中可用的應用程式機器人權杖。如需更多資訊,請參閱基本應用程式設定。
-
在 Exadata Cloud@Customer 上,在您的環境中設定 HTTP 代理主機設定值,以允許資料庫存取 Slack。請參閱使用主控台在 Cloud@Customer 上佈建 Exadata 資料庫服務,瞭解在建立 Exadata Cloud@Customer Infrastructure 時設定 HTTP 代理主機設定值的相關資訊。
注意:只有在 Exadata 基礎架構為「需要啟用」狀態時,才能編輯包含 HTTP 代理主機的網路組態。啟用之後,就無法編輯這些設定值。
若要設定已經佈建之 Exadata 基礎架構的 HTTP 代理主機,請在 My Oracle Support 送出服務要求 (SR)。請參閱 在 My Oracle Support 中建立服務要求,瞭解詳細資訊。
-
建立證明資料物件以從自治式 AI 資料庫存取 Slack App。
提示:如果您無法順利使用
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 => '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;請參閱 Oracle Database 19c Security Guide 中的 Configuring Access Control for External Network Services 或 Oracle Database 26ai Security Guide ,瞭解詳細資訊。
將訊息傳送至 Slack 通道
按照準備從自治式 AI 資料庫傳送 Slack 通知的方式,建立 Slack 證明資料物件之後,您可以使用 DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE 程序將訊息傳送至 Slack 通道。
範例:
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;
/
使用 params 參數指定 Slack 通道。
channel:指定通道 ID。
通路 ID 是通路的唯一 ID,與通路名稱不同。在 Slack 中,當您檢視通道詳細資訊時,可以在「關於」頁籤中找到通道 ID。如需詳細資訊,請參閱如何尋找您的 Slack 團隊 ID 和 Slack 頻道 ID 。
請參閱 SEND_MESSAGE 程序以瞭解詳細資訊。
將查詢結果傳送至 Slack 通道
按照準備從自治式 AI 資料庫傳送 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'。