This commit is contained in:
richboo111
2023-06-16 15:34:23 +08:00
parent df80757611
commit 150b51e01f
159 changed files with 7346 additions and 284 deletions

View File

@@ -1,5 +1,7 @@
package mtwmapi
import "net/url"
const (
MsgSourceStore = 1 //商家
MsgSourceUser = 2 //用户
@@ -10,7 +12,7 @@ const (
MsgTypeOrderCard = 5 //订单卡片
)
//单聊信息体
// SingleChat 单聊信息体
type SingleChat struct {
AppID int `json:"app_id"` //应用标识
AppPoiCode string `json:"app_poi_code"` //门店标识
@@ -24,22 +26,65 @@ type SingleChat struct {
AppSpuCodes string `json:"app_spu_codes"` //开放平台侧商品标识(无须加密)
}
//获取长链接token返回参数
// GetConnTokenResp 获取长链接token返回参数
type GetConnTokenResp struct {
ConnectionToken string `json:"connectionToken"` //建立长连接的token
UserCount int `json:"userCount"` //30分钟内消息发送失败的用户数
AppKey string `json:"appKey"` //建立长连接的appkey
}
//获取长连接的token
//https://developer.waimai.meituan.com/home/docDetail/461
// ImCallbackMsg im消息回调参数
type ImCallbackMsg struct {
Timestamp int `json:"timestamp"` //调用接口时的时间戳即当前时间戳当前距离Epoch1970年1月1日) 以秒计算的时间即unix - timestamp注意传输时间戳与当前北京时间前后相差不能超过10分钟
AppID string `json:"app_id"`
Sig string `json:"sig"`
FormData url.Values
BizType int `json:"biz_type"` //业务类型字段1单聊2群聊
PushContent PushContentReq `json:"push_content"` //消息体详细内容
}
// PushContentReq msgSend商家发送IM消息
type PushContentReq struct {
AppID int `json:"app_id"` //美团分配给APP方的id
AppPoiCode string `json:"app_poi_code"` //APP方门店id最长不超过128个字符
MsgID int `json:"msg_id"` //消息id确保消息唯一性发送消息时为三方的消息id接收消息时为美团的消息id
MsgContent string `json:"msg_content"` //消息内容需要进行加密。加密方式使用AES加密算法加密解密的秘钥取自开放平台APP的secret的前16位请自行截取。 加密工具http://tool.chacuo.net/cryptaes
MsgSource int `json:"msg_source"` //消息发送方1商家2用户
MsgType int `json:"msg_type"` //消息类型1文字2图片3语音注意b2c不支持语音4商品卡片发送商品卡片类型则不关注msg_content5订单卡片类型商家只能接收消息不支持给用户发送消息只支持单聊 11群文字12群图片13群语音注意b2c不支持语音14群商品卡片 其中商品卡片单次最多传7个商品
Cts int `json:"cts"` //消息发送时间,10位时间戳
//非必填
OpenUserID int `json:"open_user_id"` //用户id单聊时必传
OrderID int `json:"order_id"` //订单id
GroupID int `json:"group_id"` //群聊id发送群聊消息时必传
AppSpuCodes string `json:"app_spu_codes"` //开放平台侧商品标识(无须加密)
}
type PushContentResp struct {
ResultCode int `json:"result_code"` //1-全部操作成功查询到的数据在data字段中2-部分成功成功的数据存储在data字段中失败的数据存在error_list字段中3-全部操作失败失败的数据存在error_list字段中4-请求失败一般为签名或限流问题关注error字段中的具体描述即可
ErrorList []ErrorList `json:"error_list"` //返回失败原因,根据失败原因判断是否重发消息
}
type ErrorList struct {
Code int `json:"code"` //错误码
Msg string `json:"msg"` //错误描述
}
// MsgSend 商家发送IM消息 https://open-shangou.meituan.com/home/docDetail/10087
func (a *API) MsgSend(pushContent string) (interface{}, error) {
retVal, err := a.AccessAPI("ecommerce/IM/msgSend", false, map[string]interface{}{
"push_content": pushContent,
})
//fmt.Println(retVal)
return retVal, err
}
// GetConnectionToken 获取长连接的token https://developer.waimai.meituan.com/home/docDetail/461
func (a *API) GetConnectionToken() (retVal interface{}, err error) {
retVal, err = a.AccessAPI("wm/IM/getConnectionToken", false, nil)
return retVal, err
}
//设置消息已读
//https://open-shangou.meituan.com/home/docDetail/465
// MsgRead 设置消息已读 https://open-shangou.meituan.com/home/docDetail/465
func (a *API) MsgRead(appPoiCode string, msgID, openUserID int) error {
_, err := a.AccessAPI("/wm/IM/msgRead", false, map[string]interface{}{
"app_poi_code": appPoiCode,