You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Genesys Cloud .NET SDK过滤语音类型会话?

解决Genesys Cloud .NET SDK过滤语音会话的问题

你可以通过两种方式实现仅获取语音类型的会话,推荐优先使用API查询阶段过滤,减少不必要的数据传输:

方法一:查询阶段直接过滤(推荐)

Genesys Cloud的Analytics查询支持通过SegmentFilters针对会话段的媒体类型进行过滤,语音类型对应枚举值MediaType.Voice。修改你的ConversationQuery构造代码,添加SegmentFilters参数即可:

var conversationsApi = new ConversationsApi();
var startdate = DateString(currentTime.Subtract(fetchInterval));
var enddate = DateString(currentTime);
var matches = new List<PM.ConversationDetailQueryPredicate>();
matches.AddRange(Divisions.Select(d => Matches(Dim.Divisionid, d)));
var conversations = new List<PM.AnalyticsConversationWithoutAttributes>();
var pageNum = 1;

// 新增:创建语音媒体类型的段过滤条件
var voiceSegmentFilter = new PM.SegmentDetailQueryFilter(
    Predicates: new List<PM.SegmentDetailQueryPredicate>
    {
        PM.Matches(PM.Dim.SegmentMediaType, PM.MediaType.Voice.ToString())
    }
);

do
{
    var convs = conversationsApi.PostAnalyticsConversationsDetailsQuery(
        new PM.ConversationQuery(
            Interval: $"{startdate}/{enddate}",
            Paging: new PM.PagingSpec(100, pageNum++),
            ConversationFilters: new List<PM.ConversationDetailQueryFilter> { Or(matches.ToArray()) },
            // 添加段过滤参数
            SegmentFilters: new List<PM.SegmentDetailQueryFilter> { voiceSegmentFilter }
            ));

    if (convs == null || convs.Conversations == null || convs.TotalHits == 0)
        break;

    conversations.AddRange(convs.Conversations
        ?.Where(y => y.ConversationEnd >= insertStartTime)
        ?.Where(z => true == z.Participants?
                                .Any(p => p.Purpose == PM.AnalyticsParticipantWithoutAttributes.PurposeEnum.Agent
                                       || p.Purpose == PM.AnalyticsParticipantWithoutAttributes.PurposeEnum.User)));
    
} while (true);

方法二:获取结果后过滤

如果查询阶段的过滤不生效,也可以在获取会话列表后,通过检查会话的Segments媒体类型来过滤:

// 在原有过滤条件后添加语音类型检查
conversations.AddRange(convs.Conversations
    ?.Where(y => y.ConversationEnd >= insertStartTime)
    ?.Where(z => z.Participants?.Any(p => p.Purpose == PM.AnalyticsParticipantWithoutAttributes.PurposeEnum.Agent
                                       || p.Purpose == PM.AnalyticsParticipantWithoutAttributes.PurposeEnum.User) == true)
    ?.Where(z => z.Segments?.Any(s => s.MediaType == PM.MediaType.Voice) == true));

注意事项

  • 若SDK中无PM.MediaType枚举,可直接使用字符串值"voice"(小写)替代PM.MediaType.Voice.ToString()
  • 方法一通过API层面过滤,能大幅减少返回的数据量,提升性能,优先选用

内容的提问来源于stack exchange,提问作者IntelligentCancer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 22:39:59