在专用 Exadata 基础结构上从自治 AI 数据库发送 Slack 通知
您可以将 Slack 配置为使用 DBMS_CLOUD_NOTIFICATION 程序包将查询的消息、预警或输出从 Dedicated Exadata Infrastructure 上的 Autonomous AI Database 发送到 Slack 通道。
准备从自治 AI 数据库发送 Slack 通知
要发送 Slack 通知,必须将 Slack 应用程序配置为从自治 AI 数据库接收消息。接下来,创建身份证明以与 DBMS_CLOUD_NOTIFICATION 过程一起使用,以便从自治 AI 数据库发送 Slack 通知。
要将 Slack 与 DBMS_CLOUD_NOTIFICATION 过程结合使用,请执行以下操作:
-
创建您的 Slack 应用程序。
Slack 应用程序安装在 Slack 工作区中,该工作区又具有可发送消息的渠道。Slack 应用程序的机器人标记必须定义以下权限范围:
channels:read chat:write files:write有关设置 Slack 应用程序的信息,请参见 Creating an app 。
-
让您的 Slack 管理员将 Slack 应用程序添加到
DBMS_CLOUD_NOTIFICATION可以通过通道中的“集成”选项向其发送消息的通道。有关详细信息,请参阅基本应用程序设置。
-
在 Slack 应用程序特定页面的
https://app.slack.com下找到该应用程序的机器人标记。有关详细信息,请参阅基本应用程序设置。
-
在 Exadata Cloud@Customer 上,配置环境中的 HTTP 代理设置以允许数据库访问 Slack。有关在创建 Exadata Cloud@Customer 基础结构时设置 HTTP 代理设置的信息,请参见 Using the Console to Provision Exadata Database Service on Cloud@Customer 。
注:只有在 Exadata 基础结构处于“需要激活”状态之前,才能编辑包括 HTTP 代理的网络配置。一旦激活,您就无法编辑这些设置。
要为已预配的 Exadata 基础结构设置 HTTP 代理,请在 My Oracle Support 中提交服务请求 (SR)。有关详细信息,请参见在 My Oracle Support 中创建服务请求。
-
创建身份证明对象以从自治 AI 数据库访问 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 Procedure 。
-
配置访问控制以允许用户访问外部网络服务 (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 渠道
按 Prepare to Send Slack Notifications from Autonomous AI Database 中所述创建 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。有关更多信息,请参见 How to Find your Slack Team ID and Slack Channel ID 。
有关更多信息,请参见 SEND_MESSAGE Procedure 。
将查询结果发送到 Slack 渠道
按 Prepare to Send Slack Notifications from Autonomous AI Database 中所述创建 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。有关更多信息,请参见 How to Find your Slack Team ID and Slack Channel ID 。
-
type:指定输出类型。有效值为:'csv' 或 'json'。