|
@@ -3,6 +3,8 @@ using Hotline.Application.CallCenter;
|
|
|
using Hotline.Caching.Interfaces;
|
|
|
using Hotline.CallCenter.Calls;
|
|
|
using Hotline.CallCenter.Configs;
|
|
|
+using Hotline.EventBus;
|
|
|
+using Hotline.FlowEngine.Notifications;
|
|
|
using Hotline.Orders;
|
|
|
using Hotline.Quality;
|
|
|
using Hotline.Settings;
|
|
@@ -38,6 +40,7 @@ namespace Hotline.Application.Quality
|
|
|
private readonly ILogger<Hotline.Quality.Quality> _logger;
|
|
|
private readonly ICallApplication _callApplication;
|
|
|
private readonly IOptionsSnapshot<CallCenterConfiguration> _callcenterOptions;
|
|
|
+ private readonly Publisher _publisher;
|
|
|
|
|
|
public QualityApplication(
|
|
|
ISessionContext sessionContext,
|
|
@@ -51,7 +54,8 @@ namespace Hotline.Application.Quality
|
|
|
ISystemSettingCacheManager systemSettingCacheManager,
|
|
|
ICallApplication callApplication,
|
|
|
IOptionsSnapshot<CallCenterConfiguration> callcenterOptions,
|
|
|
- ILogger<Hotline.Quality.Quality> logger)
|
|
|
+ ILogger<Hotline.Quality.Quality> logger,
|
|
|
+ Publisher publisher)
|
|
|
{
|
|
|
_sessionContext = sessionContext;
|
|
|
_mapper = mapper;
|
|
@@ -65,8 +69,9 @@ namespace Hotline.Application.Quality
|
|
|
_callApplication = callApplication;
|
|
|
_callcenterOptions = callcenterOptions;
|
|
|
_logger = logger;
|
|
|
+ _publisher = publisher;
|
|
|
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
public async Task AddQualityAsync(EQualitySource Source, string OrderId, string VisitId, CancellationToken cancellationToken)
|
|
|
{
|
|
@@ -129,46 +134,48 @@ namespace Hotline.Application.Quality
|
|
|
}
|
|
|
}
|
|
|
await _qualityRepository.AddAsync(quality, cancellationToken);
|
|
|
- // ///调用智能质检 捷通
|
|
|
- //if (quality.AiQuality is true)
|
|
|
- // {
|
|
|
- // try
|
|
|
- // {
|
|
|
- // var audioFile = string.Empty;
|
|
|
- // var fromNo = string.Empty;
|
|
|
- // DateTime? callStartTime = null;
|
|
|
- // if (_callcenterOptions.Value.CallCenterType == AppDefaults.CallCenterType.TianRun)
|
|
|
- // {
|
|
|
- // var call = await _callApplication.GetTianrunCallAsync(order.CallId, cancellationToken);
|
|
|
- // audioFile = call.RecordingAbsolutePath;
|
|
|
- // fromNo = call.CPN;
|
|
|
- // callStartTime = call.CreatedTime;
|
|
|
- // }
|
|
|
- // else if (_callcenterOptions.Value.CallCenterType == AppDefaults.CallCenterType.XingTang)
|
|
|
- // {
|
|
|
- // var call = await _callApplication.GetCallAsync(order.CallId, cancellationToken);
|
|
|
- // audioFile = call.AudioFile;
|
|
|
- // fromNo = call.FromNo;
|
|
|
- // callStartTime = call.BeginIvrTime;
|
|
|
- // }
|
|
|
+ ///调用智能质检 捷通
|
|
|
+ if (quality.AiQuality is true)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var audioFile = string.Empty;
|
|
|
+ var fromNo = string.Empty;
|
|
|
+ DateTime? callStartTime = null;
|
|
|
+ if (_callcenterOptions.Value.CallCenterType == AppDefaults.CallCenterType.TianRun)
|
|
|
+ {
|
|
|
+ var call = await _callApplication.GetTianrunCallAsync(order.CallId, cancellationToken);
|
|
|
+ audioFile = call.RecordingAbsolutePath;
|
|
|
+ fromNo = call.CPN;
|
|
|
+ callStartTime = call.CreatedTime;
|
|
|
+ }
|
|
|
+ else if (_callcenterOptions.Value.CallCenterType == AppDefaults.CallCenterType.XingTang)
|
|
|
+ {
|
|
|
+ var call = await _callApplication.GetCallAsync(order.CallId, cancellationToken);
|
|
|
+ audioFile = call.AudioFile;
|
|
|
+ fromNo = call.FromNo;
|
|
|
+ callStartTime = call.BeginIvrTime;
|
|
|
+ }
|
|
|
|
|
|
- // var setting = _systemSettingCacheManager.GetSetting(SettingConstants.ViteRecordPrefix);
|
|
|
- // _aiQualityService.CreateAiOrderQualityTask(
|
|
|
- // quality,
|
|
|
- // audioFile,
|
|
|
- // fromNo,
|
|
|
- // callStartTime,
|
|
|
- // order, setting?.SettingValue[0], cancellationToken);
|
|
|
- // }
|
|
|
- // catch (Exception e)
|
|
|
- // {
|
|
|
- // _logger.LogError($"写入智能质检异常!, \r\n{e.Message}");
|
|
|
- // }
|
|
|
- //}
|
|
|
+ var setting = _systemSettingCacheManager.GetSetting(SettingConstants.ViteRecordPrefix);
|
|
|
+ var handler = new AiQualityHandler()
|
|
|
+ {
|
|
|
+ AudioFile =audioFile,
|
|
|
+ FromNo = fromNo,
|
|
|
+ CallStartTime = callStartTime,
|
|
|
+ ViteRecordPrefix = setting?.SettingValue[0],
|
|
|
+ };
|
|
|
+ await _publisher.PublishAsync(new AiOrderQualityNotify(quality, order, handler),PublishStrategy.ParallelNoWait,cancellationToken);
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ _logger.LogError($"写入智能质检异常!, \r\n{e.Message}");
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- //_logger.LogInformation($"质检对象:{System.Text.Json.JsonSerializer.Serialize(quality,
|
|
|
- // new JsonSerializerOptions { Encoder = JavaScriptEncoder.Create(UnicodeRanges.BasicLatin, UnicodeRanges.CjkUnifiedIdeographs) })}");
|
|
|
- //await _qualityRepository.AddAsync(quality, cancellationToken);
|
|
|
+ _logger.LogInformation($"质检对象:{System.Text.Json.JsonSerializer.Serialize(quality,
|
|
|
+ new JsonSerializerOptions { Encoder = JavaScriptEncoder.Create(UnicodeRanges.BasicLatin, UnicodeRanges.CjkUnifiedIdeographs) })}");
|
|
|
+ await _qualityRepository.AddAsync(quality, cancellationToken);
|
|
|
}
|
|
|
|
|
|
public async Task UpdateQualityAsync(UpdateQualityDto model, CancellationToken cancellationToken)
|