python_在钉钉群@人员发送消息
python_在钉钉群@人员发送消息
1、第一种
企业内部机器人群聊实现@人接入指南,适用于@群机器人接收消息,处理完一系列的动作之后,将消息返回给发消息的人员,同时@该人员。
需要在企微后台新建一个自建应用,在自建应用里面添加机器人,再把该机器人拉进群。
import requests
def send_msg_to_dingtalk(webhook_url,user_id,mes_content):
data={
"at": {
"atUserIds":[user_id],
"isAtAll": False
},
"text": {
"content":mes_content
},
"msgtype":"text"
}
result=requests.post(url=webhook_url,json=data)
return result.json()
webhook_url="XXX"
user_id="XXX"
mes_content="你好,有什么需要帮助的么"
print(send_msg_to_dingtalk(webhook_url,user_id,mes_content))
效果展示:
2、第二种:
自定义机器人发送群消息,适用于没有前面接收群消息的步骤,只是发送群通知。跟影刀指令里面的“钉钉群通知”实现的原理和效果一样。
import requests
import json
import base64
import time
import hmac
import hashlib
def generate_sign(secret, timestamp):
"""生成加签"""
string_to_sign = f'{timestamp}\n{secret}'
hmac_code = hmac.new(secret.encode("utf-8"), string_to_sign.encode("utf-8"), digestmod=hashlib.sha256).digest()
sign = base64.b64encode(hmac_code).decode("utf-8")
return sign
def send_msg_to_dingtalk(webhook_url,secret,user_id,mes_content):
timestamp = str(round(time.time() * 1000))
sign = generate_sign(secret, timestamp)
post_url = '{}×tamp={}&sign={}'.format(webhook_url, timestamp, sign)
# 构造请求头
headers = {
'Content-Type': 'application/json'
}
payload = {
"at":{
"isAtAll":"false",
"atUserIds":[user_id]},
"text":{
"content":mes_content
},
"msgtype":"text"}
result=requests.post(url=post_url, headers=headers,data=json.dumps(payload))
return result.json()
webhook_url="XXX"
secret="XXX"
user_id="XXX"
mes_content="你好,需要帮助么"
print(send_msg_to_dingtalk(webhook_url,secret,user_id,mes_content))
效果展示: