speech_recognition.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package speech_recognition
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/controllers"
  5. "eta/eta_api/models"
  6. "eta/eta_api/models/speech_recognition"
  7. "eta/eta_api/services"
  8. "eta/eta_api/utils"
  9. "fmt"
  10. "strconv"
  11. "time"
  12. )
  13. type SpeechRecognitionController struct {
  14. controllers.BaseAuthController
  15. }
  16. type SpeechRecognitionCommonController struct {
  17. controllers.BaseCommonController
  18. }
  19. // RecTaskCallback
  20. // @Title 语音识别回调
  21. // @Description 语音识别回调
  22. // @Param request body services.TencentRecTaskCallback true "type json string"
  23. // @Success 200 string "操作成功"
  24. // @router /rec_task/callback [post]
  25. func (this *SpeechRecognitionCommonController) RecTaskCallback() {
  26. utils.FileLog.Info("RecTaskCallback, -1")
  27. // 此接口返回指定响应体
  28. br := new(services.TencentRecTaskCallbackResp)
  29. defer func() {
  30. _ = this.JSON(br, false, false)
  31. }()
  32. var req services.TencentRecTaskCallback
  33. utils.FileLog.Info("RecTaskCallback, 0")
  34. code, _ := this.GetInt("code", 0)
  35. req.Code = code
  36. requestId, _ := this.GetInt("requestId", 0)
  37. req.RequestId = uint64(requestId)
  38. text := this.GetString("text")
  39. req.Text = text
  40. resultDetail := this.GetString("resultDetail")
  41. req.ResultDetail = resultDetail
  42. //utils.FileLog.Info("RecTaskCallback, body: " + string(this.Ctx.Input.RequestBody))
  43. //if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  44. // br.Code = 403
  45. // br.Message = "参数解析失败"
  46. // return
  47. //}
  48. utils.FileLog.Info("RecTaskCallback, 1")
  49. // TODO:处理回调结果
  50. apiLog := new(speech_recognition.SpeechRecognitionApiLog)
  51. apiLog.RequestId = strconv.Itoa(int(req.RequestId))
  52. j, e := json.Marshal(req)
  53. if e != nil {
  54. utils.FileLog.Info("RecTaskCallback, 2 " + e.Error())
  55. }
  56. apiLog.RequestResult = string(j)
  57. apiLog.CreateTime = time.Now().Local()
  58. apiLog.ModifyTime = time.Now().Local()
  59. if e := apiLog.Create(); e != nil {
  60. br.Code = 403
  61. br.Message = "获取回调结果失败"
  62. return
  63. }
  64. utils.FileLog.Info("RecTaskCallback, 3")
  65. br.Code = 0
  66. br.Message = "success"
  67. }
  68. // Save
  69. // @Title 保存
  70. // @Description 保存
  71. // @Param request body speech_recognition.SpeechRecognitionSaveReq true "type json string"
  72. // @Success 200 string "操作成功"
  73. // @router /save [post]
  74. func (this *SpeechRecognitionCommonController) Save() {
  75. br := new(models.BaseResponse).Init()
  76. defer func() {
  77. if br.ErrMsg == "" {
  78. br.IsSendEmail = false
  79. }
  80. this.Data["json"] = br
  81. this.ServeJSON()
  82. }()
  83. //sysUser := this.SysUser
  84. //if sysUser == nil {
  85. // br.Msg = "请登录"
  86. // br.ErrMsg = "请登录,SysUser Is Empty"
  87. // br.Ret = 408
  88. // return
  89. //}
  90. var req speech_recognition.SpeechRecognitionSaveReq
  91. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  92. br.Msg = "参数有误"
  93. br.ErrMsg = "参数解析失败, Err: " + e.Error()
  94. return
  95. }
  96. conf, e := models.GetBusinessConf()
  97. if e != nil {
  98. br.Msg = "操作失败"
  99. br.ErrMsg = "获取配置失败, Err: " + e.Error()
  100. return
  101. }
  102. var taskReq services.TencentRecTaskReq
  103. taskReq.FileUrl = req.FileName
  104. taskReq.SecretId = conf[models.BusinessConfTencentApiSecretId]
  105. taskReq.SecretKey = conf[models.BusinessConfTencentApiSecretKey]
  106. taskReq.CallbackUrl = conf[models.BusinessConfTencentApiRecTaskCallbackUrl]
  107. taskId, e := services.TencentCreateRecTask(taskReq)
  108. if e != nil {
  109. br.Msg = "操作失败"
  110. br.ErrMsg = fmt.Sprintf("TencentCreateRecTask err: %s", e.Error())
  111. return
  112. }
  113. br.Data = taskId
  114. br.Ret = 200
  115. br.Success = true
  116. br.Msg = "操作成功"
  117. }