《C#微信開發系列(2)-自定義菜單管理》

来源:http://www.cnblogs.com/likar/archive/2016/02/04/5182484.html
-Advertisement-
Play Games

2.0自定義菜單管理 ①介面說明: 微信服務號聊天視窗下麵的菜單項(有的公眾號有啟用有的則沒有),這個可以在編輯模式簡單配置,也可以在開發模式代碼配置。微信公眾平臺開發者文檔:微信公眾號開發平臺創建自定義菜單,可以看到創建菜單的一些註意事項,下麵的使用網頁調試工具調試該介面,只是調試介面是否可以正常


2.0自定義菜單管理

 

①介面說明:

微信服務號聊天視窗下麵的菜單項(有的公眾號有啟用有的則沒有),這個可以在編輯模式簡單配置,也可以在開發模式代碼配置。微信公眾平臺開發者文檔:微信公眾號開發平臺創建自定義菜單,可以看到創建菜單的一些註意事項,下麵的使用網頁調試工具調試該介面,只是調試介面是否可以正常調用,並不是直接創建菜單,根據微信自定義菜單管理文檔菜單事件可分為兩種:

click: 用戶點擊click類型按鈕後,微信伺服器會通過消息介面推送消息類型為event 的結構給開發者(參考消息介面指南),並且帶上按鈕中開發者填寫的key值,開發者可以通過自定義的key值與用戶進行交互。

view: 用戶點擊view類型按鈕後,微信客戶端將會打開開發者在按鈕中填寫的url值 (即網頁鏈接),達到打開網頁的目的,建議與網頁授權獲取用戶基本信息介面結合,獲得用戶的登入個人信息。

設置菜單JSON格式(可根據需要進行修改):

{
     "button":[
     {    
          "type":"click",
          "name":"今日歌曲",
          "key":"V1001_TODAY_MUSIC"
      },
      {
           "name":"菜單",
           "sub_button":[
           {    
               "type":"view",
               "name":"搜索",
               "url":"http://www.soso.com/"
            },
            {
               "type":"view",
               "name":"視頻",
               "url":"http://v.qq.com/"
            },
            {
               "type":"click",
               "name":"贊一下我們",
               "key":"V1001_GOOD"
            }]
       }]
 }

配置菜單的註意點:

1、自定義菜單最多包括3個一級菜單,每個一級菜單最多包含5個二級菜單。

2、一級菜單最多4個漢字,二級菜單最多7個漢字,多出來的部分將會以“...”代替。

3、創建自定義菜單後,由於微信客戶端緩存,需要24小時微信客戶端才會展現出來。測試時可以嘗試取消關註公眾賬號後再次關註,則可以看到創建後的效果。

 介面參數配置:

 

②請求介面:

 

介面調用請求說明:

http請求方式:POST(請使用https協議)

https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

 

POST請求介面調用介面憑據ACCESS_TOKEN的獲取方式可參見文檔(獲取ACCESS_TOKEN文檔)使用POST方式帶上ACCESS_TOKEN以及菜單JSON請求介面,具體實現代碼如下:

 

 1 /// <summary>
 2 /// 創建菜單事件
 3 /// </summary>
 4 /// <param name="sender"></param>
 5 /// <param name="e"></param>
 6 protected void creayeMenu_Click(object sender, EventArgs e)
 7 {
 8    FileStream fs1 = new FileStream(Server.MapPath("~/") + "\\menuInfo.txt", FileMode.Open);
 9    StreamReader sr = new StreamReader(fs1, Encoding.GetEncoding("GBK"));
10    string menu = sr.ReadToEnd();
11    sr.Close();
12    fs1.Close();
13    CreateMenu("https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN", menu);
14 }

 

 1 /// <summary>
 2 /// 創建公眾號菜單
 3 /// </summary>
 4 /// <param name="posturl">URL</param>
 5 /// <param name="postData">菜單JSON數據</param>
 6 /// <returns></returns>
 7 public void CreateMenu(string posturl, string postData)
 8 {
 9    Stream outstream = null;
10    Stream instream = null;
11    StreamReader sr = null;
12    HttpWebResponse response = null;
13    HttpWebRequest request = null;
14    Encoding encoding = Encoding.UTF8;
15    byte[] data = encoding.GetBytes(postData);
16 
17    request = WebRequest.Create(posturl) as HttpWebRequest;
18    CookieContainer cookieContainer = new CookieContainer();
19    request.CookieContainer = cookieContainer;
20       request.AllowAutoRedirect = true;
21       request.Method = "POST";
22       request.ContentType = "application/x-www-form-urlencoded";
23       request.ContentLength = data.Length;
24       outstream = request.GetRequestStream();
25       outstream.Write(data, 0, data.Length);
26       outstream.Close();
27       response = request.GetResponse() as HttpWebResponse;
28       instream = response.GetResponseStream();
29       sr = new StreamReader(instream, encoding);
30       string content = sr.ReadToEnd();
31       Context.Response.Write(content);
32 }

介面返回結果:

正確時返回的JSON數據包格式如下:

{"errcode":0,"errmsg":"ok"}

 

錯誤時的返回JSON數據包如下(示例為無效菜單名長度):

{"errcode":40018,"errmsg":"invalid button name size"}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • CREATE OR REPLACE PACKAGE BODY ssl AS PROCEDURE insert_ssl(s In ssl_array) AS v_month varchar2(20); v_sql varchar2(5000); v_result number; v_status nu
  • CREATE OR REPLACE PACKAGE BODY BASE_INFO AS PROCEDURE insert_lapc(lapc In lapc_array) AS v_max number; v_result number; v_status number; BEGIN delete
  • 1.安裝x window 使用apt get 安裝 xorg 如果提示以下內容,就說明需要update下源列表,使用 即可 2.安裝LXDE 3.安裝tight vnc 4.啟動一下vnc然後再退出,為了讓它生成配置文件 中間過程可能會要求你輸入一個 8位的 VNC密碼,輸密碼的過程中要記住這個密碼
  • 一般Linux系統,有兩個配置文件可以設置PATH變數,一:.bashrc 二:.bash_profile; 還有一種方法可以臨時設置PATH變數(三) 一: 1、編輯.bashrc,添加 export PATH=$PATH:/home/myname/mydirectory 這是將路徑跟在已有路徑後
  • 一.概述 1.環境:我這裡是2台linux機器(host1和host2),發行版是kali2.0,內核版本是4.3。每台機器都安裝Docker、OpenvSwitch(ovs)。 2.host1和host2分別啟動1個ubuntu的docker容器。 3.網路結構: 2.1:host1的eth0:1
  • 左上角幾個管腳分別是J601和J801 J601: 第一排兩個管腳:可以使用跳線帽短接,作用是: 連接:當電源接通後就自動啟動 斷開:需要按下最上面的中間那個小按鍵3~4秒才能啟動 第二排兩個管腳: 連接:可以燒寫第一階段的啟動載入程式到emmc,必須先把usb otg連接到PC機上。 斷開:從em...
  • 1. 背景知識 在多媒體的推動下,彩色LCD越來越多地應用到嵌入式系統中,PDA和手機等大多都採用LCD作為顯示器材,因此學習LCD的應用很有實際意義! LCD工作的硬體需求:要使一塊LCD正常的顯示文字或圖像,不僅需要LCD驅動器,而且還需要相應的LCD控制器。在通常情況下,生產廠商把LCD驅動器
  • 開發板自帶的LCD驅動是基於platform匯流排寫的,所以如果要使其它的LCD能夠在自己的開發板上跑起來,那麼就先瞭解platform驅動的架構,下麵簡單記錄下自己看platform驅動時體會,簡單的說platform是一種虛擬匯流排,那麼它也是一條匯流排,所以它分為3個部分,platform_bus,
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...