WeRoBot.Client
—— 微信 API 操作类¶
有部分接口暂未实现,可自行调用微信接口。
开始开发¶
获取 access token¶
详细请参考 http://mp.weixin.qq.com/wiki/14/9f9c82c1af308e3b14ba9b973f99a8ba.html
-
Client.
grant_token
()¶ 获取 Access Token。
返回: 返回的 JSON 数据包
-
Client.
get_access_token
()¶ 判断现有的token是否过期。 用户需要多进程或者多机部署可以手动重写这个函数 来自定义token的存储,刷新策略。
返回: 返回token
注解
Client 的操作都会自动进行 access token 的获取和过期刷新操作,如果有特殊需求(如多进程部署)可重写 get_access_token
。
获取微信服务器IP地址¶
详细请参考 http://mp.weixin.qq.com/wiki/4/41ef0843d6e108cf6b5649480207561c.html
-
Client.
get_ip_list
()¶ 获取微信服务器IP地址。
返回: 返回的 JSON 数据包
自定义菜单¶
自定义菜单创建接口¶
详细请参考 http://mp.weixin.qq.com/wiki/10/0234e39a2025342c17a7d23595c6b40a.html
创建自定义菜单:
client.create_menu({ "button":[ { "type":"click", "name":"今日歌曲", "key":"V1001_TODAY_MUSIC" }, { "type":"click", "name":"歌手简介", "key":"V1001_TODAY_SINGER" }, { "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" } ] } ]})
参数: menu_data – Python 字典 返回: 返回的 JSON 数据包
自定义菜单查询接口¶
详细请参考 http://mp.weixin.qq.com/wiki/5/f287d1a5b78a35a8884326312ac3e4ed.html
查询自定义菜单。
返回: 返回的 JSON 数据包
自定义菜单删除接口¶
详细请参考 http://mp.weixin.qq.com/wiki/3/de21624f2d0d3dafde085dafaa226743.html
删除自定义菜单。
返回: 返回的 JSON 数据包
个性化菜单接口¶
详细请参考 http://mp.weixin.qq.com/wiki/0/c48ccd12b69ae023159b4bfaa7c39c20.html
创建个性化菜单:
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" }] }] matchrule = { "group_id":"2", "sex":"1", "country":"中国", "province":"广东", "city":"广州", "client_platform_type":"2", "language":"zh_CN" } client.create_custom_menu(button, matchrule)
参数: - menu_data – 如上所示的 Python 字典
- matchrule – 如上所示的匹配规则
返回: 返回的 JSON 数据包
删除个性化菜单。
参数: menu_id – 菜单的 ID 返回: 返回的 JSON 数据包
测试个性化菜单匹配结果。
参数: user_id – 要测试匹配的用户 ID 返回: 返回的 JSON 数据包
获取自定义菜单配置接口¶
详细请参考 http://mp.weixin.qq.com/wiki/14/293d0cb8de95e916d1216a33fcb81fd6.html
获取自定义菜单配置接口。
返回: 返回的 JSON 数据包
消息管理¶
客服接口¶
详细请参考 http://mp.weixin.qq.com/wiki/11/c88c270ae8935291626538f9c64bd123.html 发送卡券接口暂时未支持。可自行实现。
-
Client.
add_custom_service_account
(account, nickname, password)¶ 添加客服帐号。
参数: - account – 客服账号的用户名
- nickname – 客服账号的昵称
- password – 客服账号的密码
返回: 返回的 JSON 数据包
-
Client.
update_custom_service_account
(account, nickname, password)¶ 修改客服帐号。
参数: - account – 客服账号的用户名
- nickname – 客服账号的昵称
- password – 客服账号的密码
返回: 返回的 JSON 数据包
-
Client.
delete_custom_service_account
(account, nickname, password)¶ 删除客服帐号。
参数: - account – 客服账号的用户名
- nickname – 客服账号的昵称
- password – 客服账号的密码
返回: 返回的 JSON 数据包
-
Client.
upload_custom_service_account_avatar
(account, avatar)¶ 设置客服帐号的头像。
参数: - account – 客服账号的用户名
- avatar – 头像文件,必须是 jpg 格式
返回: 返回的 JSON 数据包
-
Client.
get_custom_service_account_list
()¶ 获取所有客服账号。
返回: 返回的 JSON 数据包
-
Client.
send_text_message
(user_id, content)¶ 发送文本消息。
参数: - user_id – 用户 ID 。 就是你收到的 Message 的 source
- content – 消息正文
返回: 返回的 JSON 数据包
-
Client.
send_image_message
(user_id, media_id)¶ 发送图片消息。
参数: - user_id – 用户 ID 。 就是你收到的 Message 的 source
- media_id – 图片的媒体ID。 可以通过
upload_media()
上传。
返回: 返回的 JSON 数据包
-
Client.
send_voice_message
(user_id, media_id)¶ 发送语音消息。
参数: - user_id – 用户 ID 。 就是你收到的 Message 的 source
- media_id – 发送的语音的媒体ID。 可以通过
upload_media()
上传。
返回: 返回的 JSON 数据包
-
Client.
send_video_message
(user_id, media_id, title=None, description=None)¶ 发送视频消息。
参数: - user_id – 用户 ID 。 就是你收到的 Message 的 source
- media_id – 发送的视频的媒体ID。 可以通过
upload_media()
上传。 - title – 视频消息的标题
- description – 视频消息的描述
返回: 返回的 JSON 数据包
-
Client.
send_music_message
(user_id, url, hq_url, thumb_media_id, title=None, description=None)¶ 发送音乐消息。 注意如果你遇到了缩略图不能正常显示的问题, 不要慌张; 目前来看是微信服务器端的问题。 对此我们也无能为力 ( #197 )
参数: - user_id – 用户 ID 。 就是你收到的 Message 的 source
- url – 音乐链接
- hq_url – 高品质音乐链接,wifi环境优先使用该链接播放音乐
- thumb_media_id – 缩略图的媒体ID。 可以通过
upload_media()
上传。 - title – 音乐标题
- description – 音乐描述
返回: 返回的 JSON 数据包
-
Client.
send_article_message
(user_id, articles)¶ 发送图文消息:
articles = [ { "title":"Happy Day", "description":"Is Really A Happy Day", "url":"URL", "picurl":"PIC_URL" }, { "title":"Happy Day", "description":"Is Really A Happy Day", "url":"URL", "picurl":"PIC_URL" } ] client.send_acticle_message("user_id", acticles)
参数: - user_id – 用户 ID 。 就是你收到的 Message 的 source
- articles – 一个包含至多8个 article 字典或 Article 对象的数组
返回: 返回的 JSON 数据包
-
Client.
send_news_message
(user_id, media_id)¶ 发送永久素材中的图文消息。
参数: - user_id – 用户 ID 。 就是你收到的 Message 的 source
- media_id – 媒体文件 ID
返回: 返回的 JSON 数据包
用户管理¶
用户分组管理¶
详细请参考 http://mp.weixin.qq.com/wiki/8/d6d33cf60bce2a2e4fb10a21be9591b8.html
-
Client.
create_group
(name)¶ 创建分组。
参数: name – 分组名字(30个字符以内) 返回: 返回的 JSON 数据包
-
Client.
get_groups
()¶ 查询所有分组。
返回: 返回的 JSON 数据包
-
Client.
get_group_by_id
(openid)¶ 查询用户所在分组。
参数: openid – 用户的OpenID 返回: 返回的 JSON 数据包
-
Client.
update_group
(group_id, name)¶ 修改分组名。
参数: - group_id – 分组 ID,由微信分配
- name – 分组名字(30个字符以内)
返回: 返回的 JSON 数据包
-
Client.
move_user
(user_id, group_id)¶ 移动用户分组。
参数: - user_id – 用户 ID,即收到的 Message 的 source
- group_id – 分组 ID
返回: 返回的 JSON 数据包
-
Client.
move_users
(user_id_list, group_id)¶ 批量移动用户分组。
参数: - user_id_list – 用户 ID 的列表(长度不能超过50)
- group_id – 分组 ID
返回: 返回的 JSON 数据包
-
Client.
delete_group
(group_id)¶ 删除分组。
参数: group_id – 要删除的分组的 ID 返回: 返回的 JSON 数据包
设置备注名¶
详细请参考 http://mp.weixin.qq.com/wiki/16/528098c4a6a87b05120a7665c8db0460.html
-
Client.
remark_user
(user_id, remark)¶ 设置备注名。
参数: - user_id – 设置备注名的用户 ID
- remark – 新的备注名,长度必须小于30字符
返回: 返回的 JSON 数据包
获取用户基本信息¶
详细请参考 http://mp.weixin.qq.com/wiki/1/8a5ce6257f1d3b2afb20f83e72b72ce9.html
-
Client.
get_user_info
(user_id, lang='zh_CN')¶ 获取用户基本信息。
参数: - user_id – 用户 ID 。 就是你收到的 Message 的 source
- lang – 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语
返回: 返回的 JSON 数据包
-
Client.
get_users_info
(user_id_list, lang='zh_CN')¶ 批量获取用户基本信息。
参数: - user_id_list – 用户 ID 的列表
- lang – 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语
返回: 返回的 JSON 数据包
账户管理¶
长链接转短链接接口和微信认证事件推送暂未添加,可自行实现。
生成带参数的二维码¶
详细请参考 http://mp.weixin.qq.com/wiki/18/167e7d94df85d8389df6c94a7a8f78ba.html
-
Client.
create_qrcode
(data)¶ 创建二维码。
参数: data – 你要发送的参数 dict 返回: 返回的 JSON 数据包
-
Client.
show_qrcode
(ticket)¶ 通过ticket换取二维码。
参数: ticket – 二维码 ticket 。可以通过 create_qrcode()
获取到返回: 返回的 Request 对象
获取用户列表¶
详细请参考 http://mp.weixin.qq.com/wiki/12/54773ff6da7b8bdc95b7d2667d84b1d4.html
-
Client.
get_followers
(first_user_id=None)¶ 获取关注者列表 详情请参考 http://mp.weixin.qq.com/wiki/index.php?title=获取关注者列表
参数: first_user_id – 可选。第一个拉取的OPENID,不填默认从头开始拉取 返回: 返回的 JSON 数据包
素材管理¶
新增临时素材¶
详细请参考 http://mp.weixin.qq.com/wiki/15/2d353966323806a202cd2deaafe8e557.html
-
Client.
upload_media
(media_type, media_file)¶ 上传临时多媒体文件。
参数: - media_type – 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)
- media_file – 要上传的文件,一个 File-object
返回: 返回的 JSON 数据包
获取临时素材¶
详细请参考 http://mp.weixin.qq.com/wiki/9/677a85e3f3849af35de54bb5516c2521.html
-
Client.
download_media
(media_id)¶ 下载临时多媒体文件。
参数: media_id – 媒体文件 ID 返回: requests 的 Response 实例
新增永久素材¶
详细请参考 http://mp.weixin.qq.com/wiki/10/10ea5a44870f53d79449290dfd43d006.html
-
Client.
add_news
(articles)¶ 新增永久图文素材:
articles = [{ "title": TITLE, "thumb_media_id": THUMB_MEDIA_ID, "author": AUTHOR, "digest": DIGEST, "show_cover_pic": SHOW_COVER_PIC(0 / 1), "content": CONTENT, "content_source_url": CONTENT_SOURCE_URL } # 若新增的是多图文素材,则此处应有几段articles结构,最多8段 ] client.add_news(articles)
参数: articles – 如示例中的数组 返回: 返回的 JSON 数据包
-
Client.
upload_news_picture
(file)¶ 上传图文消息内的图片。
参数: file – 要上传的文件,一个 File-object 返回: 返回的 JSON 数据包
-
Client.
upload_permanent_media
(media_type, media_file)¶ 上传其他类型永久素材。
参数: - media_type – 媒体文件类型,分别有图片(image)、语音(voice)和缩略图(thumb)
- media_file – 要上传的文件,一个 File-object
返回: 返回的 JSON 数据包
-
Client.
upload_permanent_video
(title, introduction, video)¶ 上传永久视频。
参数: - title – 视频素材的标题
- introduction – 视频素材的描述
- video – 要上传的视频,一个 File-object
返回: requests 的 Response 实例
获取永久素材¶
详细请参考 http://mp.weixin.qq.com/wiki/12/3c12fac7c14cb4d0e0d4fe2fbc87b638.html
-
Client.
download_permanent_media
(media_id)¶ 获取永久素材。
参数: media_id – 媒体文件 ID 返回: requests 的 Response 实例
删除永久素材¶
详细请参考 http://mp.weixin.qq.com/wiki/7/2212203f4e17253b9aef77dc788f5337.html
-
Client.
delete_permanent_media
(media_id)¶ 删除永久素材。
参数: media_id – 媒体文件 ID 返回: 返回的 JSON 数据包
修改永久图文素材¶
详细请参考 http://mp.weixin.qq.com/wiki/10/c7bad9a463db20ff8ccefeedeef51f9e.html
-
Client.
update_news
(update_data)¶ 修改永久图文素材:
update_data = { "media_id":MEDIA_ID, "index":INDEX, "articles": { "title": TITLE, "thumb_media_id": THUMB_MEDIA_ID, "author": AUTHOR, "digest": DIGEST, "show_cover_pic": SHOW_COVER_PIC(0 / 1), "content": CONTENT, "content_source_url": CONTENT_SOURCE_URL } } client.update_news(update_data)
参数: update_data – 更新的数据,要包含 media_id(图文素材的 ID),index(要更新的文章在图文消息中的位置),articles(新的图文素材数据) 返回: 返回的 JSON 数据包
获取素材总数¶
详细请参考 http://mp.weixin.qq.com/wiki/5/a641fd7b5db7a6a946ebebe2ac166885.html
-
Client.
get_media_count
()¶ 获取素材总数。
返回: 返回的 JSON 数据包
获取素材列表¶
详细请参考 http://mp.weixin.qq.com/wiki/15/8386c11b7bc4cdd1499c572bfe2e95b3.html
-
Client.
get_media_list
(media_type, offset, count)¶ 获取素材列表。
参数: - media_type – 素材的类型,图片(image)、视频(video)、语音 (voice)、图文(news)
- offset – 从全部素材的该偏移位置开始返回,0表示从第一个素材返回
- count – 返回素材的数量,取值在1到20之间
返回: 返回的 JSON 数据包
48001 – API Unauthorized¶
如果你遇到了这个错误,请检查你的微信公众号是否有调用该接口的权限。 参考: https://mp.weixin.qq.com/wiki/13/8d4957b72037e3308a0ca1b21f25ae8d.html