如何通过 Web 服务或数据库查询访问 SharePoint 内置提醒我定义(用户定义的提醒)
How can I access to SharePoint builtin alert me definitions (to user defined alerts) by web service or database query
我不想在 SharePoint 中自定义 提醒我
像这样 link
但我想获得如下警报属性:
- 我想知道警报定义在哪个列表或 Doc-Lib 上?
- 当他们需要时(电子邮件或短信?)(他们希望立即或每天向 SharePoint 发送警报)
- 谁定义了这个警报(哪个用户)?
- 最近几天此警报触发了多少次? (历史)
- 有没有像 android 中的 事件处理程序 那样的方法,我们订阅 SharePoint 事件处理程序并触发事件或 运行 自定义代码或调用网络服务?
问题:有什么方法可以访问上述任何项目吗? (通过调用网络服务?或 SQL 查询?或任何其他替代解决方案?)
(我的目标:决定拥有替代渠道,如 Telegram 机器人或云 phone(CloudCall 可与许多 CRM 系统一起使用)呼叫和其他有吸引力的方式客户通知他们。关系管理)
提前致谢
案例 4 或 5 的优先级较低:如果不可能或很难或花费您的时间或超出此问题的范围,我们将跳过它。
Qabbas 回答了我的问题here,我在这里为您添加更多描述。
- 我想知道 Alerts 定义在哪个列表或 Doc-Lib 上?
- 以及当他们需要时(电子邮件或短信?)(他们希望立即或每天向 SharePoint 发送警报?
您可以通过 SQL 查询实现此目的,其中 SharePoint 中的通知已存储在 内容数据库 中,特别是 ImmedSubscriptions
和 SchedSubscriptionsTable
(更多内容在 link 中)。基于何时 Send Alert Option
此外,您可以通过 C# 使用 SSOM 通过 SPAlertCollection
获取警报到 return 网站或用户或列表的警报集合。
SPSite oSiteCollection = SPContext.Current.Site;
SPWebCollection collWebsites = oSite.AllWebs;
foreach (SPWeb oWebsite in collWebsites)
{
SPAlertCollection collAlerts = oWebsite.Alerts;
foreach (SPAlert oAlert in collAlerts)
{
Label1.Text = SPEncode.HtmlEncode(oWebsite.Title) + " :: " +
SPEncode.HtmlEncode(oAlert.Title) + " :: " +
oAlert.User.LoginName + "<BR>";
writer.Write(strLabelText);
}
oWebsite.Dispose();
}
关于上述代码的更多信息 here。
我在 ImmedSubscriptions
和 SchedSubscriptionsTable
中写了关于这两种方法的更多详细信息以及每个字段的内容,在 Get All User Alerts By List Name in SharePoint 2013
中表示了详细步骤
- 谁定义了这个警报(哪个用户)?
不幸的是,我找不到关于此 tables 的警报创建者的任何信息,只能找到将接收警报的用户的 user ID
。
- 最近几天此警报触发了多少次? (历史)
某些信息可能在 EventCache
table 上可用,但我不确定,但我查看了这篇文章,其中详细描述了一些存储过程和其他 table 与警报相关的 SharePoint E-Mail Confirmations and Alerts (under the hood)
注意:要实现 3,4,您还可以根据您的要求构建自己的自定义简单警报,这将通过工作流和事件接收器执行与内置警报相同的功能(on item not on alerts it's not applicable
) 可以灵活地跟踪您的通知。
- 有没有什么方法像 android 中的事件处理程序,我们订阅 SharePoint 事件处理程序并触发事件或 运行 自定义代码或调用网络服务?
我不想在 SharePoint 中自定义 提醒我 像这样 link
但我想获得如下警报属性:
- 我想知道警报定义在哪个列表或 Doc-Lib 上?
- 当他们需要时(电子邮件或短信?)(他们希望立即或每天向 SharePoint 发送警报)
- 谁定义了这个警报(哪个用户)?
- 最近几天此警报触发了多少次? (历史)
- 有没有像 android 中的 事件处理程序 那样的方法,我们订阅 SharePoint 事件处理程序并触发事件或 运行 自定义代码或调用网络服务?
问题:有什么方法可以访问上述任何项目吗? (通过调用网络服务?或 SQL 查询?或任何其他替代解决方案?)
(我的目标:决定拥有替代渠道,如 Telegram 机器人或云 phone(CloudCall 可与许多 CRM 系统一起使用)呼叫和其他有吸引力的方式客户通知他们。关系管理)
提前致谢
案例 4 或 5 的优先级较低:如果不可能或很难或花费您的时间或超出此问题的范围,我们将跳过它。
Qabbas 回答了我的问题here,我在这里为您添加更多描述。
- 我想知道 Alerts 定义在哪个列表或 Doc-Lib 上?
- 以及当他们需要时(电子邮件或短信?)(他们希望立即或每天向 SharePoint 发送警报?
您可以通过 SQL 查询实现此目的,其中 SharePoint 中的通知已存储在 内容数据库 中,特别是 ImmedSubscriptions
和 SchedSubscriptionsTable
(更多内容在 link 中)。基于何时 Send Alert Option
此外,您可以通过 C# 使用 SSOM 通过 SPAlertCollection
获取警报到 return 网站或用户或列表的警报集合。
SPSite oSiteCollection = SPContext.Current.Site;
SPWebCollection collWebsites = oSite.AllWebs;
foreach (SPWeb oWebsite in collWebsites)
{
SPAlertCollection collAlerts = oWebsite.Alerts;
foreach (SPAlert oAlert in collAlerts)
{
Label1.Text = SPEncode.HtmlEncode(oWebsite.Title) + " :: " +
SPEncode.HtmlEncode(oAlert.Title) + " :: " +
oAlert.User.LoginName + "<BR>";
writer.Write(strLabelText);
}
oWebsite.Dispose();
}
关于上述代码的更多信息 here。
我在 ImmedSubscriptions
和 SchedSubscriptionsTable
中写了关于这两种方法的更多详细信息以及每个字段的内容,在 Get All User Alerts By List Name in SharePoint 2013
- 谁定义了这个警报(哪个用户)?
不幸的是,我找不到关于此 tables 的警报创建者的任何信息,只能找到将接收警报的用户的 user ID
。
- 最近几天此警报触发了多少次? (历史)
某些信息可能在 EventCache
table 上可用,但我不确定,但我查看了这篇文章,其中详细描述了一些存储过程和其他 table 与警报相关的 SharePoint E-Mail Confirmations and Alerts (under the hood)
注意:要实现 3,4,您还可以根据您的要求构建自己的自定义简单警报,这将通过工作流和事件接收器执行与内置警报相同的功能(on item not on alerts it's not applicable
) 可以灵活地跟踪您的通知。
- 有没有什么方法像 android 中的事件处理程序,我们订阅 SharePoint 事件处理程序并触发事件或 运行 自定义代码或调用网络服务?