Вставленная цепочка команд не выполняется в правильном порядке
Я вставляю пользовательскую команду в цепочку "BundleClose" перед командой "GetAttachedDataInformationUCS", но она выполняет команду после команды "Закрыть". Я пытался вставить его до, после и с командами, отличными от "GetAttachedDataInformationUCS", но он всегда выполняется после команды "Закрыть". Как я могу заставить его работать как задумано?
_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
2 ответа
В этом SDK есть ошибка. Я могу гарантировать это. Я отправляю много билетов о IWS/WDE SDK. Там ошибка использования команды из-за Unity Container. Лучший способ сделать это, используя это.
Как вы можете видеть в нижней части страницы есть команда GetAttachedDataInformationUCS "0" из цепочки. Если вы введете 0, ваша команда будет первой. Если вы вставите "1", будет; getattach. -> ваша команда -> обновить......
PS при выполнении метода вашей команды, false - это продолжение следующей команды, true - разрыв цепочки команд.
PS Это решение предоставлено Официальным 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
Не знаю почему, но добавление его до того, как сработала команда "Закрыть".