Вставленная цепочка команд не выполняется в правильном порядке

Я вставляю пользовательскую команду в цепочку «BundleClose» перед командой «GetAttachedDataInformationUCS», но она выполняет команду после команды «Close». Я пытался вставить его до, после и с помощью команд, отличных от «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

person Eric Scherrer    schedule 05.04.2017    source источник


Ответы (2)


В этом SDK есть ошибка. Я могу это гарантировать. Я отправляю много заявок на IWS/WDE sdk. Ошибка использования команды из-за контейнера Unity. Лучший способ сделать это с помощью this.

Как вы можете видеть внизу страницы есть команда GetAttachedDataInformationUCS "0" цепочки. Если вы вставите 0, ваша команда будет первой. Если вы вставите «1», будет; прикрепить. -> ваша команда -> обновить......

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 
person orhun.begendi    schedule 05.04.2017
comment
Я согласен. Также в документации говорится, что в цепочке BundleClose есть множество команд, но если вы вызовете ICommandManager.DumpToLog() при загрузке модуля, вы увидите, что в цепочке есть только IsPossibleToClose, ValidateEditableDataBundle и Close. В моем случае ввод команды перед закрытием сработал. Эти недостающие команды должны быть добавлены позже. - person Eric Scherrer; 06.04.2017

Не уверен, почему, но добавление его до того, как сработала команда «Закрыть».

person Eric Scherrer    schedule 05.04.2017