Webhook是一個(gè)API概念,webhoo是一種web回調(diào)或者h(yuǎn)ttp的push API.Webhook作為一個(gè)輕量的事件處理應(yīng)用,正變得越來(lái)越有用。 一定要結(jié)合企業(yè)微信API文檔:https://work.weixin.qq.com/api/doc/90000/90136/91770 核心:webhook唯一url+規(guī)定的參數(shù) 用途:公司內(nèi)部自動(dòng)推送新聞、通知、遞交工作日志、定期收集系統(tǒng)日志等 在終端某個(gè)群組添加機(jī)器人之后,創(chuàng)建者可以在機(jī)器人詳情頁(yè)看的該機(jī)器人特有的webhookurl。開(kāi)發(fā)者可以按以下說(shuō)明a向這個(gè)地址發(fā)起HTTP POST 請(qǐng)求,即可實(shí)現(xiàn)給該群組發(fā)送消息。特別特別要注意:一定要保護(hù)好機(jī)器人的webhook地址,避免泄漏!不要分享到github、博客等可被公開(kāi)查閱的地方,否則壞人就可以用你的機(jī)器人來(lái)發(fā)垃圾消息了。 以下是用curl工具往群組推送文本消息的示例(注意要將url替換成你的機(jī)器人webhook地址,content必須是utf8編碼):
curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693axxx6-7aoc-4bc4-97a0-0ec2sifa5aaa' \ -H 'Content-Type: application/json' \ -d ' { "msgtype": "text", "text": { "content": "hello world" } }'
消息類(lèi)型支持:簡(jiǎn)單文本-text,富文本-markdown,文件-file,圖片-image,圖文-news,以及組合型的卡片類(lèi)型template_card中的text_notcice和news_notice類(lèi)。 使用python編寫(xiě)的框架結(jié)構(gòu)如下: import requests mywx_url="你的機(jī)器人webhook地址" headers = {"Content-Type": "application/json", "charset": "utf-8"}固定 data={ "此處為消息內(nèi)容,后期所有改動(dòng)都在這里,根據(jù)不同的消息類(lèi)型參考API文檔進(jìn)行編寫(xiě)消息" } respond=requests.post(url=mywx_url,headers=headers,json=data) if respond.json()["errmsg"]=="ok": print("消息發(fā)送成功") else: print(respond.text)
簡(jiǎn)單文本類(lèi)
data={ "msgtype":"text", "text":{ "content":"時(shí)間:"+datetime.datetime.now().strftime('%Y年%m月%d日 %H時(shí)%M分%S秒%p')+"\n機(jī)器人發(fā)來(lái)的第一條消息,請(qǐng)查收", "mentioned_list":["puzhenglin"],#用戶(hù)ID提醒 "mentioned_mobile_list":["18827340310","@all"]#通過(guò)匹配手機(jī)號(hào)匹配 } }
markdown類(lèi)
data2={ "msgtype":"markdown", "markdown":{ "content":"<font color='warning'>時(shí)間:</font>"+str(datetime.datetime.now().strftime('%Y年%m月%d日 %H:%M:%S %p')) + "\n" "# 愛(ài)的回應(yīng)\n" ">\n" "<font color='info'>很想和你擁有一個(gè)很長(zhǎng)很長(zhǎng)的未來(lái),很想陪你走完你的一生</font>\n "<font color='warning'>彼此溫暖,互不辜負(fù)</font>\n" "@all", } }
file傳輸類(lèi) 先上傳到文件上傳接口獲取media_id才能發(fā)送 mywx_url_file="https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key=167c4082-8510-4539-87a0-69aecb94f320&type=file" #機(jī)器人webhook文件上傳接口 file={ "file":open(r"E:\今日運(yùn)維日?qǐng)?bào).pptx","rb") } media_id=requests.post(url=mywx_url_file,files=file).json()["media_id"] data6={ "msgtype":"file", "file":{ "media_id":media_id } }
news類(lèi) data3= { "msgtype": "news", "news": { "articles": [ { "title": "NBA今日新聞\n北京時(shí)間11月19日,勇士客場(chǎng)104-89大勝騎士,迎來(lái)兩連勝", "descrption": "nba-news", "url": "https://nbachina.qq.com/article/index.htm?articleId=20211119006852&site=nbatop&column=", "picurl": "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fn.sinaimg.cn%2Fsinacn21%2F360%2Fw680h480%2F20181112%2F39c7-hnstwwr2260914.jpg&refer=http%3A%2F%2Fn.sinaimg.cn&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1639907146&t=444dce80221909b73e5d8e08f77d6997" } ] } }
template_card卡片類(lèi)-text_notice days = datetime.datetime(2022, 1, 31, 0, 0, 0) - datetime.datetime.now()#為了效果引用 data4 = { "msgtype": "template_card", "template_card": { "card_type": "text_notice", "main_title": { "title": "2021倒計(jì)時(shí)", "desc": "好好珍惜跟她一起加油!" },
"emphasis_content": { "title": str(days.days) + "天" + str(days.seconds) + "秒", "desc":"2021倒計(jì)時(shí)" }, "sub_title_text": "每日一讀", "horizontal_content_list": [ { "type": 1, "keyname": "全國(guó)熱點(diǎn)新聞", "value": "閱讀新聞", "url": "http://www.gov.cn/xinwen/yaowen.htm" }, { "type": 1, "keyname": "云南熱點(diǎn)新聞", "value": "閱讀新聞", "url": "http://www./ywdt/ynyw/" } ], "jump_list": [ { "type": 1, "title": "疫情防控", "url": "https://user.guancha.cn/app/pneumonia" # "appid":"小程序id", } ], "card_action": { "type": 1, "url": "http://finance./video/003/009/022/00300902233_vw00000000000001_32bffe39.mp4", }
}
}
template_card卡片類(lèi)-news_notice data5 = { "msgtype": "template_card", "template_card": { "card_type": "news_notice", "main_title": { "title": "準(zhǔn)點(diǎn)NBA-新聞推送", "desc": "每天準(zhǔn)時(shí)推送最新勇士隊(duì)新聞" }, "card_image": { "url": "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Finews.gtimg.com%2Fnewsapp_match%2F0%2F11566271830%2F0.jpg&refer=http%3A%2F%2Finews.gtimg.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1639889007&t=ff5f487bbde84d90d36764cca8871340", "aspect_ratio": 2.25 },
"horizontal_content_list": [ { "type": 1, "keyname": "今日比賽回顧", "value": "點(diǎn)擊觀看比賽回放", "url": "https://v.qq.com/x/cover/mzc00200qhithzs/h0041cgb9f9.html" }, { "type": 1, "keyname": "更多NBA賽事", "value": "點(diǎn)擊觀看直播", "url": "30.tv" } ], "jump_list":[ { "type": 1, "title": "IT資訊", "url": "http://www./ }], "card_action": { "type": 1, "url": "https://www.bilibili.com/video/BV1644115717?t=3.9", }
}
}
如何讓機(jī)器人每天定期往群里發(fā)最新的新聞、事件、文件? 爬蟲(chóng)(最新數(shù)據(jù))+webhook+crond
|