You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
4.3 KiB
Go
105 lines
4.3 KiB
Go
package icsws
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
type IAP struct {
|
|
message string
|
|
}
|
|
|
|
func NewIAP() IAP {
|
|
i := IAP{}
|
|
|
|
return i
|
|
}
|
|
|
|
func (i *IAP) String() string {
|
|
return i.message
|
|
}
|
|
|
|
func (i *IAP) Connect() string {
|
|
i.message = "[\"CONNECT\\naccept-version:1.1,1.0\\nheart-beat:10000,10000\\n\\n\\u0000\"]"
|
|
//fmt.Println(i.message)
|
|
return i.message
|
|
}
|
|
|
|
func (i *IAP) Disconnect() string {
|
|
i.message = "[\"DISCONNECT\\n\\n\\u0000\"]"
|
|
//fmt.Println(i.message)
|
|
return i.message
|
|
}
|
|
|
|
func (i *IAP) Subscribe(agentID string) string {
|
|
i.message = fmt.Sprintf("[\"SUBSCRIBE\\nid:sub-0\\ndestination:/voice-agent/command/%s\\n\\n\\u0000\"]", agentID)
|
|
//fmt.Println(i.message)
|
|
return i.message
|
|
}
|
|
|
|
func (i *IAP) RoomIn(roomID, agentID string) string {
|
|
rmsg := fmt.Sprintf("{\"room_id\":\"%s\",\"room_status\":\"IN\",\"counsellor\":\"%s\"}", roomID, agentID)
|
|
msg := fmt.Sprintf("{\\\"room_id\\\":\\\"%s\\\",\\\"room_status\\\":\\\"IN\\\",\\\"counsellor\\\":\\\"%s\\\"}", roomID, agentID)
|
|
//msg := fmt.Sprintf("{\\\"room_id\\\":\\\"%s\\\",\\\"room_status\\\":\\\"IN\\\",\\\"counsellor\\\":\\\"%s\\\"}", roomID, agentID)
|
|
bmsg := []byte(rmsg)
|
|
i.message = fmt.Sprintf("[\"SEND\\ndestination:/set/room\\ncontent-length:%d\\n\\n%s\\u0000\"]", len(bmsg), msg)
|
|
//i.message = fmt.Sprintf("SEND\ndestination:/set/room\ncontent-length:61\n\n{\"room_id\":\":\"%s\",\"room_status\":\"IN\",\"counsellor\":\"user-001\"}\u0000", roomID)
|
|
|
|
//fmt.Println(i.message)
|
|
return i.message
|
|
}
|
|
|
|
func (i *IAP) RoomOut(roomID, agentID string) string {
|
|
rmsg := fmt.Sprintf("{\"room_id\":\"%s\",\"room_status\":\"OUT\",\"counsellor\":\"%s\"}", roomID, agentID)
|
|
msg := fmt.Sprintf("{\\\"room_id\\\":\\\"%s\\\",\\\"room_status\\\":\\\"OUT\\\",\\\"counsellor\\\":\\\"%s\\\"}", roomID, agentID)
|
|
bmsg := []byte(rmsg)
|
|
i.message = fmt.Sprintf("[\"SEND\\ndestination:/set/room\\ncontent-length:%d\\n\\n%s\\u0000\"]", len(bmsg), msg)
|
|
|
|
//fmt.Println(i.message)
|
|
return i.message
|
|
}
|
|
|
|
func (i *IAP) CallStart(roomID string, custTel string) string {
|
|
rmsg := fmt.Sprintf("{\"timestamp\":%d,\"room_id\":\"%s\",\"call_status\":\"START\"}", time.Now().UnixNano()/1e6, roomID)
|
|
msg := fmt.Sprintf("{\\\"timestamp\\\":%d,\\\"room_id\\\":\\\"%s\\\",\\\"call_status\\\":\\\"START\\\"}", time.Now().UnixNano()/1e6, roomID)
|
|
//msg := fmt.Sprintf("{\\\"timestamp\\\":%d,\\\"room_id\\\":\\\"%s\\\",\\\"call_status\\\":\\\"START\\\",\\\"customer_phone_number\\\":\\\"%s\\\"}", time.Now().UnixNano()/1e6, roomID, custTel)
|
|
bmsg := []byte(rmsg)
|
|
i.message = fmt.Sprintf("[\"SEND\\ndestination:/set/call\\ncontent-length:%d\\n\\n%s\\u0000\"]", len(bmsg), msg)
|
|
|
|
//fmt.Println(i.message)
|
|
return i.message
|
|
}
|
|
|
|
func (i *IAP) CallEnd(roomID string, custTel string) string {
|
|
rmsg := fmt.Sprintf("{\"timestamp\":%d,\"room_id\":\"%s\",\"call_status\":\"END\"}", time.Now().UnixNano()/1e6, roomID)
|
|
msg := fmt.Sprintf("{\\\"timestamp\\\":%d,\\\"room_id\\\":\\\"%s\\\",\\\"call_status\\\":\\\"END\\\"}", time.Now().UnixNano()/1e6, roomID)
|
|
//msg := fmt.Sprintf("{\\\"timestamp\\\":%d,\\\"room_id\\\":\\\"%s\\\",\\\"call_status\\\":\\\"END\\\",\\\"customer_phone_number\\\":\\\"%s\\\"}", time.Now().UnixNano()/1e6, roomID, custTel)
|
|
bmsg := []byte(rmsg)
|
|
i.message = fmt.Sprintf("[\"SEND\\ndestination:/set/call\\ncontent-length:%d\\n\\n%s\\u0000\"]", len(bmsg), msg)
|
|
|
|
//fmt.Println(i.message)
|
|
return i.message
|
|
}
|
|
|
|
func (i *IAP) SendMessage(txrx, roomID, message string, seq int) string {
|
|
var msg string
|
|
var rmsg string
|
|
if len(message) == 0 {
|
|
rmsg = fmt.Sprintf("{\"timestamp\":%d,\"room_id\":\"%s\",\"seq\":%d,\"txrx\":\"%s\"}",
|
|
time.Now().UnixNano()/1e6, roomID, seq, txrx)
|
|
msg = fmt.Sprintf("{\\\"timestamp\\\":%d,\\\"room_id\\\":\\\"%s\\\",\\\"seq\\\":%d,\\\"txrx\\\":\\\"%s\\\"}",
|
|
time.Now().UnixNano()/1e6, roomID, seq, txrx)
|
|
} else {
|
|
rmsg = fmt.Sprintf("{\"timestamp\":%d,\"room_id\":\"%s\",\"seq\":%d,\"txrx\":\"%s\",\"message\":\"%s\"}",
|
|
time.Now().UnixNano()/1e6, roomID, seq, txrx, message)
|
|
msg = fmt.Sprintf("{\\\"timestamp\\\":%d,\\\"room_id\\\":\\\"%s\\\",\\\"seq\\\":%d,\\\"txrx\\\":\\\"%s\\\",\\\"message\\\":\\\"%s\\\"}",
|
|
time.Now().UnixNano()/1e6, roomID, seq, txrx, message)
|
|
}
|
|
bmsg := []byte(rmsg)
|
|
i.message = fmt.Sprintf("[\"SEND\\ndestination:/set/counseling/message\\ncontent-length:%d\\n\\n%s\\u0000\"]",
|
|
len(bmsg), msg)
|
|
|
|
//fmt.Println(i.message)
|
|
return i.message
|
|
}
|