2017-04-05 59 views
1

我在“GetAttachedDataInformationUCS”命令之前在“BundleClose”链中插入自定义命令,但它在“关闭”命令后执行该命令。我曾尝试在“GetAttachedDataInformationUCS”之前,之后和之后插入它,但它总是在“Close”命令后执行。我如何才能按预期工作?插入的命令链执行顺序不正确

_commandManager.InsertCommandToChainOfCommandAfter("BundleClose", "GetAttachedDataInformationUCS", 
    new List<CommandActivator> 
    { 
     new CommandActivator 
     { 
      CommandType = typeof(UpdateDispositionDateCommand), 
      Name = "UpdateDispositionDateCommand" 
     } 
    }); 

下面是自定义命令:

public class UpdateDispositionDateCommand : IElementOfCommand 
{ 
    public UpdateDispositionDateCommand() 
    { 
     Name = "UpdateDispositionDateCommand"; 
    } 

    public bool Execute(IDictionary<string, object> parameters, IProgressUpdater progressUpdater) 
    { 
     return false; 
    } 

    public string Name { get; set; } 
} 

这里是日志的缩短版,显示不正确的命令执行:

Exe CoC BundleClose -> Name:GetAttachedDataInformationUCS 
Exe CoC BundleClose -> Name:UpdateNotePadForVoice 
Exe CoC BundleClose -> Name:ResetInteractionChatConsultation 
Exe CoC BundleClose -> Name:IsContactModified 
Exe CoC BundleClose -> Name:SipEndpointAskClearSEPCalls 
Exe CoC BundleClose -> Name:IsPossibleToClose 
Exe CoC BundleClose -> Name:CompleteDispositionCodeOnBundle 
Exe CoC BundleClose -> Name:ValidateEditableDataBundle 
Exe CoC BundleClose -> Name:Close 
Exe CoC InteractionVoiceBeforeClose -> Name:DoNotCallOutboundChain 
Exe CoC InteractionVoiceBeforeClose -> Name:SetCallResultOutboundRecord 
Exe CoC InteractionVoiceBeforeClose -> Name:RescheduleOutboundRecord 
Exe CoC InteractionVoiceBeforeClose -> Name:UpdateRecordCommand 
Exe CoC InteractionVoiceBeforeClose -> Name:MarkProcessedOutboundChainCommand 
Exe CoC InteractionVoiceBeforeClose -> Name:RescheduleGMECallback 
Exe CoC InteractionVoiceBeforeClose -> Name:SetGMECallbackDisposition 
Exe CoC InteractionVoiceBeforeClose -> Name:ClearSessionCommand 
Exe CoC InteractionVoiceBeforeClose -> Name:IsContactModified 
Exe CoC InteractionVoiceBeforeClose -> Name:SipEndpointClearSEPCalls 
Exe CoC InteractionVoiceBeforeClose -> Name:Close 
Exe CoC BundleClose -> Name:UpdateDispositionDateCommand 
Exe CoC BundleClose -> Name:StopInteractionVoiceUCS 
Exe CoC BundleClose -> Name:GetOutboundPreviewRecord 

回答

1

该SDK存在错误。我可以保证。我提交了许多关于IWS/WDE sdk的票。由于Unity Container,有命令使用错误。最好的方式来使用这个。

正如你可以看到在页面底部有GetAttachedDataInformationUCS是链的“0”命令。如果你插入0,你的命令将是第一个。如果你插入“1”,将是; getattach。 - >你的命令 - >更新......

P.S.在你的命令的执行方法上,false是继续下一个命令,true是打破命令链。

P.S.它由Genesys官方提供。

this.commandManager.CommandsByName["BundleClose"].Insert(0, 
        new CommandActivator() { CommandType = typeof(InteractionChatDisconnectChatEx) }); 

ChainBundleClose 

0 GetAttachedDataInformationUCS 
1 UpdateNotePadForVoice 
2 ResetInteractionChatConsultation 
3 IsContactModified 
4 IsPossibleToClose 
5 CompleteDispositionCodeOnBundle 
6 Close 
7 StopInteractionVoiceUCS 
8 GetOutboundPreviewRecord 
+0

我同意。另外文档说BundleClose链中有一堆命令,但是如果在模块加载时调用ICommandManager.DumpToLog(),您将会看到该链只有IsPossibleToClose,ValidateEditableDataBundle和Close。在我的情况下,在关闭工作之前放置该命令。那些丢失的命令必须稍后添加。 –

0

不知道为什么,但在此之前将它添加“关闭”命令起作用。