dingding.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package notification
  2. import (
  3. "context"
  4. "github.com/0xJacky/Nginx-UI/model"
  5. "github.com/nikoksr/notify"
  6. "github.com/nikoksr/notify/service/dingding"
  7. "github.com/uozi-tech/cosy/map2struct"
  8. )
  9. // @external_notifier(DingTalk)
  10. type DingTalk struct {
  11. AccessToken string `json:"access_token" title:"Access Token"`
  12. Secret string `json:"secret" title:"Secret (Optional)"`
  13. }
  14. func init() {
  15. RegisterExternalNotifier("dingding", func(ctx context.Context, n *model.ExternalNotify, msg *ExternalMessage) error {
  16. dingTalkConfig := &DingTalk{}
  17. err := map2struct.WeakDecode(n.Config, dingTalkConfig)
  18. if err != nil {
  19. return err
  20. }
  21. if dingTalkConfig.AccessToken == "" {
  22. return ErrInvalidNotifierConfig
  23. }
  24. // Initialize DingTalk service
  25. dingTalkService := dingding.New(&dingding.Config{
  26. Token: dingTalkConfig.AccessToken,
  27. Secret: dingTalkConfig.Secret,
  28. })
  29. // Use the service
  30. externalNotify := notify.New()
  31. externalNotify.UseServices(dingTalkService)
  32. return externalNotify.Send(ctx, msg.GetTitle(n.Language), msg.GetContent(n.Language))
  33. })
  34. }