c#.如何根据事件's ReferenceID检索某个值

本文关键字:ReferenceID 检索 何根 事件 | 更新日期: 2023-09-27 18:09:57

我不确定这个问题是否适合在这里问,或者我应该说这个问题更适合c#。. NET或到Genesys.

我正在使用Genesys(呼叫中心解决方案提供商)平台SDK和c# . net开发一个座席桌面。基本上,当我请求发送一些东西到服务器时,如果请求成功,那么将返回一个事件,如下所示。
'EventInfo' ('2')
message attributes:
REQ_ID [int]    = 402
USER_REQ_ID [int] = 0
TM_SERVER [int] = 1440495548
TM_LENGTH [int] = 1285
LONG_VALUE [int] = 0
STRING_VALUE [str] = "123"
'EventInfo' ('2')
message attributes:
REQ_ID [int]    = 301
USER_REQ_ID [int] = 0
TM_SERVER [int] = 1440495553
TM_LENGTH [int] = 1290
LONG_VALUE [int] = 0
STRING_VALUE [str] = "456"

基于上面的事件,我同时发送了两个请求,因此它返回了两个EventInfo。我可以通过eventInfo.ReferenceID获得事件的REQ_ID,我可以通过eventInfo.StringValue获得事件的STRING_VALUE(这是我在这种情况下想要的值,这个值将被填充到我的代理桌面的列表视图中)。

我的问题是如何根据事件的ReferenceID检索字符串值?不幸的是,没有这样的东西:eventInfo.ReferenceID(402).StringValue和返回123。是否有类似的方法来获取该值?

c#.如何根据事件's ReferenceID检索某个值

其实这个问题更多的是c#。我是这样解决这个问题的:

首先,我全局定义了一个dictionary:

Dictionary<int, string> qInfoTempDict = new Dictionary<int, string>();

我使用dictionary而不是listarray的原因可以参考这个。

接下来在我的EventInfo_Handler()方法中,我写了一些语句:

List<KeyValuePair<int, string>> sortedTempList = new List<KeyValuePair<int, string>>();
//Whenever the EventInfo is received, quickly retrieve its ReferenceId and StringValue and store them in a temporary KeyValuePair dictionary
qInfoTempDict.Add(eventInfo.ReferenceId, eventInfo.StringValue);
//Sort the dictionary by ReferenceId
foreach (KeyValuePair<int, string> attribute in qInfoTempDict.OrderBy(key => key.Key))
        sortedTempList.Add(new KeyValuePair<int, string>(attribute.Key, attribute.Value));

然后将数据插入到listview中。

欢迎对本解决方案的任何反馈或改进。

如果您可以指定您的请求到哪个服务器,我想帮助。在genesys平台上有很多组件。你可以用那个SDK做任何你想做的事。甚至你可以创建第三方服务器,就像genesys的核心组件一样。

主要是genesys事件驱动架构。您必须连接在genesys CME上定义的正确配置和客户端。之后,您可以使用平台SDK连接和侦听事件。SDK为此提供了高度抽象。创建类似事件侦听器的方法后,将事件方法分配给协议事件。之后,你会得到像其他服务器一样的事件&应用程序。当你在那个功能上获得一个事件,将它强制转换成你想看到的,在你的情况下,你可以将它强制转换为EventInfo。然后你就得到了结果。