Показ всплывающих изображений пользователям, указанным в параметре
Добрый день!
Установил расширение, которое по таймеру показывает всплывающие изображения (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), см. обсуждение.