Вопрос

Здравствуйте!
Хотим выбрать для системы коннектор Bpm'online Asterisk Connector. Сейчас занимаемся изучением вопроса и возможных "но".

Например, возник вопрос, как фиксируется звонок, если Клиент позвонил, начал разговор с Оператором 1, Оператор фиксирует Обращение. Звонок сорвался, Клиент перезвонил, попал на  Оператора 2, тот перевёл его на Оператора 1. Как звонок зафиксируется в системе? Возможно ли эти два звонка привязать к одному Обращению?

Или если переадресация от Оператора на другого Сотрудника. Это будет один и тот же звонок в системе или 2 звонка - один Оператору, другой - Сотруднику?  

Если кто-то может поделиться своим опытом и слабыми местами коннектора, о которых нужно знать, буду благодарна. 

У меня такой же вопрос

1 комментарий

Всё нижеупомянутое — общее для разных систем телефонии, не только Asterisk:

В первой ситуации, конечно, будет два звонка.

При поступлении в bpm'online service звонка оператору справа под информацией о входящем звонке есть кнопки запуска процессов создания нового обращения и привязки к существующему:

scr_section_service_requests_buttons_on_call.png 

Во второй ситуации тоже будет 2 звонка. В последних версиях системы добавили отображение номера изначально позвонившего, в более старых вместо него может быть написан тот сотрудник, кто переадресовал.

Сравнение функциональности Asterisk и других АТС есть здесь.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

 В чем может быть проблема?

Процесс валится с ошибкой https://yadi.sk/i/OEAV92qdZHfeIA

Вот сам процесс:

Параметр:

 

У меня такой же вопрос

8 комментариев

А если просто:

AccountListParameter = query.GetEntityCollection(userConnection);

 

Rochefort Trappistes,

Процесс так даже не опубликуется

эт почему не опубликуется? параметры это поля класса (процесс это класс), а блок c# это метод, который имеет доступ к полям класса, как на чтение так и на запись.

снимите галочку "Интерпритируемый" в блоке с c# кодом (в расширенных настройках)

 

Rochefort Trappistes,

нет такой галочки

три точки - расширенный режим, как-то так

Rochefort Trappistes,

значит убрали её. какая ошибка при компиляции, если сетить значение в параметр через равно, как я писал выше?

 Rochefort Trappistes, см тут:

Начиная с версии 7.12.3 все создаваемые бизнес-процессы в bpm’online являются интерпретируемыми. Для обращения к значениям параметра процесса следует использовать методы get и set.

Миннекаев Айдар, дело в том, что в версии 7.13 в системе отключена возможность создания компилируемых бизнес-процессов, что делает невозможным работу с параметром EntityCollection. Параметр такого типа оставлен в системе для совместимости со старыми бизнес-процессами, которые работают в компилируемом режиме, а для новых — возможность использования компилируемых скрипт-тасков в БП отключена.

В последующих версиях системы запланирована поддержка EntityCollection и работы по внедрению этой поддержки, по словам разработчиков ядра системы, уже ведутся.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день!
Необходимо добавить раздел на контрагенты на портал.
Попробовал добавить раздел в рабочее место, он не отобразился. Попробовал добавлять с помощью sql скриптов. Есть у кого-нибудь актуальная документация по добавлению раздела на портал?

У меня такой же вопрос

2 комментария

Добрый день, Дмитрий. Инструкция по добавлению кастомного раздела на портал находится по ссылке

С 7.13.2 добавили возможность создавать портальные разделы пользовательскими средствами в мастере разделов.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

При попытке открыть конфигурацию сначала идет долгое ожидание, а затем выходит ошибка: "У вас нет прав на выполнение данного действия. Обратитесь к системному администратору." Но спустя секунд 30, а то и больше в конфигурацию заходит, но и то не всегда. 

Появилось это после обновления с 7.12.4 до 7.13.1.

Как можно это исправить?

У меня такой же вопрос

3 комментария

Попробуйте зайти по ссылке адрес_сервера:порт/0/dev

После обновления вы поменяли бинарники веб сервера на новые? Выполнили очистку редиса и перезапуск пула придложений? Попробуйте еще очистить кэш броузера и перекомпелировать конфигурацию! (Это можно сделать через WorkspaceConsole  (-operation=BuildWorkspace)  детальнее описано тут

Григорий Чех,

Все этоя проделывал, не помогло. Пробовал развернуть чистую сборку 7.13.1 и там та же ошибка. 

Григорий Чех пишет:
Попробуйте зайти по ссылке адрес_сервера:порт/0/dev

 Так заходит, но хотелось чтобы и через дизайнер системы можно было зайти

Возможно, у пользователя не актуализированы роли. Нужно запустить действие актуализации в разделе «Организационная структура».

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день!

Bpm'online customer center. Предполагается использовать стандартный кейс в разделе [Обращения]. Так же существует около 10 категорий обращений. В зависимости от категории обращения на каждой стадии кейса должны создаваться разные задачи. Сейчас вижу один вариант решения: Создать под каждую категорию обращения свой кейс и настроить условие запуска кейса, например "Категория=Инцидент". Возможно ли решать поставленную задачу проще и не создавать такое большое количество кейсов?

Заранее спасибо!

У меня такой же вопрос

2 комментария
Лучший ответ

Ну если у вас стадии кейса везде одинаковые, то можете сделать подпроцесс для каждой стадии. А уже в подпроцессе, через элемент ИЛИ реализовать нужную вам логику постановки задач в зависимости от категории обращения.

Ну если у вас стадии кейса везде одинаковые, то можете сделать подпроцесс для каждой стадии. А уже в подпроцессе, через элемент ИЛИ реализовать нужную вам логику постановки задач в зависимости от категории обращения.

Да, стадии одинаковые. Спасибо за идею!!

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

После обновления с 7.12.2 до 7.12.4 начали появляться ошибки в процессе Синхронизировать почту

1:

System.Threading.ThreadAbortException: Thread was being aborted.
   at System.Threading.Monitor.Enter(Object obj)
   at Terrasoft.Core.SchemaManagerProvider.GetManager(String managerName)
   at Terrasoft.Core.MetaDataSerializer.<Deserialize>d__7.MoveNext()
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
   at Terrasoft.Core.ServerContentGeneration.RuntimeEntitySchemaCreator.Create(Stream stream, EntitySchemaManager entitySchemaManager)
   at Terrasoft.Core.Entities.EntitySchemaManager.CreateRuntimeEntitySchema(ISchemaManagerItem schemaManagerItem, Assembly assembly)
   at Terrasoft.Core.SchemaManagerItem`1.get_SafeInstance()
   at Terrasoft.Core.Manager`2.FindInstanceByUId(Guid uid)
   at Terrasoft.Core.SchemaProperty.get_ReferenceSchema()
   at Terrasoft.Core.Entities.EntitySchemaColumn.get_ColumnValueName()
   at Terrasoft.Core.Entities.EntitySchemaQuery.CreatePrimaryImageExpression(EntitySchemaColumn schemaColumn, String columnPath)
   at Terrasoft.Core.Entities.EntitySchemaQuery.SetExpressionsForLookup(String columnPath, EntitySchemaQueryColumn queryColumn, EntitySchemaColumn schemaColumn)
   at Terrasoft.Core.Entities.EntitySchemaQuery.CreateColumn(String columnPath)
   at Terrasoft.Core.Entities.EntitySchemaQuery.AddColumn(String columnPath)
   at Terrasoft.Core.Entities.EntitySchema.CreateSelect(UserConnection userConnection, IEnumerable`1 columns, Boolean takeDisplayLookupValues, EntitySchemaColumnMap& columnMap, Boolean useAdminRights, Nullable`1 localizationCultureId)
   at Terrasoft.Core.Entities.Entity.InternalFetchFromDB(IEnumerable`1 columnsToFetch, IDictionary`2 conditions, Boolean useDisplayValues)
   at Terrasoft.Mail.MailSynchronizer.GetMailboxSyncSettings()
   at Terrasoft.Mail.MailSynchronizer..ctor(UserConnection userConnection, MailCredentials credentials, Boolean login)
   at Terrasoft.Core.Process.SyncImapMail.ScriptTask1Execute(ProcessExecutingContext context)
   at Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

2:

Terrasoft.Core.InstanceActivationException: Ошибка создания экземпляра класса "Terrasoft.Mail.ISyncStrategy" ---> Ninject.ActivationException: Error activating ISyncStrategy
No matching bindings are available, and the type is not self-bindable.
Activation path:
  1) Request for ISyncStrategy
 
Suggestions:
  1) Ensure that you have defined a binding for ISyncStrategy.
  2) If the binding was defined in a module, ensure that the module has been loaded into the kernel.
  3) Ensure you have not accidentally created more than one kernel.
  4) If you are using constructor arguments, ensure that the parameter name matches the constructors parameter name.
  5) If you are using automatic module loading, ensure the search path and filters are correct.
 
   at Ninject.KernelBase.Resolve(IRequest request, Boolean handleMissingBindings)
   at Ninject.ResolutionExtensions.Get[T](IResolutionRoot root, String name, IParameter[] parameters)
   at Terrasoft.Core.Factories.ClassFactory.GetInstance[T](Func`1 action)
   --- End of inner exception stack trace ---
   at Terrasoft.Core.Factories.ClassFactory.GetInstance[T](Func`1 action)
   at Terrasoft.Mail.MailSynchronizer.SyncImapMail()
   at Terrasoft.Core.Process.SyncImapMail.ScriptTask1Execute(ProcessExecutingContext context)
   at Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

С чем это может быть связано и как решить данную проблему?

У меня такой же вопрос

2 комментария

Если вы не переделывали базовый функционал никак, то создайте лучше обращение в тех поддержку, так будет лучше.

Такое сообщение значит, что просто был завершен поток выполнения, и завершен он был не средствами системы BPM. Причины могут быть самыми разными, в том числе и структура сети или настройки софта на сервере. Нужно подключаться и проводить отладку.

Войдите или зарегистрируйтесь, чтобы комментировать
Публикация

О компании

Компания DB Schenker является лидером по предоставлению передовых международных логистических услуг, поддерживает промышленность и торговлю, осуществляя всемирный обмен товарами посредством наземного транспорта, всемирных воздушных и морских грузоперевозок, контрактной логистики и управления цепочками поставок.

 

Предпосылки внедрения bpmonline

Вся работа с заявками клиентов на перевозку до внедрения bpmonline велась в почтовом клиенте Outlook. Такой подход усложнял обработку заявок клиентов и контроль эффективности менеджеров. Для составления отчетов о количестве заявок от клиентов требовалось значительное время. Не было понимания общей картины работы менеджеров и отсутствовала аналитика удовлетворенности клиентов от взаимодействия с компанией.

 

Задачи внедрения bpmonline

  • Автоматизация процесса обработки обращений клиентов
  • Автоматизация процессов коммуникаций между смежными отделами компаний

Выполненные настройки

В первую очередь были формализованы процессы взаимодействия с клиентами. Последовательность действий менеджера зависит от продукта, по которому обращается клиент. На основании этого составлен список сервисов, по которым может обратиться клиент и предусмотрены сроки выполнения заявок. Следующим шагом была детальная проработка и настройка кейсов с помощью инструмента Case Management. В разделе [Обращения] настроены кейсы в зависимости от сервиса. В каждом кейсе реализованы соответствующие подпроцессы и добавлены активности для менеджеров. Подпроцессы выполняют автоматическую отправку писем с целью запроса информации необходимой для выполнения запроса клиента у сотрудников смежных отделов.

Поскольку при взаимодействии с клиентом и выполнении его заявки есть необходимость направлять письма другим сотрудникам и несколько раз согласовывать информацию с клиентом, то принципиально важным был вопрос уведомления менеджера о получении ответов по письмам, «привязанным» к обращению, которое у него в работе. Для решения этой задачи реализован процесс заливки цветом тех обращений, у которых проставлен признак «Получен ответ». Этот признак, в свою очередь, присваивается тем обращениям, у которых появилось письмо с типом входящее. После прочтения менеджер снимает признак «Получен ответ» и обращение приобретает стандартный цвет в реестре записей.

Для ускорения процесса распределения и обработки заявок клиентов был реализован вспомогательный процесс автоматического назначения ответственным за обращение того менеджера, который является ответственным за контрагента. После тестирования, этот функционал дополнили процессом автоматического назначения ответственного за продукт, который должен быть добавлен в карточке контрагента. Если продукты контрагента не определены, то ответственным назначается ответственный за клиента.

После автоматизации процессов обработки заявок на перевозку был адаптирован процесс оценки обращений согласно требованиям клиента. Отправка уведомления с целью запроса оценки по обращению должна выполняться, но клиенты, которые постоянно сотрудничают с компанией DB Schenker, не должны получать системные уведомления. Для решения задачи была создана группа сервисов, при выборе которых запрос оценки по обращению не осуществляется.  Кроме этого, реализован кейс, в котором менеджер может перевести обращение на стадию «Запрос оценки», что запустит процесс отправки уведомления клиенту. Таким образом запрос оценок происходит по определенным клиентам там, где необходимо мониторить качество работы менеджеров.

Результат

Изменения процессов, которые произошли в результате внедрения bpmonline, значительно усовершенствовали взаимодействие менеджеров с клиентами компании. Результатом внедрения стал ряд достижений и улучшений:

  1. Агрегация всей информации в одной системе, что позволяет отслеживать и анализировать показатели работы менеджеров.
  2. Настройка процессов, которые помогают менеджеру выполнять заявку клиента, создают соответствующие активности и автоматически выполняют действия вместо менеджера.
  3. Возможность получать данные об удовлетворенности клиентов и запрашивать оценку в индивидуальном порядке с целью ограничить постоянных клиентов от множества писем.

Поделиться

0 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Здравствуйте. Была необходимость в добавлении дополнительного поля поиска в LookupPage. 

На данный момент решил задачу путем замещения модуля LookupPageViewGenerator и изменения в нем метода getFilteringControlsConfig

Проблема в том, что для выполнения этих действий пришлось копировать весь код из модуля LookupPageViewGenerator и добавлять свои небольшие изменения. 

Вопрос: можно ли как-то заместить или расширить этот модуль не копируя весь код, чтобы просто изменить тот метод, который мне нужен? Если да, то как потом его использовать на странице, например "Обращения"?

У меня такой же вопрос

2 комментария
Лучший ответ

Посмотрите здесь уже обсуждалась подобная тема.

Если Вам нужно использовать окно подобного вида не везде, то Вы можете реализовать свое кастомное окно и вызывать его в методе openLookup.

Кастомное окно можно реализовать не как замещенное, а как наследник от LookupPageViewGenerator и переопределить нужные методы.

Также мне не совсем понятно, если Вы действительно замещали LookupPageViewGenerator, то зачем тогда копировали весь код, ведь могли переопределить только нужные методы?

 

Посмотрите здесь уже обсуждалась подобная тема.

Если Вам нужно использовать окно подобного вида не везде, то Вы можете реализовать свое кастомное окно и вызывать его в методе openLookup.

Кастомное окно можно реализовать не как замещенное, а как наследник от LookupPageViewGenerator и переопределить нужные методы.

Также мне не совсем понятно, если Вы действительно замещали LookupPageViewGenerator, то зачем тогда копировали весь код, ведь могли переопределить только нужные методы?

 

Лучше клиентские модули не замещать

В 7.13.1 добавлен запрет на создание и установку новых замещающих клиентских модулей.

В дизайнере теперь нет возможности указать родителя для модуля и модуль в качестве родителя для новых схем. Сохранение существующих схем с проблемной комбинацией, по-прежнему, работает.

В вашем случае лучше унаследовать свой модуль от LookupPageViewGenerator создать свою страницу справочника скопировав LookupPage со всеми зависимястями заменив LookupPageViewGenerator на свой вариант

И дальше на странице Обращения в атрибутах указать lookupListConfig параметр lookupPageName:

"EmployeesNumber": {
                        dataValueType: Terrasoft.DataValueType.LOOKUP,
                        lookupListConfig: {
                            orders: [{columnPath: "Position"}],                            lookupPageName: ВашаСтраницаLookupPage 
                        }
                    },

 

Таким образом ваш вариант будет вызыватся лишь там где вы в атрибутах явно зададите lookupPageName что вы и хотели!

 

 

 

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Здравствуйте! Задача, создать группу чекбоксов меняющуюся в зависимости от значения другого поля. В bpmonline вообще можно реализовать группу чекбоксов? Или есть другой способ реализации этой задачи (постановка ниже)?

У меня такой же вопрос

1 комментарий
Лучший ответ

Добрый день, да можно реализовать группу чекбоксов. 
Каждый чекбокс логическое поле, или виртуальная колонка (атрибут).
Их группировка возможна либо через группу полей, либо просто в одном месте страницы разместите (например, в контейнер)

Для изменения чекбоксов стоит прописать зависимость значений от поля(ей) и прописать методы обработки изменений 
Есть пример на академии по реализации вычисляемых полей https://academy.terrasoft.ru/documents/technic-sdk/7-13/dobavlenie-vych…

Добрый день, да можно реализовать группу чекбоксов. 
Каждый чекбокс логическое поле, или виртуальная колонка (атрибут).
Их группировка возможна либо через группу полей, либо просто в одном месте страницы разместите (например, в контейнер)

Для изменения чекбоксов стоит прописать зависимость значений от поля(ей) и прописать методы обработки изменений 
Есть пример на академии по реализации вычисляемых полей https://academy.terrasoft.ru/documents/technic-sdk/7-13/dobavlenie-vych…

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Версия 7.12.4.

Добавил деталь в р. "Обращения портала"
При инициализации детали получаю ошибку: 

После отладки выявлено, что ошибка связана с вызовом не существующего сallback в методе initDetailRunProcessButtonMenu миксина  ProcessEntryPointUtilities.
В результате этой ошибки деталь не отображается в карточке Обращения на портале.

 

 

У меня такой же вопрос

9 комментариев

Если в стандартной детали логика этой же функции initDetailRunProcessButtonMenu отрабатывает нормально, дело может быть в неверно созданной Вашей. Попробуйте в обоих случаях посмотреть в отладчике запуск этой функции и посмотреть, в чём разница.

/**
 * Initializes "Run process" menu items in detail.
 * @param {Function} callback Callback function.
 * @param {Object} scope Execution context.
 * @protected
 */
initDetailRunProcessButtonMenu: function(callback, scope) {
	var processButtonMenu = this.get("RunProcessButtonMenuItems");
	if (!processButtonMenu) {
		processButtonMenu = this.Ext.create("Terrasoft.BaseViewModelCollection");
		this.set("RunProcessButtonMenuItems", processButtonMenu);
	}
	if (Terrasoft.ProcessEntryPointUtilities.getCanRunProcessFromSection()) {
		this._initDetailAvailableProcessList(processButtonMenu, callback, scope);
	} else {
		callback.call(scope);
	}
},

Возможно, для стандартной детали до else и не доходит.

Илья, добрый день.
В том то и дело, что 

Terrasoft.ProcessEntryPointUtilities.getCanRunProcessFromSection() и проверяет, не является ли пользователь пользователем портала, и в интерфейсе сотрудника возвращает true, и как следствие выполняется this._initDetailAvailableProcessList(processButtonMenu, callback, scope);

НО если пользователь является пользователем портала, то выполняется callback.call(scope);, а callback в этот метод не передается и равен undefind

Т.о. при выводе детали для пользователя портала  получаем ошибку

Сравните с другой деталью тоже на портале, как там работает эта функция.

Мотков Илья,

Деталей на портале нет. 
Вопрос в том, почему в initDetailRunProcessButtonMenu не передаётся callback

Видимо, потому и не передаётся, что деталей нет и никто не планировал запускать там эту функцию. Посмотрите, во отладке что это за анонимная функция, которая её вызывает и в чём разница в запуске на портале и в обычном разделе.

Мотков Илья,

Метод initDetailRunProcessButtonMenu  вызывается в BaseGridDetailV2 в методе initData и не принимает аргументы (см. https://yadi.sk/i/UoJ5M8kHo9s1kw)

Но в условии else вызывается callback.call(scope);, который по определению вернёт ошибку( т.к. initDetailRunProcessButtonMenu  не принимает аргументов)

Сам метод initDetailRunProcessButtonMenu   описан в схеме-миксине ProcessEntryPointUtilities

Я пытаюсь указать на баг базовой функциональности, который ограничивает использование деталей на портале пользователей.

Для себя временной решение я уже нашёл, но хотелось бы получить исправление в коробочной версии.

Либо переделайте initData, чтобы передавала в функцию эти два параметра, либо в самой initDetailRunProcessButtonMenu добавьте проверку на заполненность параметра, либо, если initData — это единственное место в системе, где функцию initDetailRunProcessButtonMenu вызывают и else не сможет отработать в принципе, исключите нижнюю ветвь.

Мотков Илья,

Илья, решение я уже нашёл (заместил 

BaseGridDetailV2 и метод initDetailRunProcessButtonMenu.)
Целью этой публикации на community является обратить внимание поддержки Terrasoft на не корректную реализацию метода initDetailRunProcessButtonMenu и на проблемы, которые, эта реализация вызывает. 
Чтобы это по возможности было исправлено в следующих релизах.

Кстати, в следующих релизах обещают полностью новый портал, так что может и не потребуется ничего исправлять, если в логике не для портала функция вызывается правильно, с параметром.

Если же вызывается тоже без, но в обычном разделе до else никогда на доходит, то надо эту ветвь просто вырезать.

Войдите или зарегистрируйтесь, чтобы комментировать