Genesys平台:从SIP服务器获取呼叫详细信息

时间:2015-04-24 13:18:53

标签: pbx sip-server genesys

  • 我希望从Genesys Platform SIP Server获得呼叫详细信息

  • Genesys平台有 .NET平台SDK

  • Anybod有 SIMAP示例代码,其中显示如何获取呼叫详细信息,使用来自SIP服务器的Platform SDK for .NET [C#]?

额外备注:

  

致电详细信息:特别是我想为给定的电话

获取 AgentId

  

从Sip Server:我不确定Sip Server是否是最好的候选者   接听电话详情。对其他建议/备选方案持开放态度

5 个答案:

答案 0 :(得分:3)

您可以构建一个监视DN操作的类。您还可以根据自己的需要观看特定DN或所有DN。如果这一切都与呼叫有关,那么这是最佳方式。

首先,您必须定义TServerProtocol,然后您必须通过主机,端口和客户端信息进行连接。

           var endpoint = new Endpoint(host, port, config);
            //Endpoint backupEndpoint = new Endpoint("", 0, config);

            protocol = new TServerProtocol(endpoint)
            {
                ClientName = clientName
            };
//Sync. way;
    protocol.Open();
//Async way;
    protocol.BeginOpen();

我总是使用异步方式来执行此操作。我得到了你的理由:)你可以检测连接是否与SDK提供的事件打开。

            protocol.Opened += new EventHandler(OnProtocolOpened);
            protocol.Closed += new EventHandler(OnProtocolClosed);
            protocol.Received += new EventHandler(OnMessageReceived);
            protocol.Error += new EventHandler(OnProtocolError);

这里有OnMessageReceived事件。魔术发生的这个事件。您可以跟踪所有呼叫事件和DN操作。如果你去geneys支持网站。您将找到SDK参考手册。在那个手册上,很容易理解有很多关于参考和使用的信息。  所以在你的情况下,你想要一个电话的agentid。所以你需要EventEstablished才能做到这一点。您可以在接收活动中使用此功能;

var message = ((MessageEventArgs)e).Message;

            // your event-handling code goes here
            switch (message.Id)
            {
                    case EventEstablished.MessageId:
                    var eventEstablished = message as EventEstablished;
                    var AgentID = eventEstablished.AgentID;
                    break;
            }

您可以使用此用法进行大量此操作。就像拨号,保持呼入入站或出站一样,即使你可以检测内部呼叫并报告geneys平台没有。

我希望这很清楚。

答案 1 :(得分:1)

如果您有权访问路由策略,则可以对其进行编辑。您可以向策略添加一些代码,以便将您需要的详细信息发送到某个Web服务器(例如)或DB。我们在战略中做了这样的事情。成功路由块后,作为后路由策略发送RTargetPlaceSelected和RTargetAgentSelected的值。

答案 2 :(得分:0)

尝试一下:

>

  

Genesyslab.Platform.Contacts.Protocols.ContactServer.Requests.JirayuGetInteractionContent   JirayuGetInteractionContent =                   Genesyslab.Platform.Contacts.Protocols.ContactServer.Requests.JirayuGetInteractionContent.Create();

     

JirayuGetInteractionContent.InteractionId =“ 004N4aEB63TK000P”;               Genesyslab.Platform.Commons.Protocols.IMessage responseingEventY =   contactserverProtocol.Request(JirayuGetInteractionContent);               Genesyslab.Platform.Commons.Collections.KeyValueCollection keyValueCollection =   (((Genesyslab.Platform.Contacts.Protocols.ContactServer.Events.EventGetInteractionContent)respondingEventY).InteractionAttributes.AllAttributes;

答案 3 :(得分:0)

我们将获得如下的AgentID和Place, 第1步: 创建一个Custome命令类,并在ExtensionSampleModule类中添加命令链,如下所示,

RequestDispatcher rd = request.getRequestDispatcher("servlet2");
//Forwards a request from a servlet to another resource (servlet, JSP file,
// or HTML file) on the server.
rd.forward(request,response)

//Includes the content of a resource (servlet, JSP page, HTML file) in the response.
rd.include(request,response)

答案 4 :(得分:0)

IInteractionVoice interaction = (IInteractionVoice)e.Value;
switch (interaction.EntrepriseLastInteractionEvent.Id)
{
  case EventEstablished.MessageId:

  var eventEstablished = interaction.EntrepriseLastInteractionEvent as EventEstablished;
  var genesysCallUuid = eventEstablished.CallUuid;                  
  var genesysAgentid = eventEstablished.AgentID;
  .
  .
  .
  .
  break;
}