對微信的一點研究


最近這幾天,對微信做了一點研究,研究的角度主要還是從微信公衆號的二次開發方面出發。本文所有的描述都是基於訂閱號以及最新版本的微信爲基礎。

1、       如何使微信支持二次開發

在微信公衆號的管理後臺,有一個頻道叫“開發者中心”,在這個頻道里,按照操作步驟即可啓用開發者平臺。

要實現開發模式的要求,需要做完成以下幾個步驟:

1)、按照微信SDK開發一個認證請求頁面,主要是認證存放二次開發代碼的web服務訪問入口;後續所有的請求都以該認證域名爲準;

如:http://www.yourdomain.com/wx/auto.aspx


2)、按照要求,需要開發者定義一個Token(令牌);

3)、通過後,還需要啓用“服務器配置”。

注:如啓用服務器配置後,微信自有的兩個功能“自動回覆”和“自定義菜單”將被停用,即自動回覆和自定義菜單都必須用程序實現。請慎重!!!

4)、將接口配置中的url地址換成實現微信功能的請求頁面。

如 http://www.yourdomain.com/wx/wxservice.ashx

注:驗證頁面和調用請求頁面是不一樣的。

5)、現在你可以開始隨心所欲了…..

2、       什麼是微信消息,它們是如何進行傳遞的

所有推送到終端的消息都是被動式的,即通俗點講,就是你必須先敲打(Request)下微信,然後微信纔會給你一個反應(Response)。當然,也有特殊情況,下面再說。

首先微信在消息的歸類上,有2大類:

1)       請求(Request)消息,也叫接收消息。意指向微信做出一個請求,希望微信能回覆點什麼。如:“上帝,告訴我附件哪兒有吃的”,這就是一個請求消息。

按微信的定義,請求消息分爲7種:文本消息、圖片消息、語音消息、視頻消息、地理位置消息、鏈接消息、事件消息。

2)       響應(Response)消息,也叫發送消息。意指向用戶給出一個答覆。前面都問上帝了,上帝總得給個說法;那麼上帝就回復說,“你現在的位置再拐個彎就到了KFC了”。這就是響應消息。上帝覺得,光文字消息不直觀,不如再加個圖片,那麼就變成圖文信息了。

按微信的定義,響應消息分爲:文本消息、圖片消息、語音消息、視頻消息、音樂消息、圖文消息。

以上兩個概念必須搞清楚,這是微信編程的基礎。總結一句話,就是”需先請求(Request),再做響應(Response)!“

現在講講特殊情況,大致有2種:

(1)“客服消息”

服務號功能,因此沒具體研究,但從微信開發文檔的描述上看,指微信管理員可以對48小時內做出請求的用戶進行回覆。

嚴格意義上,也是需先請求,再做迴應,不同的是可以回覆多次。

      (2)“消息(提醒)通知”

      就是像短信一樣會給用戶進行消息發送,一般用以提醒或通知,這類接口微信是存在的,但沒有公開,只有像招商銀行這樣的大鱷才能拿得到。

3、       開發模式下,沒有了自定義菜單設置怎麼辦

上文不是已經提到,啓用了開發模式後,微信後臺自帶的”自定義菜單“功能就停用了。這個時候,我們必須使用編碼的方式實現編輯微信菜單。好在微信公衆號有這個接口,具體實現可參考微信開發API。

這裏有一個疑問,微信爲什麼要在開發模式下停用自有的”自定義菜單“功能呢??

前面第2節中提到有一個事件請求(Request)消息,在微信自帶的菜單定義功能中,是無法實現事件功能的。

開發模式下的菜單2種模式:

1)       鏈接(link)模式:微信自帶的菜單模塊中使用的模式,每個菜單都掛一個超鏈接,然後跳到該頁面上去;現在好多微信都這樣實現,但在某些情況下是很不人性化。(注:父菜單是不允許掛鏈接的。)

2)       事件(click)模式:這個在非開發模式下是沒有的。點擊該類菜單,會向微信發出一個事件類型的請求消息。根據定義返回響應信息。

關於事件(click)模式菜單,我認爲舉個例子比較有代表性。

我們常有類似這樣的一個需求,希望點擊”最新文章“菜單,然後顯示最新的10篇文章(該文章信息是在第三方系統)。

鏈接模式做法通常是,點擊”最新文章“菜單,然後跳到自己開發的一個頁面,在頁面中顯示最新10條文章。

事件模式做法可以這樣做,點擊“最新文章“菜單,然後將最新的10條文章信息直接推送響應(Response)到微信終端,頁面不跳轉。

類似於”互軟智慧社區“微信號中,輸入”fjcy“,將附近的餐飲信息推送到微信終端,而不是在web頁上顯示。

4、       如何讓開發的頁面只能在微信中顯示

這個不多講了,原理很簡單,只需要判斷打開頁面的瀏覽器版本即可。關鍵詞是HTTP_USER_AGENT。只需要在返回的Agent信息中是否包含MicroMessenger這個字符串即可。有碼有真相,上圖。

 

純html頁面也可用Javascript判斷。

5、       關於服務號的一點遐想

因手頭沒有服務號,對於服務號提供的高級功能只能做一點遐想:

1)、語音識別:該功能如果跟智能問答機器人結合,對於公衆服務來說,又一大進步;想想一下,當老百姓對着微信說”我要結婚“,微信立馬將語音識別成文字再塞給機器人,然後機器人將結果推送給老百姓的微信上說”你還沒有買房子,不能結婚“。呵呵!!!

2)、推廣二維碼:服務號提供生成1個或多個場景二維碼。利用這個功能可以推出更好的應用服務。我們又想想一下,公司取消指紋打卡,每天自動產生一個微信二維碼,該二維碼僅顯示15分鐘,然後員工掃二維碼進行上下班簽到。

3)、獲取地理信息:服務號直接可以獲取當前用戶的地理信息,用來查詢附近資源信息。”互軟智慧社區“微信號也實現了附近餐飲信息的查詢,但由於是訂閱號,無法直接獲取地理信息;只能採用變通的方式獲取地理信息,操作繁瑣了點,效果是一樣的。至於怎麼實現,下回分解。

 

好了,今天晚上就寫到這兒了….

還有,公司的”互軟智慧社區“已實現如下功能:

【查詢違章】:輸入”wz“即可,第一次使用時,需要綁定車輛;

【自動翻譯】:輸入”fy:需翻譯的文“;

【查詢附近餐飲】:輸入”fjcy“,請先發送地理位置信息,然後再輸入”fjcy“或”fjcy500“。帶數字表示查詢多少米範圍內的餐飲信息。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章