python 调用dingding的API进行消息发送

python 调用dingding的API进行消息发送

使用python的fastapi快速构建后端api接口

# pip install fastapi requests uvicorn
from typing import Set
from fastapi import FastAPI
from starlette.middleware.cors import CORSMiddleware
from pydantic import BaseModel
import json
import requests
#创建一个FastApi实例
app = FastAPI()
# fastapi 关闭接口文档
# app = FastAPI(docs_url=None, redoc_url=None)
#设置允许访问的域名
origins = ["*"] #也可以设置为"*",即为所有。
# 创建数据模型
# 数据模型
# {
# "clientName": "GW",
# "handlerName": "dingTalkRobotWebHookMessageHandler",
# "parmaClassName": "com.test.mp.message.param.dingtalk.JqDingTalkRobotTemplateMessage",
# "requestMap": {
# "markdown": {
# "title": "免费试用账户申请",
# "text": "# 免费试用申请\n ## 申请时间:2022/03/25 09:07:40 \n### 姓名:asdasd \n ### 电话:18222222222 \n ### 企业:asd \n ### 地址:asd\n"
# },
# "msgtype": "markdown",
# "at": {
# "atMobiles": ["@dasasd","@dsa","@sdad"]
# }
# },
# "token": "4b917j8pzmwu5c6irelftvdn3q0gya2kxhsotdej6zzqxodnp5bmkx1uid8y"
# }
#设置跨域传参
app.add_middleware(
CORSMiddleware,
allow_origins=origins, #设置允许的origins来源
allow_credentials=True,
allow_methods=["*"], # 设置允许跨域的http方法,比如 get、post、put等。
allow_headers=["*"]) #允许跨域的headers,可以用来鉴别来源等作用。
# 定义数据模型
class Markdown(BaseModel):
title: str = None
text: str = None
class At(BaseModel):
atMobiles: Set[str] = None # 列表数据
class RequestMap(BaseModel):
markdown: Markdown = None
msgtype: str = None
at: At = None
class Item(BaseModel):
clientName: str = None
handlerName: str = None
parmaClassName: str = None
requestMap: RequestMap = None
token: str = None
def set_default(obj):
if isinstance(obj, set):
return list(obj)
raise TypeError
@app.post("/send")
async def send_dingding(message: Item):
msg = message.requestMap.dict()
dt = json.dumps(msg, default=set_default)
webhook = "https://oapi.dingtalk.com/robot/send?access_token=自己的token"
header = {
"Content-Type": "application/json",
"Charset": "UTF-8"
}
message_json = json.dumps(msg, default=set_default)
info = requests.post(url=webhook,data=message_json,headers=header)
return {"status": info.text}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app='main:app', host="0.0.0.0", port=8000, reload=True, debug=True)
posted @   蒲公英PGY  阅读(295)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示