dingding钉钉 python接口

最近疫情,各种视频和通信工具火了,微信不能9个人以上进行视频会议(好像改进了)。刚开年用的是钉钉来开会,刚好年前又用了下钉钉的Py接口,昨天搞硬件没写,所以今天把前面用钉钉剩下的一些问题翻出来,重新用下,后面AI优化好了可以作为及时通信接口。

钉钉的py封装推荐https://pypi.org/project/DingtalkChatbot/

不知道是大神开发,还是和阿里有渊源,看源码是作者devin,大神照片

好,言归正传,有兴趣自行研究。

1.首先注册一个钉钉号

登入后增加一个dingding机器人,选择设置。

在电脑端登录,设置dingding机器人(手机不行),基本设计没啥,主要安全设置,有3个选项,我选择关键字,其他几个可以自行尝试。安全功能主要是官方为了防止信息发送泛滥来约束机器人行为的,我设了关键字,那么在py端,通过py发送的text必须以关键字开头,才能被发送出去,否者提示关键字错误。

2.记录机器人的webhook号

作为机器人的身份证,带着hook号的信息才能被发出

3.创建PY程序

3.1导入模块

from dingtalkchatbot.chatbot import DingtalkChatbot, is_not_null_and_blank_str, ActionCard, FeedLink, CardItem

这里有个坑,git官方只导入了第一个DingtalkChatbot,但是例子中的CardItem需要在这里导入,否者报错。git中example官方例子就是上面全部导入的,这是git的readme遗漏地方

3.2 实例化chatbot

xiaoding = DingtalkChatbot(webhook)

这问题不大,webhook就是2中的机器人号

3.3发送text

因为我在1中设定的安全关键字是“py:”,所以我发送的text的msg中,必须以这个开头

# Text消息@所有人
xiaoding.send_text(msg='py:我就是py,py就是我!', is_at_all=True)

这个at一个人和at所有人都没问题,被at的话在手机上会多出一个回复选项

3.4发送img

因为加入关键字,所以发送img不行,只有用以下方法

3.5发送link

没问题,要注意text不能为空,关键字应该加入到title中,这个地方可以加入外网的图片地址,相当于发图片

3.6发送Markdown

这个功能最好,以官方例子

# Markdown消息@所有人
xiaoding.send_markdown(title='氧气文字', text='#### 广州天气\n'
                           '> 9度,西北风1级,空气良89,相对温度73%\n\n'
                           '> ![美景](http://www.sinaimg.cn/dy/slidenews/5_img/2013_28/453_28488_469248.jpg)\n'
                           '> ###### 10点20分发布 [天气](http://www.thinkpage.cn/) \n',
                           is_at_all=True)
  • title

需要改为带关键字的,

  • text

##加一个空格:是标识字体为几级标题,对应效果为加粗字体变大,后面空格不能省,这个应该是markdown富文本编辑器的语法(没空研究了,虽然一直对实现这个功能很眼馋),这个最好保留。

>加一个空格,是让显示左边有条淡色的竖线,这样看起来很工整(大神对API很熟啊)

![]():分开说,!是外部解释器,如果不加!,那么后面一堆出来的就是那个网址的文本,如果加了,钉钉里面显示的就是解析的图片,我试了下本地图片不行,所以是个外部图片解释器,可以用网上图片地址;[]这个里面填写的是超链接显示字符,如果前面带了!作为解释器,那么【】里面的内容就会省掉,dingding消息里面看不到字符显示;最后是(),里面就是超链接

  • text续

如果每次改text很麻烦,在py头上申明变量,让text=变量同样好使

  • is_at_all

跟text类似,等于true直接好使,

  • at_mobiles

这个功能感觉还有待完善,源码注释首先有个小问题,和_ids写反了,应该是@的手机号,要带入到text中。所以尴尬了,要@的人不能跟发text一样,不仅需要在at_mobles=xx,还得在text中@xx,如果事先声明过一个mobiles变量,那么就得变量=手机号,text@手机号,at_mobils=变量名。如

Markdown消息@指定用户
at_mobiles_id=['199XXXX']
xiaoding.send_markdown(title='py:氧气文字', text='##### 广州天气 @199XXXX\n',
                        at_mobiles=at_mobiles_id)

这就很尴尬了,每次发消息还得把用户带进去。

边写边又尝试了下。

at_mobiles_id=['199xxxx']
xiaoding.send_markdown(title='py:氧气文字', text='##### 广州天气 \n'+'@'+at_mobiles_id[0],
                        at_mobiles=at_mobiles_id)

这样将text和电话切片开,实测OK,电话号需要用list类型,所以【0】不能省掉。

3.7发送feedcard信息

我的理解就是发送列表,发送没什么问题。官方里面的图片网址过期了,所以发送显示不出来,重新找一个就没问题了。另外官方

http://www.thinkpage.cn/

天气地址也过期了,需要换成

http://www.seniverse.com/

所以git官方还是用稳定图床当索引的好,不然像我这种新手第一次用,出错了之后一脸懵逼,最后好不容易才查出链接失效。

actioncard没去研究,目前im软件有这些基本功能就够了,太复杂反而脱离im的本质了。

OK,打字目前最多的一次,终有一日我要搞出需要的富文本。

 

 

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,你可以使用`websocket`库来建立与WebSocket接口的连接,并使用`requests`库来发送机器人的消息。下面是一个示例代码: ```python import websocket import requests import json import time # WebSocket接口URL websocket_url = 'wss://your_websocket_url' # 机器人Webhook地址 webhook_url = 'https://oapi.dingtalk.com/robot/send?access_token=your_access_token' def send_dingding_message(content): headers = {'Content-Type': 'application/json;charset=utf-8'} data = { "msgtype": "text", "text": { "content": content } } response = requests.post(webhook_url, headers=headers, data=json.dumps(data)) if response.status_code == 200: print("Dingding message sent successfully.") else: print("Failed to send Dingding message.") def on_message(ws, message): # 在此处编写接收到消息后的处理逻辑 # 判断接收到的消息是否符合预期,如果不符合则发送消息告警 if message != 'expected_message': send_dingding_message("WebSocket接口异常:接收到的消息不符合预期") def on_error(ws, error): # WebSocket出现错误时的处理逻辑 send_dingding_message(f"WebSocket接口异常:{error}") def on_close(ws): # WebSocket连接关闭时的处理逻辑 send_dingding_message("WebSocket接口连接已关闭") def on_open(ws): # WebSocket连接建立后的处理逻辑 send_dingding_message("WebSocket接口连接已建立") # 连接WebSocket接口 websocket.enableTrace(True) # 如果需要调试,打开此行注释 ws = websocket.WebSocketApp(websocket_url, on_message=on_message, on_error=on_error, on_close=on_close) ws.on_open = on_open ws.run_forever() ``` 以上代码示例中,`on_message`函数用于处理接收到的消息,你可以在该函数中编写逻辑来判断接收到的消息是否符合预期。如果不符合预期,可以调用`send_dingding_message`函数发送消息进行告警。`on_error`函数用于处理WebSocket连接出现错误的情况,`on_close`函数用于处理WebSocket连接关闭的情况,`on_open`函数用于处理WebSocket连接建立的情况。 在实际使用中,你需要将`your_websocket_url`替换为实际的WebSocket接口URL,将`your_access_token`替换为实际的机器人的access_token。 请注意,以上代码仅为示例,具体实现还需要根据你的实际需求进行适配和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值