2017-02-22 6 views

답변

1

엔터프라이즈 서비스에서 현재 전화를 끊을 수 없습니다. WDE API를 제공합니다. 개발자 가이드 문서에서 확인할 수 있습니다. 실제로 이것을 달성하기위한 두 가지 옵션이 있습니다. WDE API 명령 호출을 사용하는 첫 번째 방법. 두 번째 방법은 범용 SDK (PSDK)를 사용하여 현재 전화 끊기입니다. 먼저 현재 통화의 interactionId를 수집해야합니다. 그 후 명령을 호출 할 수 있습니다.

commandManager.CommandsByName["InteractionVoiceReleaseCall"].Insert(0, new CommandActivator() 
      { 
       CommandType = typeof(CustomCommand.ReleaseCall), 
       Name = "InteractionVoiceReleaseCall" 
      });  

WDE API 가이드에서 모든 명령 목록을 찾을 수 있습니다. 명령 유형 (클래스)에서 부울 값을 반환해야합니다. false를 돌려 주면 명령을 계속 진행하고 명령을 중단하는 것처럼 true를 보냅니다.

또는 이와 같은 명령을 직접 실행할 수 있습니다.

IDictionary<string, object> parameters = new Dictionary<string, object>(); 
parameters.Add("CommandParameter", interaction); 
parameters.Add("Reasons", reasons); 
parameters.Add("Extensions", extensions); 
commandManager.GetChainOfCommandByName("InteractionVoiceReleaseCall").Execute(); 

SDK 인증 개발자로서 나는 항상 PSDK (universal genesys sdk)를 선호합니다. 현재 SIP Server 연결을 검색하여 요청을 보낼 수 있습니다. 이 코드 블록 TServerProtocol 같은

IChannelService channelService = agent.EntrepriseService.Resolve<IChannelService>("channelService"); 
IClientChannel tServerChannel = channelService.ListChannels<Genesyslab.Platform.Voice.Protocols.TServerProtocol>().FirstOrDefault(); 

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

TServerProtocol tServerProtocol = tServerChannel.Protocol 등;

이 후에는 tserverPorotocol 객체에 대한 현재 연결이 있습니다. 그런 다음 SIP 서버에 요청을 보낼 수 있습니다. 이처럼

는 :

Genesyslab.Platform.Voice.Protocols.TServer.Requests.Voice.RequestReleaseCall releaseCall = Genesyslab.Platform.Voice.Protocols.TServer.Requests.Voice.RequestReleaseCall.Create(); 
releaseCall.ThisDN = "7000"; //(for example)(you can retrieve agent's DN from agent object) 
releaseCall.ConnID = interaction.ConnectionId  // you can retrieve from interactionhandler event. 

tServerProtocol.Send(releaseCall); 
//or tServerProtocol.Request(releaseCall); for async request. request return a ack message from the server. 

나는 기본을 설명하기 위해 노력했다. 도움이되기를 바랍니다. 한모금 등에 관한 질문이 있으시면 알려주십시오.

+1

감사합니다. Orhun, 이것은 매우 도움이되었습니다. 나는 명령을 직접 호출 할 수 없기 때문에 PSDK 접근 방식을 사용했다. 위 변수 "매개 변수"가 사용되지 않습니다. 다음은 ThisDN을 얻은 방법입니다. IMediaVoice voiceMedia = (IMediaVoice) _agent.Place.ListOfMedia.FirstOrDefault (x => x는 IMediaVoice 임); request.ThisDN = voiceMedia.ConfDN.Number; 그것이 최선의 방법인지는 확실하지 않지만 효과적입니다. –

+1

안녕하세요, Eric. 실제로 당신은 실행과 함께 "매개 변수"를 전달할 수 있습니다. 오타를 유감스럽게 생각합니다. 실제로 나는 모바일에서 썼다, 나는 내가 추가하는 것을 잊었다 고 생각한다. :) 거의 매일 나는 genesys psdk로 코딩하고있다. 에이전트의 DN을 얻으면 서버에 요청을 보내고 원하는 작업을 수행 할 수 있습니다. 예 : 전송, 음소거 등 Btw, WDE 유니티 컨테이너 사용. 생성자 주입 메소드를 사용하여 인터페이스를 해결할 수 있습니다. 예를 들어, IAgent 내부의 IAgent에서는 DN을 얻을 수 있습니다. agent.Place.ConfPlace.DNs.FirstOrDefault(); 이렇게. P.S : 상담원이 여러 DN을 사용할 수 있습니다 (단, 항상 모범 사례를 사용하기 위해). –

+0

고맙습니다. 여러 DN에 대해 궁금해했는데 이는 레거시 통합을 지원하기위한 것이 었으며 하나 이상의 DN이 결코 존재하지 않습니다. –