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

3 years ago
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
}