在 Workspace 桌面版自定义模块中调用 IInteractionVoice.Release() 不释放(挂断)当前调用
Calling IInteractionVoice.Release() not releasing (hanging up) the current call in a Workspace Desktop Edition custom module
我需要在 Genesys Workspace 桌面版中以编程方式挂断当前 phone 呼叫。这是我拥有的:
public class SomeService
{
private readonly IEnterpriseServiceProvider _esp;
public SomeService(IEnterpriseServiceProvider esp)
{
_esp = esp;
}
public void HangupCurrentCall()
{
var iv = _esp.Resolve<IInteractionVoice>();
iv.Release();
}
}
上面的代码执行没有错误,但没有挂断电话。
您不能只从企业服务挂断当前通话。 WDE 为此提供 API。您可以从开发人员指南文档中查看。实际上,您有两种选择来实现这一目标。第一种方式使用 WDE API 命令调用。第二种方式使用通用SDK(PSDK)挂断当前通话。
首先,您需要收集当前通话的 interactionId。之后就可以调用这样的命令了,
commandManager.CommandsByName["InteractionVoiceReleaseCall"].Insert(0, new CommandActivator()
{
CommandType = typeof(CustomCommand.ReleaseCall),
Name = "InteractionVoiceReleaseCall"
});
您可以从 WDE api 指南中找到所有命令列表。
在您的命令类型 (class) 上,您必须 return 布尔值。如果你 return false,可以继续,发送 true like break 命令。
或者你可以直接执行这样的命令;
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 服务器连接并向其发送请求。喜欢这个代码块
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 作为 TServerProtocol;
在此之后,您在 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.
我试图解释基础知识。我希望它有帮助。如果您对 sip 等有任何疑问,请告诉我。
我需要在 Genesys Workspace 桌面版中以编程方式挂断当前 phone 呼叫。这是我拥有的:
public class SomeService
{
private readonly IEnterpriseServiceProvider _esp;
public SomeService(IEnterpriseServiceProvider esp)
{
_esp = esp;
}
public void HangupCurrentCall()
{
var iv = _esp.Resolve<IInteractionVoice>();
iv.Release();
}
}
上面的代码执行没有错误,但没有挂断电话。
您不能只从企业服务挂断当前通话。 WDE 为此提供 API。您可以从开发人员指南文档中查看。实际上,您有两种选择来实现这一目标。第一种方式使用 WDE API 命令调用。第二种方式使用通用SDK(PSDK)挂断当前通话。 首先,您需要收集当前通话的 interactionId。之后就可以调用这样的命令了,
commandManager.CommandsByName["InteractionVoiceReleaseCall"].Insert(0, new CommandActivator()
{
CommandType = typeof(CustomCommand.ReleaseCall),
Name = "InteractionVoiceReleaseCall"
});
您可以从 WDE api 指南中找到所有命令列表。 在您的命令类型 (class) 上,您必须 return 布尔值。如果你 return false,可以继续,发送 true like break 命令。
或者你可以直接执行这样的命令;
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 服务器连接并向其发送请求。喜欢这个代码块
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 作为 TServerProtocol;
在此之后,您在 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.
我试图解释基础知识。我希望它有帮助。如果您对 sip 等有任何疑问,请告诉我。