1. 程式人生 > >自定義微信選單

自定義微信選單

1、自定義選單最多包括3個一級選單,每個一級選單最多包含5個二級選單。
2、一級選單最多4個漢字,二級選單最多7個漢字,多出來的部分將會以“...”代替。
3、建立自定義選單後,選單的重新整理策略是,在使用者進入公眾號會話頁或公眾號profile頁時,如果發現上一次拉取選單的請求在5分鐘以前,就會拉取一下選單,如果選單有更新,就會重新整理客戶端的選單。測試時可以嘗試取消關注公眾賬號後再次關注,則可以看到建立後的效果。

 

1、click:點選推事件使用者點選click型別按鈕後,微信伺服器會通過訊息介面推送訊息型別為event的結構給開發者(參考訊息介面指南),並且帶上按鈕中開發者填寫的key值,開發者可以通過自定義的key值與使用者進行互動;
2、view:跳轉URL使用者點選view型別按鈕後,微信客戶端將會開啟開發者在按鈕中填寫的網頁URL,可與網頁授權獲取使用者基本資訊介面結合,獲得使用者基本資訊。
3、scancode_push:掃碼推事件使用者點選按鈕後,微信客戶端將調起掃一掃工具,完成掃碼操作後顯示掃描結果(如果是URL,將進入URL),且會將掃碼的結果傳給開發者,開發者可以下發訊息。
4、scancode_waitmsg:掃碼推事件且彈出“訊息接收中”提示框使用者點選按鈕後,微信客戶端將調起掃一掃工具,完成掃碼操作後,將掃碼的結果傳給開發者,同時收起掃一掃工具,然後彈出“訊息接收中”提示框,隨後可能會收到開發者下發的訊息。
5、pic_sysphoto:彈出系統拍照發圖使用者點選按鈕後,微信客戶端將調起系統相機,完成拍照操作後,會將拍攝的相片傳送給開發者,並推送事件給開發者,同時收起系統相機,隨後可能會收到開發者下發的訊息。
6、pic_photo_or_album:彈出拍照或者相簿發圖使用者點選按鈕後,微信客戶端將彈出選擇器供使用者選擇“拍照”或者“從手機相簿選擇”。使用者選擇後即走其他兩種流程。
7、pic_weixin:彈出微信相簿發圖器使用者點選按鈕後,微信客戶端將調起微信相簿,完成選擇操作後,將選擇的相片傳送給開發者的伺服器,並推送事件給開發者,同時收起相簿,隨後可能會收到開發者下發的訊息。
8、location_select:彈出地理位置選擇器使用者點選按鈕後,微信客戶端將調起地理位置選擇工具,完成選擇操作後,將選擇的地理位置傳送給開發者的伺服器,同時收起位置選擇工具,隨後可能會收到開發者下發的訊息。
9、media_id:下發訊息(除文字訊息)使用者點選media_id型別按鈕後,微信伺服器會將開發者填寫的永久素材id對應的素材下發給使用者,永久素材型別可以是圖片、音訊、視訊、圖文訊息。請注意:永久素材id必須是在“素材管理/新增永久素材”介面上傳後獲得的合法id。
10、view_limited:跳轉圖文訊息URL使用者點選view_limited型別按鈕後,微信客戶端將開啟開發者在按鈕中填寫的永久素材id對應的圖文訊息URL,永久素材型別只支援圖文訊息。請注意:永久素材id必須是在“素材管理/新增永久素材”介面上傳後獲得的合法id。

 

請注意,3到8的所有事件,僅支援微信iPhone5.4.1以上版本,和Android5.4以上版本的微信使用者,舊版本微信使用者點選後將沒有迴應,開發者也不能正常接收到事件推送。9和10,是專門給第三方平臺旗下未微信認證(具體而言,是資質認證未通過)的訂閱號準備的事件型別,它們是沒有事件推送的,能力相對受限,其他型別的公眾號不必使用。

介面呼叫請求說明

http請求方式:POST(請使用https協議) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

click和view的請求示例

 

<?php

$wx = new php100_weixin_button();
$wx->app_menu();

class php100_weixin_button {

	public $appid = "填寫你的id";
	public $appsecret = "填寫你的secret";
	
	//獲得憑證介面
	//返回陣列,access_token 和  time 有效期 
	public function access_token() {
		$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appid}&secret={$this->appsecret}";
		$cont = file_get_contents($url);
		return json_decode($cont, 1);
	}

   //建立自定義選單
	function app_menu() {
        $data = ' {
		     "button":[
		     {	
		         "name":"PHP100",
		         "sub_button":[
		            {
		               "type":"click",
		               "name":"網際網路熱點",
		               "key":"A1"
		            },
		            {
		               "type":"click",
		               "name":"懸賞與外包",
		               "key":"A2"
		            },
		            {
		               "type":"click",
		               "name":"求職與招聘",
		               "key":"A3"
		            },
		            {
		               "type":"click",
		               "name":"PHP100論壇",
		               "key":"A4"
		            },
		            {
		               "type":"click",
		               "name":"個人中心",
		               "key":"A5"
		            }]
		      },
		      {
		           "name":"程式設計助手",
		           "sub_button":[
		            {
		               "type":"click",
		               "name":"函式查詢",
		               "key":"B2"
		            },
		            {
		               "type":"click",
		               "name":"熱門書籍",
		               "key":"B3"
		            },
		            {
		               "type":"click",
		               "name":"教程與講座",
		               "key":"B4"
		            },
		            {
		               "type":"click",
		               "name":"培訓與課程",
		               "key":"B5"
		            }]
		      },
		      {
		           "name":"自娛自樂",
		           "sub_button":[
		            {
		               "type":"click",
		               "name":"釋出心情",
		               "key":"C1"
		            },
		            {
		               "type":"click",
		               "name":"開心段子",
		               "key":"C2"
		            },
		            {
		               "type":"click",
		               "name":"免費與優惠",
		               "key":"C3"
		            }]
		       }]
		 	}';

		$access_token = $this -> access_token();
		$ch = curl_init('https://api.weixin.qq.com/cgi-bin/menu/create?access_token=' . $access_token['access_token']);
		curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
		curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($data)));
		$data = curl_exec($ch);
		//print_r($data);//建立成功返回:{"errcode":0,"errmsg":"ok"}
	}



}//end class
?>