github.com/chanxuehong/wechat@v0.0.0-20230222024006-36f0325263cd/mp/menu/api_conditional.go (about)

     1  package menu
     2  
     3  import (
     4  	"github.com/chanxuehong/wechat/mp/core"
     5  )
     6  
     7  // 创建个性化菜单.
     8  func AddConditionalMenu(clt *core.Client, menu *Menu) (menuId int64, err error) {
     9  	const incompleteURL = "https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token="
    10  
    11  	var result struct {
    12  		core.Error
    13  		MenuId int64 `json:"menuId"`
    14  	}
    15  	if err = clt.PostJSON(incompleteURL, menu, &result); err != nil {
    16  		return
    17  	}
    18  	if result.ErrCode != core.ErrCodeOK {
    19  		err = &result.Error
    20  		return
    21  	}
    22  	menuId = result.MenuId
    23  	return
    24  }
    25  
    26  // 删除个性化菜单.
    27  func DeleteConditionalMenu(clt *core.Client, menuId int64) (err error) {
    28  	const incompleteURL = "https://api.weixin.qq.com/cgi-bin/menu/delconditional?access_token="
    29  
    30  	var request = struct {
    31  		MenuId int64 `json:"menuid"`
    32  	}{
    33  		MenuId: menuId,
    34  	}
    35  	var result core.Error
    36  	if err = clt.PostJSON(incompleteURL, &request, &result); err != nil {
    37  		return
    38  	}
    39  	if result.ErrCode != core.ErrCodeOK {
    40  		err = &result
    41  		return
    42  	}
    43  	return
    44  }
    45  
    46  // 测试个性化菜单匹配结果.
    47  //
    48  //	userId 可以是粉丝的 OpenID, 也可以是粉丝的微信号
    49  func TryMatch(clt *core.Client, userId string) (menu *Menu, err error) {
    50  	const incompleteURL = "https://api.weixin.qq.com/cgi-bin/menu/trymatch?access_token="
    51  
    52  	var request = struct {
    53  		UserId string `json:"user_id"`
    54  	}{
    55  		UserId: userId,
    56  	}
    57  	var result struct {
    58  		core.Error
    59  		Menu `json:"menu"`
    60  	}
    61  	if err = clt.PostJSON(incompleteURL, &request, &result); err != nil {
    62  		return
    63  	}
    64  	if result.ErrCode != core.ErrCodeOK {
    65  		err = &result.Error
    66  		return
    67  	}
    68  	menu = &result.Menu
    69  	return
    70  }