Публикация

О компании

Компания Ticketland.ru — крупнейший билетный оператор России в сегменте «живых» развлечений: спектакли, концерты, мюзиклы, фестивали, классическая музыка, спорт, а также любые мероприятия для детей. Приоритетами компании являются высокое качество обслуживания клиентов и удовлетворение их желания найти для себя наиболее интересное событие.

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

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

Основные задачи проекта

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

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

Команда внедрения системы, в которую вошли сотрудники компании Ticketland, совместно с CSM менеджером bpmonline добавили справочные поля Подкатегория сервиса и Линия в разделе [Обращение]. Далее был изменён объект системы Объект администрирования, куда были добавлены колонки Линия, Группа ответственных и проставлены взаимосвязи между подкатегориями сервиса, линиями поддержки и группами ответственных.

Далее с помощью мастера раздела в разделе [Обращение] на вкладке Бизнес-правила были созданы правила, в соответствии с которыми выполняется фильтрация полей, например:

1. При выборе определённого сервиса доступны только подчинённые подсервисы.

2. При выборе подсервиса доступны только определённые группы ответственных, которые могут решить обращения данной специфики.

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

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

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

В случае не вовремя обработанного обращения (например, через 24 часа после уведомления руководителя группы ответственных) система уведомит об этом руководителя подразделения. Ещё через 48 часов уведомление получит руководитель всего технического департамента.

Помимо уведомлений на почту, в системе настроен раздел [Итоги], в котором операторы и руководители могут увидеть:

1. обращения, которые не были обработаны в срок;

2. количество обработанных обращений по ответственному;

3. количество обращений по каждой подкатегории сервиса;

4. динамику решения обращений;

5. уровень удовлетворенности по обращениям в разрезе отделов;

6. общие данные по всей технической поддержке.

Результат

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

Благодаря построенному бизнес-процессу руководство компании получает уведомления о сложных или просроченных обращениях, а настроенный раздел [Итоги] даёт возможность в любое время увидеть полную картину как отдельного оператора, так и всей поддержки в целом.

Поделиться

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

Всем доброго времени суток. Версия 7.12.

Что делать в такой ситуации?

Точно помню, что раньше эта схема (для разработки в мобильных приложениях) замещалась без проблем.

Пока проверяю на демо-сборке.

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

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

Вам не нужно замещать схему. Вам достаточно в мастере мобильного приложения сохранить текущие изменения и манифест создастся сам в пользовательском пакете.

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

Добрый день!
При отправке сообщения на подключенную в Сервис почту -автоматически приходит пустая отбивка на почту отправляющего сообщение клиента.

Что это за системная настройка и где её отключить?

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

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

Похоже, это стандартная логика отправки письма при регистрации обращения, реализованная в процессе SendEmailToCaseContactProcess или каком-то из ему подобных. Она берёт нужный шаблон в справочнике «Шаблоны email сообщений» и отправляет автору обращения.

Может, у Вас нужный шаблон в этом справочнике сделан пустым или вовсе отсутствует? Можно поднять демо-сайт той же версии и сравнить наполнение справочника шаблонов с ним.

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

Всем доброго времени суток. Версия 7.12.

Возможно ли отследить изменение любой колонки объекта?

Есть удобное свойство dependencies в attributes, которое позволяет отследить изменение конкретной колонки (причём вне зависимости от того, изменяет ли значение колонки непосредственно пользователь, или изменение происходит вследствие какой-либо зависимости в схеме карточки). Можно ли подобным образом отследить изменение любой колонки в карточке?

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

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

Вопрос снят, entityColumnChanged в Базовой схеме карточки.

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

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

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

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

Получить содержимое раздела обращений можно так:

select * from [case]

Если нужно текстовые значения справочных полей, то пишутся join-ы с таблицами справочников.

Для деталей аналогично, только дописать where с фильтрацией детали по Id записи основного раздела.

Теги — это обычная деталь-развязка со значениями справочника. В таблице CaseTag будет справочник тегов обращения, в CaseInTag — связь обращений и тегов.

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

Всем доброго времени суток. Версия 7.12.

Можно ли как-нибудь по id раздела (записи SysModule) получить список всех входящих в него колонок с типами и названиями? Возможно, есть какой-то объект, где они хранятся?

Нашёл что-то такое: SysPackageSchemaDataColumn но не похоже, что это оно.

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

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

я так понимаю хранятся в SysSchema, колонка MetaData.
скрипт глянуть из базы:

select cast(MetaData as varchar(max)) from SysSchema where caption='Account' 
order by createdOn desc

На JS колонки вытягиваюся через this.entitySchema.columns (ну или require объекта).

На С# можно перебрать колонки

var manager = UserConnection.EntitySchemaManager.GetInstanceByName("Account");
foreach (var column in manager.Columns) {
    if (column.IsValueCloneable) {
 
    }
    var fixedColumnName = column.IsLookupType ? column.Name+"Id" : column.Name;
    var uid = column.UId;
    var columnName = column.Name;
    var columnCaption = column.Caption;
}

Ну и как всегда, без сюрпризов не обошлось. Лукап колонки идут без Id-окончания. 

Не факт, что так подтянутся унаследованные из родительских объектов колонки. Можно вытянуть из системных таблиц базы, как тут:

SELECT  t.name AS [Table Name], c.name AS [Column Name], value AS [Extended Property]
FROM sys.extended_properties AS ep
INNER JOIN sys.tables AS t ON ep.major_id = t.object_id 
INNER JOIN sys.columns AS c ON ep.major_id = c.object_id AND ep.minor_id = c.column_id
WHERE class = 1 and t.name = 'ContactAddress'
AND CAST(value AS VARCHAR) LIKE 'ru-RU|%'

 

Александр, интересный пример. А есть ли аналог для JS?


 
addAllColumns: function(esq) {
	Terrasoft.each(this.columns, function(column, columnName) {
		if (column.type === Terrasoft.ViewModelColumnType.ENTITY_COLUMN) {
			if (!esq.columns.contains(columnName)) {
				esq.addColumn(columnName);
			}
		}
	}, esq);
},	

 

Нет, через JS такое невозможно. Это даже не таблицы базы bpm'online, а служебные таблицы на том же сервере БД.

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

Добрый день!

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

Может кто-то уже реализовывал такой кейс, подскажите как его можно сделать

 

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

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

1) Сделать мальнький бп на открытие страницы редактирования. 

2) В основном - считывать записи из детали и на каждого пользователя в записи запускать бп из п.1. при помощи AppScheduler

1) Сделать мальнький бп на открытие страницы редактирования. 

2) В основном - считывать записи из детали и на каждого пользователя в записи запускать бп из п.1. при помощи AppScheduler

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

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

"В процессе синхронизации произошла ошибка"

Отчет прикрепляю:

Model Name: Benefit_M503
Platform: Android
Platform Version: 5.1
Resolution: 360x640
UIVersion: UIV2
ApplicationVersion: 7.12.9
ApplicationMajorVersion: 7.12
BackgroundSyncMode: Always
ServerUrl: https://bpmstest.abiconnect.ru/
ContactId: a0469676-80b4-4b52-a740-8a5a1f72c5c2
CultureName: ru-RU
ApplicationRevision: null
WorkplaceCode: NPD01
ProductInfo: {"ProductName":"bpm'online","ProductEdition":"studio","CustomerId":"201712251022","Version":{"Major":7,"Minor":12,"Build":1,"Revision":924,"MajorRevision":0,"MinorRevision":924}}
CurrentDateTime: Tue Jul 17 2018 15:24:47 GMT+0300 (MSK)

Type: Terrasoft.SyncException 
Message: В процессе синхронизации произошла ошибка 
Stack trace: 
Function.Ext.define.statics.handleException(Terrasoft.Mobile.Combined.js:32396:34) 
Object.Ext.apply.callback(sencha-touch-all-debug.js:10397:26) 
Ext.define.callUserErrorHandler(Terrasoft.Mobile.Combined.js:26185:7) 
Object.Ext.apply.callback(sencha-touch-all-debug.js:10397:26) 
Ext.define.callFailure(Terrasoft.Mobile.Combined.js:25724:8) 
Object.Ext.apply.callback(sencha-touch-all-debug.js:10397:26) 
Function.Terrasoft.RequestManager.issueRequest.requestFnConfig.failure(Terrasoft.Mobile.Combined.js:40521:11) 
Object.Ext.apply.callback(sencha-touch-all-debug.js:10397:26) 
Object.config.requestItemFailure(Terrasoft.Mobile.Combined.js:39654:11) 
Ext.define.onRequestFailure(Terrasoft.Mobile.Combined.js:39422:12) 
Object.Ext.apply.callback(sencha-touch-all-debug.js:10397:26) 
null.<anonymous>(Terrasoft.Mobile.Combined.js:39658:9) 
Object.Ext.apply.callback(sencha-touch-all-debug.js:10397:26) 
Ext.define.executeCallbackIfNotCanceled(Terrasoft.Mobile.Combined.js:39903:8) 
Ext.define.failureHandler(Terrasoft.Mobile.Combined.js:39925:8) 
Object.Ext.apply.callback(sencha-touch-all-debug.js:10397:26) 
Ext.define.onComplete(sencha-touch-all-debug.js:36402:17) 
Ext.define.onStateChange(sencha-touch-all-debug.js:36338:18) 
XMLHttpRequest.<anonymous>(sencha-touch-all-debug.js:3233:27) 
Type: Terrasoft.ServerException 
Message: Запрос на сервер вернул ошибку 
AdditionalInfo: {"request":{"id":27,"headers":{"Accept":"application/json","Content-Type":"application/json","Authorization":"Cookie","X-Terrasoft-Mobile":true,"X-Requested-With":"XMLHttpRequest"},"options":{"isCancelable":true,"url":"https://bpmstest.abiconnect.ru/0/Mobile/Services/MobileCodeService.ashx…","success":null,"failure":null,"scope":{"asyncOperation":{"initConfig":null,"initialConfig":{"isCancelable":true,"asyncQueueId":null},"config":{"isCancelable":true,"asyncQueueId":null},"_isCancelable":true,"_asyncQueueId":null,"asyncManagerIsDisabled":true},"initialConfig":{"isCancelable":true,"url":"https://bpmstest.abiconnect.ru/0/Mobile/Services/MobileCodeService.ashx…","success":null,"failure":null,"scope":null,"onRequestCreate":null,"headers":{"Accept":"application/json","Content-Type":"application/json","Authorization":"Cookie","X-Terrasoft-Mobile":true},"method":"GET","disableCaching":false},"performanceCounterKey":"d94e002c-ed82-4549-8981-2404db92e317"},"onRequestCreate":null,"headers":{"Accept":"application/json","Content-Type":"application/json","Authorization":"Cookie","X-Terrasoft-Mobile":true},"method":"GET","disableCaching":false},"async":true},"requestId":27,"status":500,"statusText":"Internal Server Error","getResponseHeader":null,"getAllResponseHeaders":null,"responseText":"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\"/>\r\n<title>500 - \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.</title>\r\n<style type=\"text/css\">\r\n<!--\r\nbody{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}\r\nfieldset{padding:0 15px 10px 15px;} \r\nh1{font-size:2.4em;margin:0;color:#FFF;}\r\nh2{font-size:1.7em;margin:0;color:#CC0000;} \r\nh3{font-size:1.2em;margin:10px 0 0 0;color:#000000;} \r\n#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:\"trebuchet MS\", Verdana, sans-serif;color:#FFF;\r\nbackground-color:#555555;}\r\n#content{margin:0 0 0 2%;position:relative;}\r\n.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}\r\n-->\r\n</style>\r\n</head>\r\n<body>\r\n<div id=\"header\"><h1>\u041e\u0448\u0438\u0431\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430</h1></div>\r\n<div id=\"content\">\r\n <div class=\"content-container\"><fieldset>\r\n  <h2>500 - \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.</h2>\r\n  <h3>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c\u044b\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u043c; \u0440\u0435\u0441\u0443\u0440\u0441 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d.</h3>\r\n </fieldset></div>\r\n</div>\r\n</body>\r\n</html>\r\n","responseXML":null,"responseBytes":null} 

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

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

По результатам анализа, у Вас в приложении настроена аутентификация по NTLM-протоколу. К сожалению, на данный момент в мобильном приложении нет возможности работать при сквозной аутентификации по NTLM-протоколу (https://academy.terrasoft.ru/documents/studio/7-12/kak-nastroit-autentifikaciyu-windows#XREF_44889_NTLM) при открытии bpm'online приложения, так как в мобильной версии идет переход на страницу логина, а не на "ntlmlogin". Для работы в мобильной версии необходимо отключить (признак false) использование ключа "UsePathThroughAuthentication". Перед правками убедитесь, что в providerNames используется LDAP (https://academy.terrasoft.ru/documents/studio/7-12/chasto-zadavaemye-voprosy-po-sinhronizacii-s-ldap#XREF_37112)
Примечание. Рекомендуем изменять настройки приложения в нерабочее время. К сожалению, также отсутствует возможность в мобильном приложении использовать одновременно сквозную аутентификацию, минуя страницу входа, и вход по ссылке "Войти под доменным пользователем". Со своей стороны мы зафиксировали пожелание на доработку данной функциональности.

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

Добрый день. В БД sql server, есть таблица "VwSysCaseLog", для ведения логов изменений обращений, прошу проконсультировать:

1. Есть ли ещё подобные логи-таблицы в БД, связанные с обращениями, таблицой "Case"?

2. Если есть такие таблицы или представления, то можно ли будет их соединить через "JOIN" соединение с таблицей "Case" в запросе sql server?

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

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

Если в таблице включается логирование, в базе создаётся таблица с названием Sys...Log. Соответственно, для Case это будет SysCaseLog. Не знаю, откуда взялась VwSysCaseLog. Возможно, это уже какая-то доработка. Обычно в базе стараются с Vw начинать названия представлений (view), а не таблиц.

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

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

Вопрос по правам доступа в портале:

на текущий момент пользователь имеет доступ или к своим обращениям (где он заявитель) , или ко всем обращениям Контрагента

А можно самим принудительно (программно) сделать доступ только к обращениям, если в них указан определенный сервис ?
 

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

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

По идее, эта логика меняется в функции GetContactFilter страницы PortalServiceRequestsModulePage или PortalServiceRequestsGridPage. Возможно, в обеих местах. Нужно тестировать.

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