위챗 플랫폼 개발 04 - 사용자 정의 메뉴

3897 단어

1. 주의사항

  • 사용자 정의 메뉴는 최대 3개의 1급 메뉴입니다
  • 1급 메뉴당 최대 5개의 2급 메뉴
  • 사용자 정의 메뉴가 반드시 효과를 볼 수 있는 것은 아니다. 테스트 시 관심을 취소하고 다시 관심을 가지면 ikandao 효과를 볼 수 있다

  • 2. 메뉴 유형


    번호
    유형
    설명

    click
    이벤트를 누르면 위챗 서버에서 지정한 서버 주소로 이벤트를 보냅니다. {"type": "click", "name": "오늘 노래", "key": "V1001_TODAY_MUSIC"},name은 메뉴에 표시되는 텍스트이고 key는 위챗 서버가 우리 서버에 보내는 매개 변수입니다.

    view
    이것이야말로 자주 사용하는 형식입니다. {"type": "view", "name": "검색", "url": "http://www.soso.com/"}, 우리가 지정한 페이지로 이동을 클릭하면 당연히 웹 권한 수여와 사용자의 기본 정보 인터페이스를 결합시켜 사용자의 기본 정보를 얻을 수 있습니다.

    기타
    scancode_push, 코드 스캔 이벤트;pic_sysphoto, 사진 이벤트location_select, 위치 선택 이벤트;
    3. 메뉴 인터페이스 사용자 정의
    post 방식으로 https 주소로 데이터 전송
    https://api.weixin.qq.com/cgi-bin/menu/create?access_token=${ACCESS_TOKEN}
    json의 문자열을 밀어넣는데 구조가 유사합니다
    {"button":[
        {"name":" ","sub_button":
            [
            {"name":" ","type":"view","url":"http://www.aopinjie.com/F1011"},
            {"name":" ","type":"view","url":"http://www.aopinjie.com/F1012"},
            {"name":" ","type":"view","url":"http://www.aopinjie.com/F1013"},
            ]
        },
        {"name":" ","type":"view","url":"http://www.aopinjie.com/F2011"},
        {"name":" ","type":"view","url":"http://www.aopinjie.com/F3011"}
        ]
    }
    
    

    4. 코드 구현
    #coding:UTF-8
    import urllib2
    import json
    from mako.template import Template
    from web import storage
    from models.s_vars import S_vars
    def http_post():
    
        target_url          = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=${access_token}"
        args                = storage()
        args.access_token   = S_vars.GetVarValueByVarName('access_token','wechat','')
        t                   = Template(target_url)
        target_url          = t.render(**args)
        menus               = {"button":[
                                            {"name":" ","sub_button":
                                                [
                                                    {"name":" ","type":"view","url":"http://www.aopinjie.com/F1011"},
                                                    {"name":" ","type":"view","url":"http://www.aopinjie.com/F1012"},
                                                    {"name":" ","type":"view","url":"http://www.aopinjie.com/F1013"},
                                                ]
                                             },
                                            {"name":" ","type":"view","url":"http://www.aopinjie.com/F2011"},
                                            {"name":" ","type":"view","url":"http://www.aopinjie.com/F3011"}
                                         ]
                               }
    
        jdata = json.dumps(menus,ensure_ascii=False)                       #  JSON 
        req = urllib2.Request(target_url, jdata)        #  
        response = urllib2.urlopen(req)                 #  
        return response.read()                          #  
    
    if __name__=="__main__":
        print http_post()
    
    

    5. 주의

  • 40033 오류입니다. 제출할 때 이 번호의 오류를 얻으면 축하합니다. 메뉴에 중국어가 있습니다.잘 해결됐어, 제이슨에서.dumps 때 ensure를 추가해야 돼요_ascii=False, 이렇게 하면 전역적인 인코딩 방식으로 인코딩할 수 있습니다
  • 물론 너도 중국어가 있는 곳에서 하나씩 u를 추가할 수 있다. 개인적인 취미에 ensure_ascii=False, 해결이 우아합니다
  • 좋은 웹페이지 즐겨찾기