dingding.go 948 B

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