servicer list2
This commit is contained in:
parent
70ce423182
commit
6c713ac9b9
|
@ -3,17 +3,38 @@ package qyweixin
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/smbrave/goutil"
|
|
||||||
"github.com/spf13/cast"
|
"github.com/spf13/cast"
|
||||||
"gitlab.batiao8.com/open/gosdk/util"
|
"gitlab.batiao8.com/open/gosdk/util"
|
||||||
"gitlab.batiao8.com/open/gosdk/wechat/message"
|
"gitlab.batiao8.com/open/gosdk/wechat/message"
|
||||||
"time"
|
"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 {
|
type CustomerAccount struct {
|
||||||
Name string
|
Name string
|
||||||
KfId string
|
KfId string
|
||||||
}
|
}
|
||||||
|
|
||||||
type CustomerMessage struct {
|
type CustomerMessage struct {
|
||||||
Msgid string
|
Msgid string
|
||||||
Msgtype string
|
Msgtype string
|
||||||
|
@ -23,17 +44,38 @@ type CustomerMessage struct {
|
||||||
Origin int
|
Origin int
|
||||||
SendTime int64
|
SendTime int64
|
||||||
SyncTime int64
|
SyncTime int64
|
||||||
Content string
|
Text *CustomerText
|
||||||
|
Event *CustomerEvent
|
||||||
|
Image *CustomerImage
|
||||||
}
|
}
|
||||||
|
|
||||||
type CustomerServicer struct {
|
type CustomerServicer struct {
|
||||||
Userid string
|
Userid string
|
||||||
Status int
|
Status int
|
||||||
}
|
}
|
||||||
|
|
||||||
type CustomerState struct {
|
type CustomerState struct {
|
||||||
State int
|
State int
|
||||||
Servicer string
|
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 {
|
type AppCustomer struct {
|
||||||
App
|
App
|
||||||
}
|
}
|
||||||
|
@ -198,8 +240,10 @@ func (m *CustomerMessage) From(data map[string]interface{}) {
|
||||||
|
|
||||||
if m.Msgtype == message.MsgTypeEvent {
|
if m.Msgtype == message.MsgTypeEvent {
|
||||||
m.parseEvent(data)
|
m.parseEvent(data)
|
||||||
} else {
|
} else if m.Msgtype == string(message.MsgTypeText) {
|
||||||
m.parseMessage(m.Msgtype, data)
|
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.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
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *CustomerMessage) parseMessage(msgKey string, data map[string]interface{}) error {
|
func (m *CustomerMessage) parseText(data map[string]interface{}) error {
|
||||||
image, err := cast.ToStringMapE(data[msgKey])
|
image, err := cast.ToStringMapE(data["text"])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue