2014-12-02 7 views
1

Webservice의 외부 이벤트가 발생하면 Genesys IWS에 "new outbound mail"대화 상자를 표시하는 작업이 있습니다. IWS 확장을 제 위치에두고로드하고 웹 서비스 인터페이스를 제공 할 수 있습니다.Genesys Interaction 작업 공간에서 새 메일 상호 작용 창 열기

내 주요 문제는 이제 내 코드에서 상호 작용 창을 열 수있는 방법을 이해하지 못한다는 것입니다. 내가 사용하여 인스턴스를 얻기 위해 노력 :

IInteractionsWindow interactionsView = Container.Resolve<IInteractionsWindow>(); 
interactionsView.Create(); 
interactionsView.ShowView(); 

나는 새 창을 얻을로이 실제로 절반 만 작동하지만, 완전히 비어. 모든 단일 지역을 자체적으로로드해야합니까? 완전히 통합 된 방식으로 목표를 달성하는 간단한 방법이 있습니까?

업데이트 : 이제는 "새 메일"창을 에이전트에 표시하는 데 정말로 도움이되는지는 모르겠지만 플랫폼 SDK를 사용하여 작업을 수행하려고했습니다.

attr_ref_id [int] = 2 
attr_error_code [int] = 34 
attr_error_desc [str] = "Client is not logged in" 

내가이가 정확하게 어떻게 든 로그인되지 관련이있을 수 있다고 생각하지만, 내가 가진 : 나쁜 것 인 상호 작용 서버의 응답입니다

interactionServerProtocol = new InteractionServerProtocol(new Endpoint(new Uri("tcp://ixnServer:7319"))); 
interactionServerProtocol.ClientName = "CRMIntegrationModule"; 
interactionServerProtocol.ClientType = InteractionClient.AgentApplication; 

contactServerProtocol = new UniversalContactServerProtocol(new Endpoint(new Uri("tcp://ucsServer:5130"))); 
contactServerProtocol.ClientName = "CRMIntegrationModule"; 

interactionServerProtocol.Open(); 
contactServerProtocol.Open(); 

RequestSubmit request = RequestSubmit.Create(); 
request.InteractionType = "Outbound"; 
request.InteractionSubtype = "OutboundNew"; 
request.MediaType = "email"; 
request.Queue = "default"; 

EventAck response = interactionServerProtocol.Request(request) as EventAck; 
if (response != null) 
{ 
    string id = Convert.ToString(response.Extension["InteractionId"]); 

    RequestInsertInteraction insertRequest = RequestInsertInteraction.Create(); 
    insertRequest.InteractionAttributes = new InteractionAttributes 
    { 
     Id = id, 
     MediaTypeId = "email", 
     TypeId = "Outbound", 
     SubtypeId = "OutboundNew", 
     TenantId = 101, 
     Status = new NullableStatuses(Statuses.Pending), 
     Subject = "Testmail", 
     EntityTypeId = new NullableEntityTypes(EntityTypes.EmailOut) 
    }; 
    insertRequest.EntityAttributes = new EmailOutEntityAttributes() 
    { 
     FromAddress = "[email protected]", 
     ToAddresses = "[email protected]", 
    }; 
    insertRequest.InteractionContent = new InteractionContent() 
    { 
     Text = "This is the e-mail body." 
    }; 
    contactServerProtocol.Send(insertRequest); 

    RequestPlaceInQueue queueRequest = RequestPlaceInQueue.Create(); 
    queueRequest.InteractionId = id; 
    queueRequest.Queue = "default"; 
    interactionServerProtocol.Send(queueRequest); 
} 

interactionServerProtocol.Close(); 
contactServerProtocol.Close(); 

: 나는 다음과 같은 코드로 시도 이것을 달성하는 단서가 하나도 없습니다. 어떤 도움이 필요합니까?

업데이트 2 플랫폼 SDK를 사용하여 전자 메일을 보낼 수는 있지만 실제로 원하는 것은 아닙니다. 초기 질문은 여전히 ​​유효합니다. 단지 상호 작용 창을 호출하기 만하면됩니다. 다른 것들은 사용자의 몫입니다. 가능한가?

답변

0

나는 주어진 명령 체인을 사용했다. 이 페이지는 http://docs.genesys.com/Documentation/PSDK/8.1.4/Developer/CreatinganE-Mail#t-1에서도 찾을 수 있습니다. IWS 데스크톱 클라이언트 응용 프로그램과 정확히 어떻게 작동하는지 알지 못합니다.
0

PlatformSDK를 사용해야합니다. Genesyslab.platform.webmedia.protocols.dll을 추가하십시오. 그 후에 * webmedia.tserver.request를 사용할 수 있습니다. 그 탭 아래에는 requestWeb 또는 sth가 있습니다.

channelService.RegisterEvents(tServerChannel, new Action<Genesyslab.Enterprise.Model.Channel.IClientChannel> 

주 모듈 (Initialize 메서드 사용)에서 registerevent를 실행해야합니다. 버튼이나 sth를 넣은 다음 이벤트를 트리거하거나 로그온 후 명령 줄을 사용할 수 있습니다.

행운을 빈다. 귀하의 의견

public IObjectContainer Container { get; set; } 

    public void NewItem(string contactId, string emailAddress) 
    { 
     IAgent agent = Container.Resolve<IAgent>(); 
     IRoutingBasedManager routingManager = Container.Resolve<IRoutingBasedManager>(); 

     IDictionary<string, object> parameters = new Dictionary<string, object>(); 
     parameters.Add("CommandParameter", agent.FirstMediaEmail); 
     parameters.Add("TargetId", contactId); 
     parameters.Add("OwnerId", agent.ConfPerson.EmailAddress); 
     parameters.Add("Destination", emailAddress); 
     parameters.Add("RecentIndex", contactId); 
     bool todo = routingManager.RequestToDo("CreateNewOutboundEmail", RoutingBasedTarget.Contact, parameters); 
     if (todo && parameters.ContainsKey("RoutingBaseCommand")) 
     { 
      IChainOfCommand chainOfCommand = parameters["RoutingBaseCommand"] as IChainOfCommand; 
      if (chainOfCommand != null) 
      { 
       chainOfCommand.Execute(parameters["RoutingBaseCommandParameters"]); 
      } 
     } 
    } 
+0

감사 : – Scoregraphic

+0

플랫폼 SDK를 사용하여 새로운 시도로 내 질문을 업데이트했습니다. – Scoregraphic