VoiceCallbackController.java 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package com.care.bms.controller;
  2. import com.care.bms.service.BmsEventOrderService;
  3. import com.care.common.cache.RedisKeyConstant;
  4. import com.care.common.cache.RedisUtil;
  5. import com.care.common.enums.ContactorStatusEnum;
  6. import com.care.common.util.JsonUtil;
  7. import io.swagger.annotations.Api;
  8. import io.swagger.annotations.ApiOperation;
  9. import lombok.extern.slf4j.Slf4j;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.web.bind.annotation.*;
  12. import javax.annotation.Resource;
  13. import java.util.HashMap;
  14. import java.util.Map;
  15. /**
  16. * @Author: lilt
  17. * @Date: 2021/5/26
  18. * @Desc:
  19. */
  20. @RestController
  21. @Api(value = "VoiceCallbackController", tags = { "语音通知回调接口" })
  22. @Slf4j
  23. @RequestMapping("/bms")
  24. public class VoiceCallbackController {
  25. @Resource
  26. private RedisUtil redisUtil;
  27. @Autowired
  28. private BmsEventOrderService bmsEventOrderService;
  29. @PostMapping("/voice/callback")
  30. @ApiOperation(tags = {"语音通知回调接口"},value = "语音通知回调接口")
  31. public Map<String,Object> callback(@RequestBody Map<String,Object> voicepromptCallback) {
  32. try {
  33. System.out.println("callback json == " + JsonUtil.toJson(voicepromptCallback));
  34. Map voiceCallbackParams = (Map) voicepromptCallback.get("voiceprompt_callback");
  35. if(voiceCallbackParams != null) {
  36. String callId = (String) voiceCallbackParams.get("callid");
  37. System.out.println("callback:callId==" + callId);
  38. String orderId = (String) redisUtil.hget(RedisKeyConstant.VOICE_CALLBACK_INFO, callId);
  39. System.out.println("callback:orderId==" + orderId);
  40. String mobile = (String) voiceCallbackParams.get("mobile");
  41. System.out.println("callback:mobile==" + mobile);
  42. Integer status = null;
  43. String result = (String) voiceCallbackParams.get("result");
  44. if ("0".equals(result)) { //用户正常接听
  45. status = ContactorStatusEnum.YI_LIAN_XI.getValue();
  46. } else if ("1".equals(result)) { //用户未接听
  47. status = ContactorStatusEnum.WEI_JIE_TONG.getValue();
  48. } else { //呼叫异常
  49. status = ContactorStatusEnum.WEI_JIE_TONG.getValue();
  50. }
  51. bmsEventOrderService.updateOrderContactStatus4Callback(Long.parseLong(orderId), mobile, status,"");
  52. Map<String, Object> rtn = new HashMap<>();
  53. rtn.put("result", 0);
  54. rtn.put("errmsg", "OK");
  55. return rtn;
  56. } else {
  57. voiceCallbackParams = (Map) voicepromptCallback.get("voice_failure_callback");
  58. if(voiceCallbackParams != null){
  59. String callId = (String) voiceCallbackParams.get("callid");
  60. System.out.println("callback:failure callId==" + callId);
  61. String orderId = (String) redisUtil.hget(RedisKeyConstant.VOICE_CALLBACK_INFO, callId);
  62. System.out.println("callback:failure orderId==" + orderId);
  63. String mobile = (String) voiceCallbackParams.get("mobile");
  64. System.out.println("callback:failure mobile==" + mobile);
  65. String failureReason = (String) voiceCallbackParams.get("failure_reason");
  66. System.out.println("callback:failure failureReason==" + failureReason);
  67. Integer status = ContactorStatusEnum.WEI_JIE_TONG.getValue();
  68. bmsEventOrderService.updateOrderContactStatus4Callback(Long.parseLong(orderId), mobile, status,failureReason);
  69. Map<String, Object> rtn = new HashMap<>();
  70. rtn.put("result", 0);
  71. rtn.put("errmsg", "OK");
  72. return rtn;
  73. } else {
  74. return null;
  75. }
  76. }
  77. } catch (Exception e){
  78. e.printStackTrace();
  79. return null;
  80. }
  81. }
  82. }