diff --git a/pkg/services/alerting/notifiers/dingding.go b/pkg/services/alerting/notifiers/dingding.go
index 94961e82025..af1063a4c70 100644
--- a/pkg/services/alerting/notifiers/dingding.go
+++ b/pkg/services/alerting/notifiers/dingding.go
@@ -2,6 +2,7 @@ package notifiers
import (
"fmt"
+ "net/url"
"github.com/grafana/grafana/pkg/bus"
"github.com/grafana/grafana/pkg/components/simplejson"
@@ -15,12 +16,17 @@ const DingdingOptionsTemplate = `
DingDing settings
Url
-
+
MessageType
+
+ OpenInBrowser
+
+ Open the message url in browser instead of inside of Dingding
+
`
func init() {
@@ -41,20 +47,23 @@ func NewDingDingNotifier(model *m.AlertNotification) (alerting.Notifier, error)
}
msgType := model.Settings.Get("msgType").MustString(DefaultDingdingMsgType)
+ openInBrowser := model.Settings.Get("openInBrowser").MustBool(true)
return &DingDingNotifier{
- NotifierBase: NewNotifierBase(model),
- MsgType: msgType,
- Url: url,
- log: log.New("alerting.notifier.dingding"),
+ NotifierBase: NewNotifierBase(model),
+ OpenInBrowser: openInBrowser,
+ MsgType: msgType,
+ Url: url,
+ log: log.New("alerting.notifier.dingding"),
}, nil
}
type DingDingNotifier struct {
NotifierBase
- MsgType string
- Url string
- log log.Logger
+ MsgType string
+ OpenInBrowser bool //Set whether the message url will open outside of Dingding
+ Url string
+ log log.Logger
}
func (this *DingDingNotifier) Notify(evalContext *alerting.EvalContext) error {
@@ -65,6 +74,18 @@ func (this *DingDingNotifier) Notify(evalContext *alerting.EvalContext) error {
this.log.Error("Failed to get messageUrl", "error", err, "dingding", this.Name)
messageUrl = ""
}
+
+ if this.OpenInBrowser {
+ q := url.Values{
+ "pc_slide": {"false"},
+ "url": {messageUrl},
+ }
+
+ // Use special link to auto open the message url outside of Dingding
+ // Refer: https://open-doc.dingtalk.com/docs/doc.htm?treeId=385&articleId=104972&docType=1#s9
+ messageUrl = "dingtalk://dingtalkclient/page/link?" + q.Encode()
+ }
+
this.log.Info("messageUrl:" + messageUrl)
message := evalContext.Rule.Message