# -*- coding:utf-8 -*- import requests import json import sys # 企業號及應用相關信息 corp_id = 'xxxx' corp_secret = 'xxxx' grant_type = 'client_credential' # 存放access_token文件路徑 file_path = 'access_token.log' def get_access_token_from_file(): try: f = open(file_path,'r+') this_access_token = f.read() print('get success %s' % this_access_token) f.close() return this_access_token except Exception as e: print(e) # 獲取token函數,文本里記錄的token失效時調用 def get_access_token(): # get_token_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s' % (corp_id, corp_secret) get_token_url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=%s&appid=%s&secret=%s' % (grant_type,corp_id,corp_secret) print(get_token_url) r = requests.get(get_token_url) request_json = r.json() this_access_token = request_json['access_token'] print(this_access_token) r.close() # 把獲取到的access_token寫入文本 try: f = open(file_path,'w+') f.write(this_access_token) f.close() except Exception as e: print(e) # 返回獲取到的access_token值 return this_access_token #測試獲取token和發送message ''' if __name__ == '__main__': access_token = get_access_token_from_file() try: send_message_url = 'https://api.weixin.qq.com/cgi-bin/message/send?access_token=%s' % access_token print(send_message_url) message_params = {'user':'Hello QingHe '} r = requests.post(send_message_url,data=json.dumps(message_params)) print('post success %s' % r.text) except Exception as e: print(e) access_token = get_access_token() ''' # snedMessage # 死循環,直到消息成功發送 flag = True while(flag): # 從文本獲取access_token access_token = get_access_token_from_file() try: to_user = '@all' message = sys.argv[3] send_message_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s' % access_token print(send_message_url) message_params = { "touser":to_user, "msgtype":"text", "agentid":agent_id, "text":{ "content" : message }, "safe":0 } r = requests.post(send_message_url, data=json.dumps(message_params)) print('post success %s ' % r.text) # 判斷是否發送成功,如不成功則跑出異常,讓其執行異常處理里的函數 request_json = r.json() errmsg = request_json['errmsg'] if errmsg != 'ok': raise # 消息成功發送,停止死循環 flag = False except Exception as e: print(e) access_token = get_access_token()