robot

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 29, 2021 License: MIT Imports: 6 Imported by: 1

README

dingtalk-robot

Go Reference 钉钉自定义机器人

Example

text
c := NewClient(os.Getenv("webhok"), os.Getenv("secret"))
m := NewTextMessage()
m.SetContent("test").AtAll()
_, err := c.Send(m)
if err != nil {
    t.Fatal(err)
}
c := NewClient(os.Getenv("webhok"), os.Getenv("secret"))
m := NewLinkMessage()
m.SetText("这个即将发布的新版本,创始人xx称它为红树林。而在此之前,每当面临重大升级,产品经理们都会取一个应景的代号,这一次,为什么是红树林")
m.SetTitle("时代的火车向前开")
m.SetMessageUrl("https://www.dingtalk.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI")
_, err := c.Send(m)
if err != nil {
    t.Fatal(err)
}
markdown
c := NewClient(os.Getenv("webhok"), os.Getenv("secret"))
m := NewMarkdownMessage()
m.SetTitle("杭州天气")
m.SetText("#### 杭州天气 @150XXXXXXXX \n > 9度,西北风1级,空气良89,相对温度73%\n > ![screenshot](https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png)\n > ###### 10点20分发布 [天气](https://www.dingtalk.com) \n")
m.AddAtMobiles(os.Getenv("mobile"))
_, err := c.Send(m)
if err != nil {
    t.Fatal(err)
}
card
single action card
c := NewClient(os.Getenv("webhok"), os.Getenv("secret"))
m := NewSingleActionCardMessage()
m.SetTitle("乔布斯 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身")
m.SetText("![screenshot](https://gw.alicdn.com/tfs/TB1ut3xxbsrBKNjSZFpXXcXhFXa-846-786.png) \n ### 乔布斯 20 年前想打造的苹果咖啡厅 \n Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划")
m.SetBtnOrientation(Longitudinal)
m.SetSingleTitle("阅读全文")
m.SetSingleUrl("https://www.dingtalk.com/")
_, err := c.Send(m)
if err != nil {
    t.Fatal(err)
}
action card
c := NewClient(os.Getenv("webhok"), os.Getenv("secret"))
m := NewActionCardMessage()
m.SetTitle("乔布斯 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身")
m.SetText("![screenshot](https://gw.alicdn.com/tfs/TB1ut3xxbsrBKNjSZFpXXcXhFXa-846-786.png) \n ### 乔布斯 20 年前想打造的苹果咖啡厅 \n Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划")
m.SetBtnOrientation(Longitudinal)

m.AddBtns(NewActionCardButton().SetTitle("内容不错").SetActionUrl("https://www.dingtalk.com/"), NewActionCardButton().SetTitle("不感兴趣").SetActionUrl("https://www.dingtalk.com/"))
_, err := c.Send(m)
if err != nil {
    t.Fatal(err)
}
feed card
c := NewClient(os.Getenv("webhok"), os.Getenv("secret"))
m := NewFeedCardMessage()
m.AddLinks(
    NewLink().SetTitle("时代的火车向前开1").SetMessageUrl("https://www.dingtalk.com/").SetPicUrl("https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png"),
    NewLink().SetTitle("时代的火车向前开2").SetMessageUrl("https://www.dingtalk.com/").SetPicUrl("https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png"),
)
_, err := c.Send(m)
if err != nil {
    t.Fatal(err)
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ActionCard

type ActionCard struct {
	// Title 首屏会话透出的展示内容
	Title string
	// Text markdown格式的消息
	Text string
	// BtnOrientation btn 排列方式
	BtnOrientation BtnOrientationType
}

ActionCard 卡片

func (*ActionCard) SetBtnOrientation

func (m *ActionCard) SetBtnOrientation(btnOrientation BtnOrientationType) *ActionCard

SetBtnOrientation set ActionCard.BtnOrientation

func (*ActionCard) SetText

func (m *ActionCard) SetText(text string) *ActionCard

SetText set ActionCard.Text

func (*ActionCard) SetTitle

func (m *ActionCard) SetTitle(title string) *ActionCard

SetTitle set ActionCard.Title

type ActionCardButton

type ActionCardButton struct {
	// Title 按钮标题
	Title string
	// ActionUrl 点击按钮触发的URL
	ActionUrl string
}

ActionCardButton 跳转卡片中的按钮实体类

func NewActionCardButton

func NewActionCardButton() *ActionCardButton

NewActionCardButton create ActionCardButton

func (*ActionCardButton) SetActionUrl

func (m *ActionCardButton) SetActionUrl(actionUrl string) *ActionCardButton

SetActionUrl set ActionCardButton.ActionUrl

func (*ActionCardButton) SetTitle

func (m *ActionCardButton) SetTitle(title string) *ActionCardButton

SetTitle set ActionCardButton.Title

type ActionCardMessage

type ActionCardMessage struct {
	BaseMessage
	ActionCard
	Btns []*ActionCardButton
}

ActionCardMessage 独立跳转ActionCard类型

func NewActionCardMessage

func NewActionCardMessage() *ActionCardMessage

NewActionCardMessage crate ActionCardMessage

func (*ActionCardMessage) AddBtn

AddBtn add ActionCardMessage.Btns

func (*ActionCardMessage) AddBtns

AddBtns add ActionCardMessage.Btns

func (*ActionCardMessage) SetBtns

SetBtns set ActionCardMessage.Btns

func (*ActionCardMessage) ToMessageMap

func (m *ActionCardMessage) ToMessageMap() map[string]interface{}

type At

type At struct {
	// AtMobiles 被@人的手机号
	AtMobiles []string
	// AtUserIds 被@人的用户userid
	AtUserIds []string
	// IsAtAll 是否@所有人
	IsAtAll bool
}

At @

func (*At) AddAtMobiles

func (m *At) AddAtMobiles(atMobiles ...string) *At

AddAtMobiles add At.AtMobiles

func (*At) AddAtUserIds

func (m *At) AddAtUserIds(atUserIds ...string) *At

AddAtUserIds add At.AtUserIds

func (*At) AtAll

func (m *At) AtAll() *At

AtAll set At.IsAtAll is true

func (*At) SetAtMobiles

func (m *At) SetAtMobiles(atMobiles []string) *At

SetAtMobiles set At.AtMobiles

func (*At) SetAtUserIds

func (m *At) SetAtUserIds(atUserIds []string) *At

SetAtUserIds set At.AtUserIds

func (*At) SetIsAtAll

func (m *At) SetIsAtAll(isAtAll bool) *At

SetIsAtAll set At.IsAtAll

func (*At) ToAtMap

func (m *At) ToAtMap() map[string]interface{}

type BaseMessage

type BaseMessage struct {
	MsgType MsgType
}

func (*BaseMessage) ToMsgTypeMap

func (m *BaseMessage) ToMsgTypeMap() map[string]interface{}

type BtnOrientationType

type BtnOrientationType string
const (
	// Longitudinal 按钮竖直排列
	Longitudinal BtnOrientationType = "0"
	// Transverse 按钮横向排列
	Transverse BtnOrientationType = "1"
)

type Client

type Client struct {
	WebHok string
	Secret string
}

Client dingtalk robot client

func NewClient

func NewClient(webHok, secret string) *Client

NewClient create Client

func (*Client) Send

func (c *Client) Send(message Message) (*ErrorResponse, error)

type ErrorResponse

type ErrorResponse struct {
	Code   int    `json:"errcode"`
	ErrMsg string `json:"errmsg"`
}

ErrorResponse response error msg

type FeedCardMessage

type FeedCardMessage struct {
	BaseMessage
	// Links 跳转链接
	Links []*Link
}

FeedCardMessage FeedCard类型

func NewFeedCardMessage

func NewFeedCardMessage() *FeedCardMessage

NewFeedCardMessage create FeedCardMessage

func (m *FeedCardMessage) AddLinks(links ...*Link) *FeedCardMessage

AddLinks add FeedCardMessage.Links

func (m *FeedCardMessage) SetLinks(links []*Link) *FeedCardMessage

SetLinks set FeedCardMessage.Links

func (*FeedCardMessage) ToMessageMap

func (m *FeedCardMessage) ToMessageMap() map[string]interface{}
type Link struct {
	// Title 消息标题
	Title string
	// PicUrl 图片URL
	PicUrl string
	// MessageUrl 点击消息跳转的URL
	MessageUrl string
}

Link link

func NewLink() *Link

NewLink create Link

func (*Link) SetMessageUrl

func (m *Link) SetMessageUrl(messageUrl string) *Link

SetMessageUrl set Link.MessageUrl

func (*Link) SetPicUrl

func (m *Link) SetPicUrl(picUrl string) *Link

SetPicUrl set Link.PicUrl

func (*Link) SetTitle

func (m *Link) SetTitle(title string) *Link

SetTitle set Link.Title

type LinkMessage

type LinkMessage struct {
	BaseMessage
	// Text  消息内容。如果太长只会部分展示
	Text string
	Link
}

LinkMessage 链接消息类型

func NewLinkMessage

func NewLinkMessage() *LinkMessage

NewLinkMessage create LinkMessage

func (*LinkMessage) SetMessageUrl

func (m *LinkMessage) SetMessageUrl(messageUrl string) *LinkMessage

SetMessageUrl set LinkMessage#Link.MessageUrl

func (*LinkMessage) SetPicUrl

func (m *LinkMessage) SetPicUrl(picUrl string) *LinkMessage

SetPicUrl set LinkMessage#Link.PicUrl

func (*LinkMessage) SetText

func (m *LinkMessage) SetText(text string) *LinkMessage

SetText set LinkMessage#Links.text

func (*LinkMessage) SetTitle

func (m *LinkMessage) SetTitle(title string) *LinkMessage

SetTitle set LinkMessage#Link.Title

func (*LinkMessage) ToMessageMap

func (m *LinkMessage) ToMessageMap() map[string]interface{}

type MarkdownMessage

type MarkdownMessage struct {
	BaseMessage
	At
	// Title  首屏会话透出的展示内容
	Title string
	// Text markdown格式的消息
	Text string
}

MarkdownMessage markdown类型

func NewMarkdownMessage

func NewMarkdownMessage() *MarkdownMessage

NewMarkdownMessage create MarkdownMessage

func (*MarkdownMessage) SetText

func (m *MarkdownMessage) SetText(text string) *MarkdownMessage

SetText set MarkdownMessage.Text

func (*MarkdownMessage) SetTitle

func (m *MarkdownMessage) SetTitle(title string) *MarkdownMessage

SetTitle set MarkdownMessage.Title

func (*MarkdownMessage) ToMessageMap

func (m *MarkdownMessage) ToMessageMap() map[string]interface{}

type Message

type Message interface {
	ToMessageMap() map[string]interface{}
}

type MsgType

type MsgType string
const (
	TextMsgType       MsgType = "text"
	LinkMsgType       MsgType = "link"
	MarkdownMsgType   MsgType = "markdown"
	ActionCardMsgType MsgType = "actionCard"
	FeedCardMsgType   MsgType = "feedCard"
)

type SingleActionCardMessage

type SingleActionCardMessage struct {
	BaseMessage
	ActionCard
	// SingleTitle 单个按钮的标题
	SingleTitle string
	// 点击singleTitle按钮触发的URL
	SingleUrl string
}

SingleActionCardMessage 整体跳转ActionCard类型

func NewSingleActionCardMessage

func NewSingleActionCardMessage() *SingleActionCardMessage

NewSingleActionCardMessage create SingleActionCardMessage

func (*SingleActionCardMessage) SetSingleTitle

func (m *SingleActionCardMessage) SetSingleTitle(title string) *SingleActionCardMessage

SetSingleTitle set SingleActionCardMessage.SingleTitle

func (*SingleActionCardMessage) SetSingleUrl

func (m *SingleActionCardMessage) SetSingleUrl(singleUrl string) *SingleActionCardMessage

SetSingleUrl set SingleActionCardMessage.SingleUrl

func (*SingleActionCardMessage) ToMessageMap

func (m *SingleActionCardMessage) ToMessageMap() map[string]interface{}

type TextMessage

type TextMessage struct {
	BaseMessage
	At
	// Content 消息内容
	Content string
}

TextMessage 文本消息

func NewTextMessage

func NewTextMessage() *TextMessage

NewTextMessage create TextMessage

func (*TextMessage) SetContent

func (m *TextMessage) SetContent(content string) *TextMessage

SetContent set TextMessage.Content

func (*TextMessage) ToMessageMap

func (m *TextMessage) ToMessageMap() map[string]interface{}

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL