# README
微信公众号(Official Accounts)
import (
"github.com/shenghui0779/gochat"
"github.com/shenghui0779/gochat/oa"
)
初始化公众号实例
wxoa := gochat.NewOA(appid, appsecret)
// 如果启用了服务器配置,需要设置配置项
wxoa.SetServerConfig(token, encodingAESKey)
// 如果需要消息回复,需要设置原始ID(开发者微信号)
wxoa.SetOriginID(originID)
网页授权
// 生成网页授权URL(请使用 URLEncode 对 redirectURL 进行处理)
wxoa.AuthURL(scope, redirect_url)
// 获取网页授权AccessToken
wxoa.Code2AuthToken(ctx, code)
// 刷新网页授权AccessToken
wxoa.RefreshAuthToken(ctx, refresh_token)
// 检验授权凭证(access_token)是否有效
wxoa.Do(ctx, access_token, oa.CheckAuthToken(openid))
// 获取授权用户信息(注意:使用网页授权的access_token)
wxoa.Do(ctx, access_token, oa.GetAuthUser(dest, openid))
// 获取普通AccessToken
wxoa.AccessToken(ctx)
自定义菜单
// 创建自定义菜单
wxoa.Do(ctx, access_token, oa.CreateMenu(buttons...))
// 创建个性化菜单
wxoa.Do(ctx, access_token, oa.CreateConditionalMenu(match_rule, buttons...))
// 查询自定义菜单
wxoa.Do(ctx, access_token, oa.GetMenu(dest))
// 删除自定义菜单
wxoa.Do(ctx, access_token, oa.DeleteMenu())
// 删除个性化菜单
wxoa.Do(ctx, access_token, oa.DeleteConditionalMenu(menu_id))
用户管理
// 获取关注用户信息
wxoa.Do(ctx, access_token, oa.GetSubscriberInfo(dest, openid))
// 批量关注用户信息
wxoa.Do(ctx, access_token, oa.BatchGetSubscribers(dest, openids...)
// 获取关注用户列表
wxoa.Do(ctx, access_token, oa.GetSubscriberList(dest, next_openid)
// 获取用户黑名单列表
wxoa.Do(ctx, access_token, oa.GetBlackList(dest, begin_openid)
// 拉黑用户
wxoa.Do(ctx, access_token, oa.BlackSubscribers(openids...))
// 取消拉黑用户
wxoa.Do(ctx, access_token, oa.UnBlackSubscribers(openids...))
// 设置用户备注名(该接口暂时开放给微信认证的服务号)
wxoa.Do(ctx, access_token, oa.SetUserRemark(openid, remark))
消息
// 获取模板列表
wxoa.Do(ctx, access_token, oa.GetTemplateList(dest))
// 删除模板
wxoa.Do(ctx, access_token, oa.DeleteTemplate(template_id))
// 发送模板消息
wxoa.Do(ctx, access_token, oa.SendTemplateMessage(openid, msg))
// 发送订阅消息
wxoa.Do(ctx, access_token, oa.SendSubscribeMessage(openid, scene, title, msg))
推广
// 创建临时二维码(expireSeconds:二维码有效时间,最大不超过2592000秒(即30天),不填,则默认有效期为30秒。)
wxoa.Do(ctx, access_token, oa.CreateTempQRCode(dest, sence_id, expire_seconds...))
// 创建永久二维码(expireSeconds:二维码有效时间,最大不超过2592000秒(即30天),不填,则默认有效期为30秒。)
wxoa.Do(ctx, access_token, oa.CreatePermQRCode(dest, sence_id, expire_seconds...))
// 长链接转短链接(长链接支持http://、https://、weixin://wxpay格式的url)
wxoa.Do(ctx, access_token, oa.Long2ShortURL(dest, longURL))
素材管理
// 上传临时素材
wxoa.Do(ctx, access_token, oa.UploadMedia(dest, media_type, filename))
// 新增永久图文素材(公众号的素材库保存总数量有上限:图文消息素材、图片素材上限为100000,其他类型为1000)
wxoa.Do(ctx, access_token, oa.AddNews(dest, articles...))
// 上传图文消息内的图片(不受公众号的素材库中图片数量的100000个的限制,图片仅支持jpg/png格式,大小必须在1MB以下)
wxoa.Do(ctx, access_token, oa.UploadNewsImage(dest, filename))
// 新增其他类型永久素材(支持图片、音频、缩略图)
wxoa.Do(ctx, access_token, oa.AddMaterial(dest, media_type, filename))
// 上传视频永久素材
wxoa.Do(ctx, access_token, oa.UploadVideo(dest, filename, title, introduction))
// 删除永久素材
wxoa.Do(ctx, access_token, oa.DeleteMaterial(media_id))
图像处理
// 图片智能裁切
wxoa.Do(ctx, access_token, oa.AICrop(dest, filename))
wxoa.Do(ctx, access_token, oa.AICropByURL(dest, imgURL))
// 条码/二维码识别
wxoa.Do(ctx, access_token, oa.ScanQRCode(dest, filename))
wxoa.Do(ctx, access_token, oa.ScanQRCodeByURL(dest, imgURL))
// 图片高清化
wxoa.Do(ctx, access_token, oa.SuperreSolution(dest, filename))
wxoa.Do(ctx, access_token, oa.SuperreSolutionByURL(dest, imgURL))
OCR
// 身份证前面识别
wxoa.Do(ctx, access_token, oa.OCRIDCardFront(dest, mode, filename))
wxoa.Do(ctx, access_token, oa.OCRIDCardFrontByURL(dest, mode, imgURL))
// 身份证背面识别
wxoa.Do(ctx, access_token, oa.OCRIDCardBack(dest, mode, filename))
wxoa.Do(ctx, access_token, oa.OCRIDCardBackByURL(dest, mode, imgURL))
// 银行卡识别
wxoa.Do(ctx, access_token, oa.OCRBankCard(dest, mode, filename))
wxoa.Do(ctx, access_token, oa.OCRBankCardByURL(dest, mode, imgURL))
// 车牌号识别
wxoa.Do(ctx, access_token, oa.OCRPlateNumber(dest, mode, filename))
wxoa.Do(ctx, access_token, oa.OCRPlateNumberByURL(dest, mode, imgURL))
// 驾照识别
wxoa.Do(ctx, access_token, oa.OCRDriverLicense(dest, mode, filename))
wxoa.Do(ctx, access_token, oa.OCRDriverLicenseByURL(dest, mode, imgURL))
// 行驶证识别
wxoa.Do(ctx, access_token, oa.OCRVehicleLicense(dest, mode, filename))
wxoa.Do(ctx, access_token, oa.OCRVehicleLicenseByURL(dest, mode, imgURL))
// 营业执照识别
wxoa.Do(ctx, access_token, oa.OCRBusinessLicense(dest, mode, filename))
wxoa.Do(ctx, access_token, oa.OCRBusinessLicenseByURL(dest, mode, imgURL))
// 通用印刷体识别
wxoa.Do(ctx, access_token, oa.OCRPrintedText(dest, mode, filename))
wxoa.Do(ctx, access_token, oa.OCRPrintedTextByURL(dest, mode, imgURL))
客服
// 获取客服列表
wxoa.Do(ctx, access_token, oa.GetKFAccountList(dest))
// 获取客服在线列表
wxoa.Do(ctx, access_token, oa.GetKFOnlineList(dest))
// 添加客服账号
wxoa.Do(ctx, access_token, oa.AddKFAccount(account, nickname))
// 设置客服信息
wxoa.Do(ctx, access_token, oa.UpdateKFAccount(account, nickname))
// 邀请绑定客服帐号
wxoa.Do(ctx, access_token, oa.InviteKFWorker(account, inviteWeixin))
// 上传客服头像
wxoa.Do(ctx, access_token, oa.UploadKFAvatar(account, filename))
// 删除客服帐号
wxoa.Do(ctx, access_token, oa.DeleteKFAccount(account))
// 创建会话
wxoa.Do(ctx, access_token, oa.CreateKFSession(account, openid))
// 关闭会话
wxoa.Do(ctx, access_token, oa.CloseKFSession(account, openid))
// 获取客户会话状态
wxoa.Do(ctx, access_token, oa.GetKFSession(dest, openid))
// 获取客服会话列表
wxoa.Do(ctx, access_token, oa.GetKFSessionList(dest, account))
// 获取未接入会话列表
wxoa.Do(ctx, access_token, oa.GetKFWaitCase(dest))
// 获取聊天记录(每次查询时段不能超过24小时)
wxoa.Do(ctx, access_token, oa.GetKFMsgRecordList(dest, msgid, starttime, endtime, number))
JSSDK
// GetJSSDKTicket 获取 JS-SDK ticket (注意:使用普通access_token)
wxoa.Do(ctx, access_token, oa.GetJSSDKTicket(dest, ticket_type))
// 生成 JS-SDK 签名
wxoa.JSSDKSign(jsapi_ticket, url)
消息事件
// 验证消息事件签名
wxoa.VerifyEventSign(signature, items...)
// 事件消息解密
wxoa.DecryptEventMessage(msg_encrypt)
消息回复
// 回复文本消息
wxoa.Reply(openid, oa.NewTextReply(content))
// 回复图片消息
wxoa.Reply(openid, oa.NewImageReply(media_id))
// 回复语音消息
wxoa.Reply(openid, oa.NewVoiceReply(media_id))
// 回复视频消息
wxoa.Reply(openid, oa.NewVideoReply(media_id, title, desc))
// 回复音乐消息
wxoa.Reply(openid, oa.NewMusicReply(media_id, title, desc, music_url, HQ_music_url))
// 回复图文消息
wxoa.Reply(openid, oa.NewNewsReply(count, articles...))
// 消息转发到客服
wxoa.Reply(openid, oa.NewTransfer2KFReply(kf_account...))
# Functions
AddKFAccount 添加客服账号 完整客服帐号,格式为:帐号前缀@公众号微信号,帐号前缀最多10个字符,必须是英文、数字字符或者下划线,后缀为公众号微信号,长度不超过30个字符 客服昵称,最长16个字.
AddMaterial 新增其他类型永久素材(支持图片、音频、缩略图).
AddNews 新增永久图文素材(公众号的素材库保存总数量有上限:图文消息素材、图片素材上限为100000,其他类型为1000).
AICrop 图片智能裁切.
AICropByURL 图片智能裁切.
BatchGetSubscribers 批量关注用户信息.
BlackSubscribers 拉黑用户.
CheckAuthToken 检验授权凭证(access_token)是否有效.
ClickButton 点击事件按钮.
CloseKFSession 关闭会话 完整客服帐号,格式为:帐号前缀@公众号微信号.
CreateConditionalMenu 创建个性化菜单.
CreateKFSession 创建会话 完整客服帐号,格式为:帐号前缀@公众号微信号.
CreateMenu 创建自定义菜单.
CreatePermQRCode 创建永久二维码(expireSeconds:二维码有效时间,最大不超过2592000秒(即30天),不填,则默认有效期为30秒。).
CreateTempQRCode 创建临时二维码(expireSeconds:二维码有效时间,最大不超过2592000秒(即30天),不填,则默认有效期为30秒。).
DeleteConditional 删除个性化菜单.
DeleteKFAccount 删除客服帐号 完整客服帐号,格式为:帐号前缀@公众号微信号.
DeleteMaterial 删除永久素材.
DeleteMenu 删除自定义菜单.
DeleteTemplate 删除模板.
GetAuthUser 获取授权用户信息(注意:使用网页授权的access_token).
GetBlackList 获取用户黑名单列表.
GetJSSDKTicket 获取 JS-SDK ticket (注意:使用普通access_token).
GetKFAccountList 获取客服列表.
GetKFMsgRecordList 获取聊天记录(每次查询时段不能超过24小时) 聊天记录中,对于图片、语音、视频,分别展示成文本格式的[image]、[voice]、[video]。.
GetKFOnlineList 获取客服在线列表.
GetKFSession 获取客户会话状态 获取一个客户的会话,如果不存在,则kf_account为空。.
GetKFSessionList 获取客服会话列表 完整客服帐号,格式为:帐号前缀@公众号微信号.
GetKFWaitCase 获取未接入会话列表 最多返回100条数据,按照来访顺序.
GetMenu 查询自定义菜单.
GetSubscriberInfo 获取关注用户信息.
GetSubscriberList 获取关注用户列表.
GetTemplateList 获取模板列表.
GroupButton 组合按钮.
InviteKFWorker 邀请绑定客服帐号 新添加的客服帐号是不能直接使用的,只有客服人员用微信号绑定了客服账号后,方可登录Web客服进行操作。 发起一个绑定邀请到客服人员微信号,客服人员需要在微信客户端上用该微信号确认后帐号才可用。 尚未绑定微信号的帐号可以进行绑定邀请操作,邀请未失效时不能对该帐号进行再次绑定微信号邀请。 完整客服帐号,格式为:帐号前缀@公众号微信号.
LocationSelectButton 发送位置按钮.
Long2ShortURL 长链接转短链接(长链接支持http://、https://、weixin://wxpay格式的url).
MediaButton 素材按钮.
MinipButton 小程序跳转按钮.
New returns new OA.
NewImageReply 回复图片消息.
NewMusicReply 回复音乐消息.
NewNewsReply 回复图文消息.
NewTextReply 回复文本消息.
NewTransfer2KFReply 消息转发到客服.
NewVideoReply 回复视频消息.
NewVoiceReply 回复语音消息.
OCRBankCard 银行卡识别.
OCRBankCardByURL 银行卡识别.
OCRBusinessLicense 营业执照识别.
OCRBusinessLicenseByURL 营业执照识别.
OCRDriverLicense 驾照识别.
OCRDriverLicenseByURL 驾照识别.
OCRIDCardBack 身份证背面识别.
OCRIDCardBackByURL 身份证背面识别.
OCRIDCardFront 身份证前面识别.
OCRIDCardFrontByURL 身份证前面识别.
OCRPlateNumber 车牌号识别.
OCRPlateNumberByURL 车牌号识别.
OCRPrintedText 通用印刷体识别.
OCRPrintedTextByURL 通用印刷体识别.
OCRVehicleLicense 行驶证识别.
OCRVehicleLicenseByURL 行驶证识别.
PicPhotoOrAlbum 拍照或者相册发图按钮.
PicSysPhotoButton 系统拍照发图按钮.
PicWeixinButton 微信相册发图按钮.
ScanCodePushButton 扫码推事件按钮.
ScanCodeWaitMsgButton 扫码带提示按钮.
ScanQRCode 条码/二维码识别.
ScanQRCodeByURL 条码/二维码识别.
SendSubscribeMessage 发送一次性订阅消息.
SendTemplateMessage 发送模板消息.
SetUserRemark 设置用户备注名(该接口暂时开放给微信认证的服务号).
SuperreSolution 图片高清化.
SuperreSolutionByURL 图片高清化.
TryMatchMenu 测试匹配个性化菜单 注意:user_id可以是粉丝的OpenID,也可以是粉丝的微信号。.
UnBlackSubscriber 取消拉黑用户.
UpdateKFAccount 设置客服信息 完整客服帐号,格式为:帐号前缀@公众号微信号,帐号前缀最多10个字符,必须是英文、数字字符或者下划线,后缀为公众号微信号,长度不超过30个字符 客服昵称,最长16个字.
UploadKFAvatar 上传客服头像 完整客服帐号,格式为:帐号前缀@公众号微信号.
UploadMedia 上传临时素材.
UploadNewsImage 上传图文消息内的图片(不受公众号的素材库中图片数量的100000个的限制,图片仅支持jpg/png格式,大小必须在1MB以下).
UploadVideo 上传视频永久素材.
ViewButton 跳转URL按钮.
ViewLimitedButton 图文消息按钮.
# Constants
image.
微信支持的 JS-SDK ticket.
oauth2.
subscriber.
subscriber.
subscriber.
点击推事件用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互。.
弹出地理位置选择器用户点击按钮后,微信客户端将调起地理位置选择工具,完成选择操作后,将选择的地理位置发送给开发者的服务器,同时收起位置选择工具,随后可能会收到开发者下发的消息。.
下发消息(除文本消息)用户点击media_id类型按钮后,微信服务器会将开发者填写的永久素材id对应的素材下发给用户,永久素材类型可以是图片、音频、视频、图文消息。请注意:永久素材id必须是在“素材管理/新增永久素材”接口上传后获得的合法id。.
小程序页面跳转,不支持小程序的老版本客户端将打开指定的URL。.
弹出拍照或者相册发图用户点击按钮后,微信客户端将弹出选择器供用户选择“拍照”或者“从手机相册选择”。用户选择后即走其他两种流程。.
弹出系统拍照发图用户点击按钮后,微信客户端将调起系统相机,完成拍照操作后,会将拍摄的相片发送给开发者,并推送事件给开发者,同时收起系统相机,随后可能会收到开发者下发的消息。.
弹出微信相册发图器用户点击按钮后,微信客户端将调起微信相册,完成选择操作后,将选择的相片发送给开发者的服务器,并推送事件给开发者,同时收起相册,随后可能会收到开发者下发的消息。.
扫码推事件用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后显示扫描结果(如果是URL,将进入URL),且会将扫码的结果传给开发者,开发者可以下发消息。.
扫码推事件且弹出“消息接收中”提示框用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后,将扫码的结果传给开发者,同时收起扫一扫工具,然后弹出“消息接收中”提示框,随后可能会收到开发者下发的消息。.
跳转URL用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的网页URL,可与网页授权获取用户基本信息接口结合,获得用户基本信息。.
跳转图文消息URL用户点击view_limited类型按钮后,微信客户端将打开开发者在按钮中填写的永久素材id对应的图文消息URL,永久素材类型只支持图文消息。请注意:永久素材id必须是在“素材管理/新增永久素材”接口上传后获得的合法id。.
cgi-bin.
cgi-bin.
已过期.
被拒绝.
待确认.
微信支持的 JS-SDK ticket.
KF.
KF.
KF.
KF.
KF.
KF.
KF.
KF.
KF.
KF.
KF.
KF.
KF.
media.
media.
MaxSubscriberListCount 关注列表的最大数目.
media.
media.
menu.
menu.
menu.
menu.
menu.
menu.
media.
media.
ocr.
ocr.
ocr.
ocr.
ocr.
ocr.
ocr.
popularize.
popularize.
image.
公众号迁移.
其他.
支付后关注.
名片分享.
图文页右上角菜单.
图文页内名称点击.
扫描二维码.
公众号搜索.
微信广告.
静默授权使用,不弹出授权页面,直接跳转,只能获取用户openid.
弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息.
popularize.
sns.
sns.
sns.
sns.
message.
subscriber.
subscriber.
subscriber.
image.
message.
message.
message.
subscriber.
# Structs
AccessToken 公众号普通AccessToken.
AICropResult 图片裁切结果.
Article 公众号图文.
AuthToken 公众号网页授权Token.
AuthUser 授权用户信息.
BankCard 银行卡.
BusinessLicense 营业执照.
ConditionalMenu 个性化菜单.
CropPosition 裁切位置.
DriverLicense 驾照.
IDCardBack 身份证背面.
IDCardFront 身份证前面.
ImagePosition 图片位置.
ImageReply 公众号图片回复消息.
ImageSize 图片尺寸.
JSSDKSign JS-SDK签名.
JSSDKTicket 公众号 JS-SDK ticket.
KFAccount 客服账号.
KFMsgRecord 客服聊天记录.
KFMsgRecordList 客服聊天记录列表.
KFOnline 在线客服.
KFSession 客服会话.
KFWaitCase 客服未接入会话.
MaterialAddResult 永久素材新增结果.
MediaUploadResult 临时素材上传结果.
Menu 普通菜单.
MenuButton 菜单按钮.
MenuInfo 自定义菜单信息.
MenuMatchRule 菜单匹配规则.
MessageMinip 跳转小程序.
MusicReply 公众号音乐回复.
NewsArticle 文章素材.
NewsReply 公众号图文回复.
OA 微信公众号.
OCRPosition 识别位置.
PlateNumber 车牌号.
Position 位置信息.
PrintedText 通用印刷体.
PrintedTextItem 通用印刷体内容项.
QRCode 二维码获取信息.
QRCodeScanData 二维码扫描数据.
QRCodeScanResult 二维码扫描结果.
ReplyHeader 公众号消息回复公共头.
ShortURL 短链接.
SubscriberInfo 关注用户信息.
SubscriberList 关注列表.
SubscriberListData 关注列表数据.
SuperreSolutionResult 图片高清化结果.
TemplateInfo 模板信息.
TemplateMessage 公众号模板消息.
TextReply 公众号文本回复.
Transfer2KFReply 公众号消息转客服.
TransInfo 转发客服账号.
VehicleLicense 行驶证.
VideoReply 公众号视频回复.
VoiceReply 公众号语音回复.
# Type aliases
AuthScope 应用授权作用域.
KFInviteStatus 客服邀请状态.
MediaType 素材类型.
MenuButtonType 菜单按钮类型.
MessageBody 消息内容体.
OCRMode 识别模式.
SubscribeScene 关注的渠道来源.
JS-SDK ticket 类型.