|
|
|
@ -179,71 +179,82 @@ func (s *ScenarioSession) BOTPFunc(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|
|
|
|
|
|
// 현재 들어온 method로 분기
|
|
|
|
|
// next 시나리오로 넘겨주기
|
|
|
|
|
if request.Method == "HANGUP" {
|
|
|
|
|
s.ByeCheck(request.Method, request.Token)
|
|
|
|
|
fmt.Printf("response %+v", request)
|
|
|
|
|
if request.Method != "INIT" && request.TalkText == "" {
|
|
|
|
|
response.ResultCode = 200
|
|
|
|
|
response.Token = request.Token
|
|
|
|
|
response.Action = "END"
|
|
|
|
|
response.AnounceMents = "서비스에 장애가 발생하였습니다. 상담사를 연결해드리겠습니다."
|
|
|
|
|
response.Data.BargeIn = "Y"
|
|
|
|
|
response.Data.RecodingFile = "Y"
|
|
|
|
|
response.Data.SttMaxTime = 0
|
|
|
|
|
} else {
|
|
|
|
|
switch request.Method {
|
|
|
|
|
case "INIT":
|
|
|
|
|
token := createToken(request.CallId)
|
|
|
|
|
response.ResultCode = 200
|
|
|
|
|
response.Token = token
|
|
|
|
|
response.Action = scnarioConf.Order[1]
|
|
|
|
|
response.AnounceMents = scnarioConf.Value[0]
|
|
|
|
|
response.Data.BargeIn = "N"
|
|
|
|
|
response.Data.RecodingFile = "Y"
|
|
|
|
|
response.Data.SttMaxTime = 4
|
|
|
|
|
|
|
|
|
|
s.m.Lock()
|
|
|
|
|
s.session[token] = ResStatus{Count: 1, Status: scnarioConf.Order[0]}
|
|
|
|
|
s.m.Unlock()
|
|
|
|
|
case "STT":
|
|
|
|
|
response.ResultCode = 200
|
|
|
|
|
response.Token = request.Token
|
|
|
|
|
response.Action = scnarioConf.Order[s.session[request.Token].Count+1]
|
|
|
|
|
response.AnounceMents = scnarioConf.Value[s.session[request.Token].Count]
|
|
|
|
|
response.Data.BargeIn = "N"
|
|
|
|
|
response.Data.RecodingFile = "Y"
|
|
|
|
|
response.Data.SttMaxTime = 4
|
|
|
|
|
|
|
|
|
|
s.m.Lock()
|
|
|
|
|
s.session[request.Token] = ResStatus{Count: s.session[request.Token].Count + 1, Status: scnarioConf.Order[s.session[request.Token].Count+1]}
|
|
|
|
|
s.m.Unlock()
|
|
|
|
|
case "DTMF":
|
|
|
|
|
response.ResultCode = 200
|
|
|
|
|
response.Token = request.Token
|
|
|
|
|
response.Action = scnarioConf.Order[s.session[request.Token].Count+1]
|
|
|
|
|
response.AnounceMents = scnarioConf.Value[s.session[request.Token].Count]
|
|
|
|
|
response.Data.BargeIn = "N"
|
|
|
|
|
response.Data.RecodingFile = "Y"
|
|
|
|
|
response.Data.SttMaxTime = 3
|
|
|
|
|
|
|
|
|
|
s.m.Lock()
|
|
|
|
|
s.session[request.Token] = ResStatus{Count: s.session[request.Token].Count + 1, Status: scnarioConf.Order[s.session[request.Token].Count+1]}
|
|
|
|
|
s.m.Unlock()
|
|
|
|
|
case "REFER":
|
|
|
|
|
response.Data.TelNo = "010-1234-1234"
|
|
|
|
|
|
|
|
|
|
s.m.Lock()
|
|
|
|
|
s.session[request.Token] = ResStatus{Count: s.session[request.Token].Count + 1, Status: scnarioConf.Order[s.session[request.Token].Count+1]}
|
|
|
|
|
s.m.Unlock()
|
|
|
|
|
case "BYE": // 전화 종료 요청
|
|
|
|
|
response.ResultCode = 200
|
|
|
|
|
response.Token = request.Token
|
|
|
|
|
response.Action = "END"
|
|
|
|
|
response.AnounceMents = "접수가 완료되었습니다."
|
|
|
|
|
response.Data.BargeIn = "Y"
|
|
|
|
|
response.Data.RecodingFile = "Y"
|
|
|
|
|
response.Data.SttMaxTime = 0
|
|
|
|
|
// case "HANGUP":
|
|
|
|
|
// response.ResultCode = 200
|
|
|
|
|
// response.Token = request.Token
|
|
|
|
|
// response.Action = ""
|
|
|
|
|
// response.AnounceMents = ""
|
|
|
|
|
// response.Data.BargeIn = ""
|
|
|
|
|
// response.Data.RecodingFile = ""
|
|
|
|
|
// response.Data.SttMaxTime = 0
|
|
|
|
|
// if ByeCheck(request.Method, request.Token) {
|
|
|
|
|
// }
|
|
|
|
|
if request.Method == "HANGUP" {
|
|
|
|
|
s.ByeCheck(request.Method, request.Token)
|
|
|
|
|
} else {
|
|
|
|
|
switch request.Method {
|
|
|
|
|
case "INIT":
|
|
|
|
|
token := createToken(request.CallId)
|
|
|
|
|
response.ResultCode = 200
|
|
|
|
|
response.Token = token
|
|
|
|
|
response.Action = scnarioConf.Order[1]
|
|
|
|
|
response.AnounceMents = scnarioConf.Value[0]
|
|
|
|
|
response.Data.BargeIn = scnarioConf.BargeIn[0]
|
|
|
|
|
response.Data.RecodingFile = "Y"
|
|
|
|
|
response.Data.SttMaxTime = scnarioConf.SttMaxTime[0]
|
|
|
|
|
|
|
|
|
|
s.m.Lock()
|
|
|
|
|
s.session[token] = ResStatus{Count: 1, Status: scnarioConf.Order[0]}
|
|
|
|
|
s.m.Unlock()
|
|
|
|
|
case "STT":
|
|
|
|
|
response.ResultCode = 200
|
|
|
|
|
response.Token = request.Token
|
|
|
|
|
response.Action = scnarioConf.Order[s.session[request.Token].Count+1]
|
|
|
|
|
response.AnounceMents = scnarioConf.Value[s.session[request.Token].Count]
|
|
|
|
|
response.Data.BargeIn = scnarioConf.BargeIn[s.session[request.Token].Count]
|
|
|
|
|
response.Data.RecodingFile = "Y"
|
|
|
|
|
response.Data.SttMaxTime = scnarioConf.SttMaxTime[s.session[request.Token].Count]
|
|
|
|
|
|
|
|
|
|
s.m.Lock()
|
|
|
|
|
s.session[request.Token] = ResStatus{Count: s.session[request.Token].Count + 1, Status: scnarioConf.Order[s.session[request.Token].Count+1]}
|
|
|
|
|
s.m.Unlock()
|
|
|
|
|
case "DTMF":
|
|
|
|
|
response.ResultCode = 200
|
|
|
|
|
response.Token = request.Token
|
|
|
|
|
response.Action = scnarioConf.Order[s.session[request.Token].Count+1]
|
|
|
|
|
response.AnounceMents = scnarioConf.Value[s.session[request.Token].Count]
|
|
|
|
|
response.Data.BargeIn = "N"
|
|
|
|
|
response.Data.RecodingFile = "Y"
|
|
|
|
|
response.Data.SttMaxTime = 3
|
|
|
|
|
|
|
|
|
|
s.m.Lock()
|
|
|
|
|
s.session[request.Token] = ResStatus{Count: s.session[request.Token].Count + 1, Status: scnarioConf.Order[s.session[request.Token].Count+1]}
|
|
|
|
|
s.m.Unlock()
|
|
|
|
|
case "REFER":
|
|
|
|
|
response.Data.TelNo = "010-1234-1234"
|
|
|
|
|
|
|
|
|
|
s.m.Lock()
|
|
|
|
|
s.session[request.Token] = ResStatus{Count: s.session[request.Token].Count + 1, Status: scnarioConf.Order[s.session[request.Token].Count+1]}
|
|
|
|
|
s.m.Unlock()
|
|
|
|
|
case "BYE": // 전화 종료 요청
|
|
|
|
|
response.ResultCode = 200
|
|
|
|
|
response.Token = request.Token
|
|
|
|
|
response.Action = "END"
|
|
|
|
|
response.AnounceMents = "접수가 완료되었습니다."
|
|
|
|
|
response.Data.BargeIn = "Y"
|
|
|
|
|
response.Data.RecodingFile = "Y"
|
|
|
|
|
response.Data.SttMaxTime = 0
|
|
|
|
|
// case "HANGUP":
|
|
|
|
|
// response.ResultCode = 200
|
|
|
|
|
// response.Token = request.Token
|
|
|
|
|
// response.Action = ""
|
|
|
|
|
// response.AnounceMents = ""
|
|
|
|
|
// response.Data.BargeIn = ""
|
|
|
|
|
// response.Data.RecodingFile = ""
|
|
|
|
|
// response.Data.SttMaxTime = 0
|
|
|
|
|
// if ByeCheck(request.Method, request.Token) {
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|