钉钉报警qt和python3版本
python3:
#!/usr/bin/env python3
import json
import requests
import sys
def send_msg(url, reminders, msg):
headers = {'Content-Type': 'application/json;charset=utf-8'}
data = {
"msgtype": "text",
"at": {
"atMobiles": reminders,
"isAtAll": False,
},
"text": {
"content": 'warning:' + msg,
}
}
r = requests.post(url, data=json.dumps(data), headers=headers)
return r.text
if __name__ == '__main__':
msg = sys.argv[1]
reminders = []
url = 'https://oapi.dingtalk.com/robot/send?access_token='
print(send_msg(url, reminders, msg))
qt:
QNetworkAccessManager *manager = new QNetworkAccessManager()
void AlarmDingDing::SendTextMsg(const QString &msg)
{
QUrl url("https://oapi.dingtalk.com/robot/send?access_token=");
QNetworkRequest request(url);
request.setRawHeader("Content-Type","application/json;charset=utf-8");
QString data = assembleJsonTestMsg(msg);
qDebug() << QDateTime::currentDateTime() << " SendTextMsg:" << data;
QNetworkReply *reply = manager->post(request,data.toLocal8Bit());
connect(reply,SIGNAL(finished()),this,SLOT(onFinished()));
}
void AlarmDingDing::onFinished()
{
QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender());
if (nullptr == reply)
{
return;
}
QByteArray byteArray = reply->readAll();
reply->deleteLater();
reply = nullptr;
QString recvMsg = QString(byteArray);
qDebug() << QDateTime::currentDateTime() << " RecvDingDingMsg:" << recvMsg;
}
QString AlarmDingDing::assembleJsonTestMsg(const QString &msg)
{
QVariantMap varMap;
varMap["msgtype"] = "text";
QVariantMap atMap;
atMap["atMobiles"] = QStringList();
atMap["isAtAll"] = false;
varMap["at"] = atMap;
QVariantMap textMap;
textMap["content"] = QString("?warning?:%1").arg(msg);
varMap["text"] = textMap;
return mapToJson(varMap);
}