Показ всплывающих изображений пользователям, указанным в параметре
Добрый день!
Установил расширение, которое по таймеру показывает всплывающие изображения (https://marketplace.terrasoft.ru/app/new-year-motivation-bpmonline)
Изменил скрипт, который сейчас показывает изображения пользователю, запустившему процесс:
var sender = "ShowImageScreen";
var userConnection = Get("UserConnection");
var messageText = string.Format("\"number\":{0}", UsrNumber.ToString());
messageText = '{' + messageText + '}';
MsgChannelUtilities.PostMessage(userConnection, sender, messageText);
return true;
Подскажите пожалуйста (как человеку неопытному в данной тематике), как переделать скрипт, чтобы изображение показывалось пользователю, указанному через параметр.
Заранее благодарю!
Нравится
Здравствуйте!
В клиентском модуле необходимо подписаться на данное сообщение. Например данное сообщение необходимо выводить в карточке контакта ContactPageV2
Тогда в данном модуле необходимо прописать следующее:
define("ContactPageV2", [], function() { return { entitySchemaName: "Contact", attributes: {}, modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/, details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/, businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/, messages:{}, methods: { init: function () { this.callParent(arguments); this.subscriptionFunction(); }, subscriptionFunction: function() { this.callParent(arguments); Terrasoft.ServerChannel.on(Terrasoft.EventName.ON_MESSAGE, this.onWebSocketListener, this); }, onWebSocketListener: function(scope, message) { if (message && message.Header.Sender === "ShowImageScreen") { var message2 = message.Body; if (!this.Ext.isEmpty(message2)) { this.Terrasoft.showInformation(message2); } return; } }, }, dataModels: /**SCHEMA_DATA_MODELS*/{}/**SCHEMA_DATA_MODELS*/, diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/ }; });
Нигрескул Алексей,
в нашем случае сообщение всплывает поверх всех открытых окон в bpm. Задача не стоит конкретно отображать сообщение в каком-либо разделе (в Вашем примере в контактах), а в самом скрипте прописать параметр, в который мы бы и задавали пользователя для отображения сообщения.
Насколько понимаю, MsgChannelUtilities.PostMessage взаимодействует только с текущим пользователем, выполняющим процесс. Ещё есть MsgChannelUtilities.PostMessageToAll(string sender, string message), см. обсуждение.