欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python開(kāi)發(fā)微信服務(wù)號(hào)消息推送示例

 更新時(shí)間:2023年10月04日 11:14:59   作者:不言仙聲  
這篇文章主要為大家介紹了python開(kāi)發(fā)微信服務(wù)號(hào)消息推送示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

今天聊聊微信服務(wù)號(hào)的消息推送功能,因?yàn)樽罱鼊偤糜羞@么個(gè)需求需要通過(guò)微信給用戶推送消息,個(gè)人號(hào)或者企業(yè)個(gè)人號(hào)沒(méi)去詳細(xì)研究,看了個(gè)大概是需要先登錄在進(jìn)行發(fā)消息的功能,略麻煩,過(guò)。剛好有個(gè)認(rèn)證的服務(wù)號(hào),直接上手

消息推送目前分為兩種,一種是模板消息,一種是訂閱通知。兩種都體驗(yàn)過(guò),訂閱通知是比較坑的,因?yàn)樗切枰脩酎c(diǎn)擊訂閱一次才能發(fā)送一次,對(duì)我沒(méi)啥用(多用于那種上課通知開(kāi)獎(jiǎng)通知啥的)

我的需求是在用戶有需要的,然后可以每天推送一個(gè)匯率通知,經(jīng)過(guò)測(cè)試之后模板消息可以達(dá)到這個(gè)功能,但是缺點(diǎn)是無(wú)法自定義標(biāo)題和關(guān)鍵詞,如果需要自定義的話得跟官方申請(qǐng)讓他們審核過(guò)后才允許,下圖是當(dāng)時(shí)被駁回的審核通知。

既然無(wú)法自定義,只能自己去找個(gè)相近的模板了,但是還要吐槽的是,微信關(guān)于篩選模板這一塊做得也不盡人意,只能一頁(yè)一頁(yè)翻過(guò)去,或者根據(jù)標(biāo)題搜索,但是相關(guān)行業(yè)的又沒(méi)有相應(yīng)的,最后勉強(qiáng)找個(gè)了這樣的

那么最后完成的效果是什么樣的呢?圖片

正文

整體思路蠻清晰,數(shù)據(jù)都通過(guò)相應(yīng)的 API 傳送,根據(jù)官方的相關(guān)文檔介紹

通過(guò)服務(wù)號(hào)的 APPID 和 APPSECRET 獲取 Access token

通過(guò) Access token 去使用對(duì)應(yīng)模板,填入想要發(fā)送的信息,然后發(fā)送給對(duì)應(yīng)的用戶

分步驟介紹圖片

# 獲取access_token
def get_access_token():
    ## 因?yàn)槲沂菑奈募凶x取的,你們嫌麻煩可以直接把兩個(gè)填到鏈接的大括號(hào)內(nèi),并刪除后面的.format(xxx)
    # appId
    app_id = config["app_id"]
    # appSecret
    app_secret = config["app_secret"]
    post_url = ("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={}&secret={}"
                .format(app_id, app_secret))
    ## 嘗試使用get獲取并轉(zhuǎn)換成json,同時(shí)取其中的值
    try:
        access_token = get(post_url).json()['access_token']
    except KeyError:
        print("獲取access_token失敗,請(qǐng)檢查app_id和app_secret是否正確")
        os.system("pause")
        sys.exit(1)
    print(access_token)
    return access_toke
## 發(fā)送消息
def send_message(to_user, access_token, money):
    # 這個(gè)url是賦值包含access_token的鏈接,方便后續(xù)post用
    url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={}".format(access_token)
    now = datetime.datetime.now()
    date = now.strftime("%m月%d日")
    # 這里是傳輸需要發(fā)送的數(shù)據(jù)
    data = {
        "touser": to_user,
        "template_id": config["template_id"],
        # 這個(gè)url是點(diǎn)擊詳情之后的跳轉(zhuǎn),這里跳轉(zhuǎn)到百度匯率歷史
        "url": "https://gushitong.baidu.com/foreign/global-CNYTWD",
        "data": {
            # 其中thing15這些是按照模板詳情中的參數(shù)來(lái)的
            "thing15": {
                "value": "匯率通知"
            },
            "thing16": {
                "value": "1 CNY = {} TWD".format(money)
            },
            "time9": {
                "value": date
            },
            "thing2": {
                "value": "點(diǎn)擊詳情查看歷史匯率"
            }
        }
    }
    # 這里就是推送消息了
    response = post(url, json=data).json()
    if response["errcode"] == 40037:
        print("推送消息失敗,請(qǐng)檢查模板id是否正確")
    elif response["errcode"] == 40036:
        print("推送消息失敗,請(qǐng)檢查模板id是否為空")
    elif response["errcode"] == 40003:
        print("推送消息失敗,請(qǐng)檢查微信號(hào)是否正確")
    elif response["errcode"] == 0:
        print("推送消息成功")
    else:
        print(response)

整體思路是這個(gè)樣子,接下來(lái)我只需要實(shí)現(xiàn)它定時(shí)推送,或者后續(xù)增加的低于某個(gè)值推送等,不過(guò)這是后續(xù)增加的其它需求了,不過(guò)目前有一個(gè)問(wèn)題就是,只能自己加要通知哪些用戶,其實(shí)應(yīng)該是有個(gè)頁(yè)面讓用戶自己選擇是否需要這個(gè)推送的。不過(guò)這方面感覺(jué)還得搭個(gè)平臺(tái)或者簡(jiǎn)單的記錄,略麻煩,暫過(guò)。

后記

功能雖然簡(jiǎn)單,不過(guò)也算是通了一條路,后續(xù)再此基礎(chǔ)上可以增加更多功能,僅以此記錄,學(xué)無(wú)止境。

參考 https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html

以上就是python開(kāi)發(fā)微信服務(wù)號(hào)消息推送示例的詳細(xì)內(nèi)容,更多關(guān)于python微信服務(wù)號(hào)消息推送的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論