C#.NET / Genesys - 如何根据事件的ReferenceID检索特定值

时间:2015-08-25 15:08:20

标签: c# .net genesys

我不确定这是否是一个很好的问题,或者我应该说这个问题更多的是C#.NET或Genesys。

我正在使用Genesys(联络中心解决方案提供商)Platform 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.有没有类似的方法来获取值?

2 个答案:

答案 0 :(得分:0)

实际上这个问题更多的是C#。以下是我解决问题的方法:

首先,我全局定义dictionary

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

我使用dictionary代替listarray的原因可以参考this

接下来在我的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));

然后相应地将数据插入到列表视图中。

欢迎对此解决方案提出任何反馈或改进。

答案 1 :(得分:0)

如果您可以将您的请求说明为哪个服务器,我想提供帮助。 geneys平台上有很多组件。您可以使用该SDK执行任何操作。即使您可以创建第三方服务器,就像geneys中的核心组件一样。

主要是geneys事件驱动的架构。您必须连接在genesys CME上定义的正确配置和客户端。之后,您可以使用平台SDK连接和收听事件。 SDK为此提供了高度抽象。在创建类似方法的事件侦听器之后,将事件方法分配给协议事件。之后,您将获得其他服务器和其他服务器的活动。应用程序。当您获得该方法的事件时,将其转换为您想要查看的内容,在您的情况下,您可以将其转换为EventInfo。然后你得到结果。