C# 在Genesys交互工作区中打开新邮件交互窗口

C# 在Genesys交互工作区中打开新邮件交互窗口,c#,genesys,workspace-desktop-edition,C#,Genesys,Workspace Desktop Edition,我得到的任务是在一个Web服务的外部事件发生时,在Genesys IWS中显示新的出站邮件对话框。我将我的IWS扩展放在适当的位置,它加载并可以提供一个webservice接口 我现在的主要问题是我不明白如何从代码中打开交互窗口。我尝试使用以下方法获取它的一个实例: IInteractionsWindow interactionsView = Container.Resolve<IInteractionsWindow>(); interactionsView.Create(); in

我得到的任务是在一个Web服务的外部事件发生时,在Genesys IWS中显示新的出站邮件对话框。我将我的IWS扩展放在适当的位置,它加载并可以提供一个webservice接口

我现在的主要问题是我不明白如何从代码中打开交互窗口。我尝试使用以下方法获取它的一个实例:

IInteractionsWindow interactionsView = Container.Resolve<IInteractionsWindow>();
interactionsView.Create();
interactionsView.ShowView();
坏消息是来自交互服务器的响应是:

attr_ref_id [int] = 2
attr_error_code [int] = 34
attr_error_desc [str] = "Client is not logged in"
我认为这可能与没有正确登录有关,但我不知道如何实现这一点。有什么帮助吗


更新2我可以使用平台SDK发送电子邮件,但这不是我真正想要的。最初的问题仍然有效,因为我只想调用interactions窗口,就这样。其他事情由用户决定。可能吗?

您需要使用PlatformSDK。添加Genesyslab.platform.webmedia.protocols.dll 之后,您可以使用*webmedia.tserver.request,在该选项卡下有requestWeb或其他内容

channelService.RegisterEvents(tServerChannel, new Action<Genesyslab.Enterprise.Model.Channel.IClientChannel>
在主模块haveinitialize方法中,需要像这样注册事件。您可以放置一个按钮或其他东西,然后您可以触发事件,或者您可以在登录后使用commandchain,这取决于您


祝你好运。

我使用了给定的命令链:

    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"]);
            }
        }
    }

谢谢你的意见。我还发现了这个页面,我不知道它是如何与IWS桌面客户端应用程序一起工作的。我已经用我的新尝试使用平台SDK更新了我的问题
    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"]);
            }
        }
    }