背景
先前使用popo
机器人发送消息通知 站会、周报、crash 等信息,被收购后改用钉钉,这些工作就迁移到钉钉
了。
发送txt消息源码
如何添加至群组请参考钉钉开放平台群机器人
发送txt消息源码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 import sys import json import requests help = """ 用法: ding msg msg:消息内容 """ def sendTextMsg(text): headers = { 'Content-Type': 'application/json' } data = { "msgtype": "text", "text": { "content": text }, "at": { "isAtAll": True } } return requests.post(url="https://oapi.dingtalk.com/robot/send?access_token=******", data=json.dumps(data), headers=headers) if __name__ == "__main__": if len(sys.argv) == 2: content = sys.argv[1] resp = sendTextMsg(content) res_data = json.loads(resp.text) if res_data["errcode"] == 0: print "钉钉消息发送成功" else: print res_data["errcode"], res_data["errmsg"] else: print help
打包为可执行脚本
Python
脚本可使用 pyinstaller
模块很方便的打包成可执行文件(使用方法参看pyinstaller官网 )
产物在当前目录dist/
文件夹下,可将产物发送给需要的同事,即可快速通过钉钉机器人发送消息。
使用姿势:
封装其他类型消息
钉钉机器人支持多种类消息型,闲时使用python
封装了这些消息的发送逻辑,以免今后工作中用到,含以下类型:
text类型
link类型
markdown类型
整体跳转ActionCard类型
FeedCard类型
详细代码请查看项目:dingmsgapi
使用姿势:
初始化实例
1 2 3 from ding_msg_api import MsgClient # Webhook机器人access_token msgClient = MsgClient("****************")
发送Text消息
1 2 3 4 5 6 7 8 9 10 11 12 13 from ding_msg_api import TextMsg # @群里所有人发文本消息 txtMsg = TextMsg() txtMsg.set_text(txt="text message") txtMsg.set_at_all(True) msgClient.send_message(txtMsg) # @某个人发文本消息 txtMsg = TextMsg() txtMsg.set_text(txt="text message") txtMsg.add_at_user(telephone="***********") msgClient.send_message(txtMsg)
发送Link消息
1 2 3 4 5 6 7 8 from ding_msg_api import LinkMsg linkMsg = LinkMsg() linkMsg.set_title(title="link message") linkMsg.set_text(txt="test") linkMsg.set_picUrl(pic_url="") linkMsg.set_messageUrl(message_url="") msgClient.send_message(linkMsg)
发送Markdown消息
1 2 3 4 5 6 from ding_msg_api import MarkdownMsg markDownMsg = MarkdownMsg() markDownMsg.set_title(title="markdown message") markDownMsg.set_text(txt="### test") msgClient.send_message(markDownMsg)
发送ActionCard消息
1 2 3 4 5 6 7 8 from ding_msg_api import ActionCardMsg actionCardMsg = ActionCardMsg() actionCardMsg.set_title(title="actioncard message") actionCardMsg.set_text(txt="test") actionCardMsg.set_singleTitle(single_title="test") actionCardMsg.set_singleURL(single_url="") msgClient.send_message(actionCardMsg)
发送FeedCard消息
1 2 3 4 5 6 from ding_msg_api import FeedCardMsg feedCardMsg = FeedCardMsg() for i in range(5): feedCardMsg.add_feed_link(title="test%d" % i, message_url="messageURL%d" % i, pic_url="picUrl%d" % i) msgClient.send_message(feedCardMsg)
参考文档
钉钉开放平台群机器人