微信企业号发送信息
2017-12-26 09:57
579 查看
需要去申请一个企业微信,然后新建一个应用,记住图中红色区域的字符串,代码里要用到
微信企业号官网:https://work.weixin.qq.com/wework_admin/loginpage_wx?from=myhome_qyh_redirect&ref_from=myhome_baidu
python代码如下:******用自己应用的secret代替
微信企业号官网:https://work.weixin.qq.com/wework_admin/loginpage_wx?from=myhome_qyh_redirect&ref_from=myhome_baidu
python代码如下:******用自己应用的secret代替
#!/usr/bin/python # coding: utf-8 import urllib, urllib2 import json import sys import os import time import datetime def get_unixtime_now(): dtime = datetime.datetime.now() unix_time = time.mktime(dtime.timetuple()) return unix_time def gettoken_from_qq(corpid, corpsecret, pid): gettoken_url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + corpid + "&corpsecret=" + corpsecret print gettoken_url try: token_file = urllib2.urlopen(gettoken_url) except urllib2.HTTPError as e: print e.code print e.read().decode("utf8") sys.exit() token_data = token_file.read().decode("utf-8") filepath = "./%s_%s" % (corpid, corpsecret) print filepath token_json = json.loads(token_data) token_json.keys() token = token_json["access_token"] expires_in = token_json["expires_in"] errcode = token_json["errcode"] errmsg = token_json["errmsg"] token_file = open(filepath, "wb") expires_time = expires_in + get_unixtime_now() - 200 try: qqstr = "{\"QQ\":" token_file.write(qqstr) token_file.write(token_data) spdbstr = ",\"SPDB\":{\"expires_time\":\"%.0f\"}}" % (expires_time) token_file.write(spdbstr) finally: token_file.close() return (token, expires_in, errcode, errmsg) def gettoken_from_file(corpid, corpsecret, pid): filepath = "./%s_%s" % (corpid, corpsecret) print filepath if not os.path.exists(filepath): return ("", 0, "except error", "except error", 0) token_file = open(filepath, "rb") try: token_data = token_file.read(); token_json = json.loads(token_data) token_json.keys() token = token_json["QQ"]["access_token"] expires_in = token_json["QQ"]["expires_in"] errcode = token_json["QQ"]["errcode"] errmsg = token_json["QQ"]["errmsg"] expires_time = token_json["SPDB"]["expires_time"] except: return ("", 0, "except error", "except error", 0) finally: token_file.close() return (token, expires_in, errcode, errmsg, expires_time) def senddata(access_token, user, content, appid, pid): send_url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + access_token send_values = { "touser": user, "toparty": "1", "msgtype": "text", "agentid": appid, "text": { "content": content }, "safe": "0" } now = datetime.datetime.now() dt = now.strftime("%Y%m%d %H:%M:%S.") + now.strftime('%f')[:3] print "P=%08d %s SENDVALUE=(%s)" % (pid, dt, send_values) send_data = json.dumps(send_values, ensure_ascii=False) send_request = urllib2.Request(send_url, send_data) response = json.loads(urllib2.urlopen(send_request).read()) response.keys() errcode = response["errcode"] errmsg = response["errmsg"] now = datetime.datetime.now() dt = now.strftime("%Y%m%d %H:%M:%S.") + now.strftime('%f')[:3] print "P=%08d %s RESPONSE=(%s)" % (pid, dt, str(response)) return (errcode, errmsg); if __name__ == "__main__": reload(sys) content = u"你好test" appid=1000002 user="@all" corpid = "******" corpsecret = "*****************************" pid = 1234 #anyway expires_time = 0 sys.setdefaultencoding('utf-8') (accesstoken, expires_in, errcode, errmsg, expires_time) = gettoken_from_file(corpid, corpsecret, pid) if accesstoken == "": print "accesstoken gettoken_form_file is null!!" print "Get new token from QQ,because token is nul" (accesstoken, expires_in, errcode, errmsg) = gettoken_from_qq(corpid, corpsecret, pid) else: unix_time = int(get_unixtime_now()) vi_expires_time = int(expires_time) print "unix_time=%ld diff expires_time=%ld" % (unix_time, vi_expires_time) if unix_time > vi_expires_time: print "accesstoken expiretims differ: now=%ld > last expirestime =%ld" % (unix_time, vi_expires_time) print "Get new token from QQ,because expire time" (accesstoken, expires_in, errcode, errmsg) = gettoken_from_qq(corpid, corpsecret, pid) else: print "Get token from file " print "accesstoken=%s" % (accesstoken) print "expires_in=%s" % (expires_in) print "errcode=%s" % (errcode) print "errmsg=%s" % (errmsg) print "expires_time=%s" % (expires_time) print "unixtime=%.0f" % (get_unixtime_now()) (errcode, errmsg) = senddata(accesstoken, user, content, appid, pid) print "RESPONSE errcode=%s" % (errcode) print "RESPONSE errmsg=%s" % (errmsg) # errcode = 40001 # 40001 invalid credential, access_token is invalid or not latest # 42001 access_token expired if errcode == 42001 or errcode == 40001: print "Get new token from QQ,because 42001 or 40001" (accesstoken, expires_in, errcode, errmsg) = gettoken_from_qq(corpid, corpsecret, pid) (errcode, errmsg) = senddata(accesstoken, user, content, appid, pid) print "RESPONSE errcode=%s" % (errcode) print "RESPONSE errmsg=%s" % (errmsg)
相关文章推荐
- Nagios通过微信企业号发送告警信息
- 微信企业号,文本信息发送
- 微信企业号开发笔记——文本信息发送
- python和shell脚本:微信企业号发送信息
- 2016ASP.NET使用QQ邮箱发送信息最全+无错误
- 获取Android应用程序出错信息并将信息发送到指定邮件
- TCP c/s模式实现点对点,一对多聊天 识别不同的TCP通道.给相应的TCP客户发送信息
- 新技能,微信批量发送中秋节信息给好友~~
- Linux下获取服务器信息并发送邮件 推荐
- 弹出窗口刷新它的父页面后。出现不重新发送信息,则无法刷新网页
- 主线程向子线程发送信息
- rsyslog通过自定义json格式发送日志信息给logstash
- smsManager.sendTextMessage() 发送短信息
- Perl结合飞信发送免费的天气预报信息
- 异常信息:CLR无法从COM 上下文0x645e18 转换为COM上下文0x645f88,这种状态已持续60秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作.这种情况通常会影响到
- 不重新发送信息,则无法刷新网页
- [翻译]ASP.NET 2.0中的健康监测系统(Health Monitoring)(2) - 通过Email发送监测信息
- PHP之微信企业号推送信息
- Android Mms专题之:信息发送流程
- linux下配置邮件发送系统信息