servicer list2

This commit is contained in:
jiangyong27 2024-01-23 22:06:52 +08:00
parent 70ce423182
commit 6c713ac9b9
1 changed files with 73 additions and 8 deletions

View File

@ -3,17 +3,38 @@ package qyweixin
import (
"encoding/json"
"fmt"
"github.com/smbrave/goutil"
"github.com/spf13/cast"
"gitlab.batiao8.com/open/gosdk/util"
"gitlab.batiao8.com/open/gosdk/wechat/message"
"time"
)
var (
ChangeTypeFromPool = 1
ChangeTypeTransform = 2
ChangeTypeFinish = 3
ChangeTypeRepeat = 4
OriginCustomer = 3 //用户发送的
OriginSystem = 4 //系统发送的
OriginServicer = 5 //客服发送的
OriginAi = 6 //AI发送的
EventTypeEnterSession = "enter_session"
EventTypeSessionChange = "session_status_change"
CustomerStateEnterSession = 0
CustomerStateRobot = 1
CustomerStateWaitPool = 2
CustomerStateServicing = 3
CustomerStateComplete = 4
)
type CustomerAccount struct {
Name string
KfId string
}
type CustomerMessage struct {
Msgid string
Msgtype string
@ -23,17 +44,38 @@ type CustomerMessage struct {
Origin int
SendTime int64
SyncTime int64
Content string
Text *CustomerText
Event *CustomerEvent
Image *CustomerImage
}
type CustomerServicer struct {
Userid string
Status int
}
type CustomerState struct {
State int
Servicer string
}
type CustomerText struct {
Content string
MenuId string
}
type CustomerImage struct {
MediaId string
}
type CustomerEvent struct {
EventType string `json:"event_type"`
Scene string `json:"scene"`
ChangeType int `json:"change_type"`
OldServicerUserid string `json:"old_servicer_userid"`
NewServicerUserid string `json:"new_servicer_userid"`
}
type AppCustomer struct {
App
}
@ -198,8 +240,10 @@ func (m *CustomerMessage) From(data map[string]interface{}) {
if m.Msgtype == message.MsgTypeEvent {
m.parseEvent(data)
} else {
m.parseMessage(m.Msgtype, data)
} else if m.Msgtype == string(message.MsgTypeText) {
m.parseText(data)
} else if m.Msgtype == message.MsgTypeImage {
m.parseText(data)
}
}
@ -218,16 +262,37 @@ func (m *CustomerMessage) parseEvent(data map[string]interface{}) error {
m.OpenKfid = openKfid
}
m.Content = goutil.EncodeJSON(event)
m.Event = &CustomerEvent{
EventType: cast.ToString(event["event_type"]),
Scene: cast.ToString(event["scene"]),
ChangeType: cast.ToInt(event["change_type"]),
NewServicerUserid: cast.ToString(event["new_servicer_userid"]),
OldServicerUserid: cast.ToString(event["old_servicer_userid"]),
}
return nil
}
func (m *CustomerMessage) parseMessage(msgKey string, data map[string]interface{}) error {
image, err := cast.ToStringMapE(data[msgKey])
func (m *CustomerMessage) parseText(data map[string]interface{}) error {
image, err := cast.ToStringMapE(data["text"])
if err != nil {
return err
}
m.Content = goutil.EncodeJSON(image)
m.Text = &CustomerText{
Content: cast.ToString(image["content"]),
MenuId: cast.ToString(image["menu_id"]),
}
return nil
}
func (m *CustomerMessage) parseImage(data map[string]interface{}) error {
image, err := cast.ToStringMapE(data["image"])
if err != nil {
return err
}
m.Image = &CustomerImage{
MediaId: cast.ToString(image["media_id"]),
}
return nil
}