咱們來看一下如何經過Bee.WeiXin開發微信公衆平臺。關於微信公衆平臺的通常性介紹, 這裏不作展開。 園裏找一找就能夠了。 本文主要是介紹Bee.WeXin, 代碼已發佈到https://beeweixin.codeplex.com/上了。html
BeeWeiXin 是針對騰訊的微信公衆平臺開發一個開發框架。 該項目是基於Bee OPOA Platform 開發的。web
包含了如下功能:微信
1. 基於調用樹的微信答覆模型。 調用樹支持多級(有上下文)響應, 能夠經過 文本, 圖文, 自定義三種方式響應。 其中自定義能夠回覆微信公衆平臺API所提供的三個方式(文本, 圖文, 音樂)。app
2. 提供了同步微信關注用戶列表的功能。微信公衆平臺
3. 提供了菜單管理功能。框架
4. 提供了圖文管理功能。工具
5. 原生集成Bee OPOA Platform上的全部功能, 主要是權限管理。spa
關於調試, 推薦採用園友提供的工具 微信公衆賬號開發調試工具發佈 設計
配置項均在web.config中【appSettings】配置.調試
【WeiXinToken】就是公衆平臺API方式的Token;
【Debug】是指當前是否處於調試模式。 調試模式與非調試模式的區別就在因而否對發起的調用進行驗證。
【WeiXinUserName】與【WeiXinPassword】 是菜單【微信關注用戶】中【從新同步全部用戶】所須要的, 將模擬網頁登入到微信公衆平臺中, 而後獲取用戶列表信息。 若不須要, 能夠忽略, 也能夠隱藏掉該菜單。
【WeiXinAppId】與【WeiXinAppSec】是菜單【微信菜單管理】中所須要的, 能夠管理微信公衆帳號的菜單。 固然該工具【微信公衆賬號開發調試工具發佈 】也有此功能, 比較方便。 若不須要, 能夠忽略, 也能夠隱藏掉該菜單。
【WeiXinController】是默認的系統響應Controller, 具體邏輯請參看代碼。
調用鏈是基於上下文的, 在配置項中有個選項【是否進入調用鏈】如果的話, 則將這次應答加入調用鏈中, 以造成上下文。 如【菜單1】是要進入調用鏈的, 否則該項下面的子項將沒法響應。
先看如下圖片:
由預覽圖中, 能夠直觀的瞭解調用鏈能夠提供 文本、圖文、自定義三種響應。
文本就是通常性的文本應答。 如在Bee.WeiXinDemo項目中已配置了【菜單1】是以文本響應, 節點值是V1001_M1_1。
回覆1,test1
回覆2,test2
回覆3,test3
回覆獲得以下:
圖文就是微信公衆平臺API中提供的圖文信息, 在調用鏈配置中只要按照順序輸入指定的文章號【該號碼是微信文章管理中的Id】就能夠了(以逗號分隔)。
如【菜單1】下的test2是圖文格式。 進入test2須要先觸發菜單1, 而後再觸發test2. 以下圖:
自定義是融合到Bee OPOA Platform框架中MVC實現的。 因此配置的也是經過Controller, Action來實現。
如【菜單1】下的test3是自定義方式。進入test3須要先觸發菜單1, 而後再觸發test3. 以下圖:
不知道各位瞭解了沒有? 建議你們下載源碼, 調試下以加深理解, 最好是有空看看代碼, 以幫助完善該項目, 呵呵。
【菜單1】下面只有鍵值【1】,【2】,【3】, 若用戶輸入其餘怎麼響應呢?這個時候只要配置鍵值【*】, 做爲其餘的配置項應答。
在這種基於調用鏈的應答中, 上下文是必要的。 怎麼理解呢?舉例說明吧:我要查詢某個產品的某個國家的最近3個月的銷售狀況。 因爲微信平臺的特性, 咱們不可能像其餘應用給用戶以直觀的查詢。
咱們只有採用引導式的方式去引導用戶獲得她想要的結果。 設計的菜單如預覽圖中【多級菜單】項所示。具體的配置項以下圖:
當用戶點擊菜單按鈕觸發了【V1001_M1_2】的事件, 系統響應提示文本【上圖的1】; 用戶根據提示, 選擇產品, 輸入1, 系統提示輸入國家【上圖的2】。 因爲國家太多, 不太可能配置全部國家的選項, 全部採用了一個通配符的方案【上圖的3】, 並採用自定義的方式應答。 代碼以下:
public WeiXinTextResult CheckCountry() { string content = ViewData.TryGetValue<string>("content", string.Empty); // 驗證輸入的國家是否合法 bool validFlag = content.IndexOf("CN") >= 0; if (validFlag) { return WeiXinText("1 最近3個月銷售統計\r\n2 最近6個月銷售統計"); } else { // 因爲調用鏈有上下文, 用戶輸入錯誤, 須要將當前應答取消。Current.MessageStack.Pop(); Current.MessageStack.Pop(); return WeiXinText("國家不合法,請從新輸入國家。"); } }
由以上代碼能夠知道上下文能夠經過Current.MessageStack獲取。
用戶輸入正確的國家代碼, 則引導用戶作下一個選擇.
這個基本上跟Bee OPOA Platform的方式如出一轍。 如【菜單1】下的【Other】項的響應就是採用該方式的。代碼以下:
public ActionResult Other() { return View(); }
View代碼以下:
<%@ Page Language="C#" AutoEventWireup="false" Inherits="Bee.Web.BeePageView" %> <%@ Import Namespace="Bee.Web" %> <%@ Import Namespace="Bee" %> <%@ Import Namespace="System.Collections.Generic" %> <xml> <ToUserName><![CDATA[<%=ViewData["FromUserName"] %>]]></ToUserName> <FromUserName><![CDATA[<%=ViewData["ToUserName"] %>]]></FromUserName> <CreateTime><%=Bee.WeiXin.DateTimeUtil.GetWeixinDateTime(DateTime.Now) %></CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content>回覆1 聯繫方式 回覆2 在線諮詢</Content> </xml>
框架基類 Bee.WeiXin.Controller.WeiXinControllerBase提供了微信公衆平臺API所對應的三種響應的ActionResult, 具體請查看源碼.
着重解釋了調用鏈的方式。 其餘的功能就不說明了, 下載源碼, 很容易知道他的用途。 Enjoy!