Genesys Workspace Desktop Edition에서 프로그래밍 방식으로 현재 전화를 끊어야합니다. 여기에 내가 무엇입니까 :작업 공간 Desktop Edition 사용자 정의 모듈에서 IInteractionVoice.Release()를 호출하여 현재 호출을 해제하지 않음
위의 코드는 오류없이 실행되고 있지만 전화가 끊기고 있지 않습니다.
Genesys Workspace Desktop Edition에서 프로그래밍 방식으로 현재 전화를 끊어야합니다. 여기에 내가 무엇입니까 :작업 공간 Desktop Edition 사용자 정의 모듈에서 IInteractionVoice.Release()를 호출하여 현재 호출을 해제하지 않음
위의 코드는 오류없이 실행되고 있지만 전화가 끊기고 있지 않습니다.
엔터프라이즈 서비스에서 현재 전화를 끊을 수 없습니다. 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.
나는 기본을 설명하기 위해 노력했다. 도움이되기를 바랍니다. 한모금 등에 관한 질문이 있으시면 알려주십시오.
감사합니다. Orhun, 이것은 매우 도움이되었습니다. 나는 명령을 직접 호출 할 수 없기 때문에 PSDK 접근 방식을 사용했다. 위 변수 "매개 변수"가 사용되지 않습니다. 다음은 ThisDN을 얻은 방법입니다. IMediaVoice voiceMedia = (IMediaVoice) _agent.Place.ListOfMedia.FirstOrDefault (x => x는 IMediaVoice 임); request.ThisDN = voiceMedia.ConfDN.Number; 그것이 최선의 방법인지는 확실하지 않지만 효과적입니다. –
안녕하세요, Eric. 실제로 당신은 실행과 함께 "매개 변수"를 전달할 수 있습니다. 오타를 유감스럽게 생각합니다. 실제로 나는 모바일에서 썼다, 나는 내가 추가하는 것을 잊었다 고 생각한다. :) 거의 매일 나는 genesys psdk로 코딩하고있다. 에이전트의 DN을 얻으면 서버에 요청을 보내고 원하는 작업을 수행 할 수 있습니다. 예 : 전송, 음소거 등 Btw, WDE 유니티 컨테이너 사용. 생성자 주입 메소드를 사용하여 인터페이스를 해결할 수 있습니다. 예를 들어, IAgent 내부의 IAgent에서는 DN을 얻을 수 있습니다. agent.Place.ConfPlace.DNs.FirstOrDefault(); 이렇게. P.S : 상담원이 여러 DN을 사용할 수 있습니다 (단, 항상 모범 사례를 사용하기 위해). –
고맙습니다. 여러 DN에 대해 궁금해했는데 이는 레거시 통합을 지원하기위한 것이 었으며 하나 이상의 DN이 결코 존재하지 않습니다. –