BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 24 сен 2021, 03:24

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
СообщениеДобавлено: 03 фев 2020, 16:49 
Не в сети

Зарегистрирован: 10 апр 2013, 13:29
Сообщения: 36
Карма: 1
В документации пишется о возможности: Модификация ответа сервера биллинга на запросы от ПС

Даже приведен пример. Только у меня компилятор постоянно ошибку выдает...
Что не так делаю то?
Может его не в динамический код?

Тогда куда добавить что значит: в скрипте при обработке события MPSBeforeRequestEvent?


Информация о версии:

Клиент: 7.2.273 / 30.01.2020 20:20:42
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_51
Сервер: 7.2.1139 / 30.01.2020 20:23:07
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_111

bill: 7.2.347 / 30.01.2020 20:23:29
card: 7.2.207 / 23.01.2020 03:53:42
inet: 7.2.682 / 30.01.2020 01:41:57
mps: 7.2.192 / 30.01.2020 20:23:47
npay: 7.2.179 / 10.11.2019 00:53:36
reports: 7.2.221 / 21.01.2020 03:37:43
robokassa: 7.2.25 / 22.01.2020 21:09:21
rscm: 7.2.170 / 30.01.2020 01:42:01
ru.bitel.bgbilling.plugins.dispatch: 7.2.48 / 23.01.2020 03:54:10

Окружение:

Клиент:
os: Windows 7 amd64, 6.1
java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_51
jre home: C:\Program Files\Java\jre1.8.0_51
memory (use/total/max): 37M/212M/455M
default tz: 03.02.2020 13:43 MSK +0300 (Europe/Moscow)
user tz: 03.02.2020 13:43 MSK +0300 (Europe/Moscow)
locale: ru_RU
Сервер:
os: Linux amd64, 4.9.0-8-amd64
java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_111
jre home: /opt/java/jdk1.8.0_111/jre
default tz: 03.02.2020 13:43 MSK +0300 (Europe/Moscow)
memory (use/total/max): 207M/791M/1820M
db time: master: 03.02.2020 13:43 MSK
db charset: connection: utf8(utf8_unicode_ci), database: utf8(utf8_unicode_ci)
locale: ru_RU
uptime: Started: 01.02.2020 21:49:12 Uptime: 1 d 15:53:55



Вложения:
mps.jpg
mps.jpg [ 175.02 КБ | Просмотров: 1467 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 фев 2020, 17:34 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6051
Карма: 244
эвенты разные в тайпинге генерика и в перегруженном методе onEvent

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 фев 2020, 21:08 
Не в сети

Зарегистрирован: 10 апр 2013, 13:29
Сообщения: 36
Карма: 1
Все получилось. В доке ошибка, или опечатка... это факт.

На всякий случай поделюсь опытом.
Самая путевая инструкция здесь.

Допишу только самое главное, последовательность, что и где :D

    1. Конфигурации MPS добавляем или меняем строчку:
    mps.1.protocol.ext=osmpField

    2. Автоматизация->Сервис->Управление динамическим кодом пишем обработчик:
    import java.math.BigDecimal;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.Calendar;

    import bitel.billing.server.contract.bean.Contract;
    import bitel.billing.server.contract.bean.ContractManager;
    import bitel.billing.server.contract.bean.ContractParameterManager;
    import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase;
    import ru.bitel.bgbilling.modules.mps.server.events.MPSOSMPRequestEvent;
    import ru.bitel.bgbilling.server.util.Setup;
    import ru.bitel.common.Utils;
    import ru.bitel.common.sql.ConnectionSet;

    public class OSMPRequestHandler
    extends EventScriptBase<MPSOSMPRequestEvent>
    {
    //код параметра договора ФИО
    private static final int FIO_PID = 1;
    //код параметра договора Адрес
    private static final int ADR_PID = 2;

    @Override
    public void onEvent( MPSOSMPRequestEvent event, Setup setup, ConnectionSet set )
    throws Exception
    {
    String contractTitle = event.getRequest().getNumber();

    Connection con = set.getConnection();
    ContractParameterManager cpm = new ContractParameterManager( con );
    ContractManager cm = new ContractManager( con );

    //исходящий остаток абонента
    Calendar c = Calendar.getInstance();
    Contract contract = cm.getContractByTitle( contractTitle );
    BigDecimal saldo = BigDecimal.ZERO;

    String query = "select summa1 + summa2 - summa3 - summa4 as saldo from contract_balance where cid=" + contract.getId() + " and yy=" + c.get( Calendar.YEAR ) + " and mm=" + (c.get( Calendar.MONTH ) + 1);
    try(Statement st = con.createStatement();ResultSet rs = st.executeQuery( query ))
    {
    if(rs.next())
    {
    saldo = rs.getBigDecimal( "saldo" );
    }
    }
    //Формат строки name1:type1:value1;name2:type2:value2;...;nameN:typeN:valueN
    //тип можно не указывать, если предполагается, что поле должно отображаться на
    //экране терминала (т.е. тип disp), тогда формат name:value. Разделитель полей - ";", разделитель
    //компонентов поля - ":"
    StringBuilder sb = new StringBuilder();
    sb.append( "fio:" + cpm.getStringParam( contract.getId(), FIO_PID ) + ";" );
    sb.append( "address:" + cpm.getStringParam( contract.getId(), ADR_PID ) + ";" );
    sb.append( "ballance:" + Utils.formatBigDecimalSumm( saldo ) + ";" );
    event.getParameters().put( "fields", sb.toString() );
    }
    }

    Сохраняем и компилируем.

    3. Заходим в Сервис->Автоматизация->Глобальные функции поведения. На закладке Классы Java, добавляем в обработчик "Перед обработкой запроса ОСМП" Класс обработчика: наш OSMPRequestHandler. И сохряняем.

Алле ОП! Все просто... все работает...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 фев 2020, 00:41 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6051
Карма: 244
в доке копипастом видимо копировали и недосмотрели

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 фев 2020, 01:12 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5837
Карма: 472
Код:
String query = "select summa1 + summa2 - summa3 - summa4 as saldo from contract_balance where cid=" + contract.getId() + " and yy=" + c.get( Calendar.YEAR ) + " and mm=" + (c.get( Calendar.MONTH ) + 1);

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

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 фев 2020, 11:29 
Не в сети

Зарегистрирован: 10 апр 2013, 13:29
Сообщения: 36
Карма: 1
Цитата:
Код:
String query = "select summa1 + summa2 - summa3 - summa4 as saldo from contract_balance where cid=" + contract.getId() + " and yy=" + c.get( Calendar.YEAR ) + " and mm=" + (c.get( Calendar.MONTH ) + 1);

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


Совершенно верно. Поэтому упростим скрипт, усложним запрос, и опять - Улле -ОП! :)


import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import bitel.billing.server.contract.bean.Contract;
import bitel.billing.server.contract.bean.ContractManager;
import bitel.billing.server.contract.bean.ContractParameterManager;
import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase;
import ru.bitel.bgbilling.modules.mps.server.events.MPSOSMPRequestEvent;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.Utils;
import ru.bitel.common.sql.ConnectionSet;

public class OSMPRequestHandler
extends EventScriptBase<MPSOSMPRequestEvent>
{
//код параметра договора ФИО
private static final int FIO_PID = 1;
//код параметра договора Адрес
private static final int ADR_PID = 2;

@Override
public void onEvent( MPSOSMPRequestEvent event, Setup setup, ConnectionSet set )
throws Exception
{
String contractTitle = event.getRequest().getNumber();

Connection con = set.getConnection();
ContractParameterManager cpm = new ContractParameterManager( con );
ContractManager cm = new ContractManager( con );

//исходящий остаток абонента
Contract contract = cm.getContractByTitle( contractTitle );
BigDecimal saldo = BigDecimal.ZERO;

//String query = "select summa1 + summa2 - summa3 - summa4 as saldo from contract_balance where cid=" + contract.getId() + " and yy=" + c.get( Calendar.YEAR ) + " and mm=" + (c.get( Calendar.MONTH ) + 1);
String query = "select summa1 + summa2 - summa3 - summa4 as saldo from contract_balance CB where CB.cid=" + contract.getId() + " and CB.yy=(select max(yy) from contract_balance where cid=CB.cid) and CB.mm=(select max(mm) from contract_balance where cid=CB.cid and yy=CB.yy)";
try(Statement st = con.createStatement();ResultSet rs = st.executeQuery( query ))
{
if(rs.next())
{
saldo = rs.getBigDecimal( "saldo" );
}
}
//Формат строки name1:type1:value1;name2:type2:value2;...;nameN:typeN:valueN
//тип можно не указывать, если предполагается, что поле должно отображаться на
//экране терминала (т.е. тип disp), тогда формат name:value. Разделитель полей - ";", разделитель
//компонентов поля - ":"
StringBuilder sb = new StringBuilder();
sb.append( "fio:" + cpm.getStringParam( contract.getId(), FIO_PID ) + ";" );
sb.append( "address:" + cpm.getStringParam( contract.getId(), ADR_PID ) + ";" );
sb.append( "ballance:" + Utils.formatBigDecimalSumm( saldo ) + ";" );
event.getParameters().put( "fields", sb.toString() );
}
}


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 фев 2020, 12:26 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5837
Карма: 472
Использовать deprecated эвенты может быть себе дороже.
Так лучше на мой взгляд
Код:
import org.apache.log4j.Logger;
import ru.bitel.bgbilling.kernel.container.managed.ServerContext;
import ru.bitel.bgbilling.kernel.contract.api.common.bean.Contract;
import ru.bitel.bgbilling.kernel.contract.api.common.service.ContractService;
import ru.bitel.bgbilling.kernel.contract.balance.common.BalanceService;
import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase;
import ru.bitel.bgbilling.modules.mps.server.events.MPSBeforeRequestEvent;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;

import java.math.BigDecimal;
import java.sql.Connection;
import java.util.Calendar;

public class OSMPRequestHandler
        extends EventScriptBase<MPSBeforeRequestEvent> {

    private final static Logger logger = Logger.getLogger(OSMPRequestHandler.class);

    @Override
    public void onEvent(MPSBeforeRequestEvent event, Setup setup, ConnectionSet connectionSet)
            throws Exception {
        Calendar now = Calendar.getInstance();
        ServerContext serverContext = ServerContext.get();
        ContractService contractService = serverContext.getService(ContractService.class, 0);
        BalanceService balanceService = serverContext.getService(BalanceService.class, 0);
        Contract contract = contractService.contractGet(event.getContractId());

        BigDecimal balance = balanceService.contractBalanceGet(contract.getId(), now.get(Calendar.YEAR), now.get(Calendar.MONTH) + 1).toBalance();
        StringBuilder sb = new StringBuilder();
        sb.append("fio:" + contractService.contractParameterGet(contract.getId(), FIO_PID) == null ? "" : contractService.contractParameterGet(contract.getId(), FIO_PID).toString() + ";");
        sb.append("address:" + contractService.contractParameterGet(contract.getId(), ADR_PID) == null ? "" : contractService.contractParameterGet(contract.getId(), ADR_PID).toString() + ";");
        sb.append("ballance:" + Utils.formatBigDecimalSumm(balance) + ";");
        event.getParameters().put("fields", sb.toString());
    }
}

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 фев 2020, 16:02 
Не в сети

Зарегистрирован: 10 апр 2013, 13:29
Сообщения: 36
Карма: 1
Да, отлично. Проверил тоже работает. Хорошая реализация :)

Код:
import org.apache.log4j.Logger;
import ru.bitel.bgbilling.kernel.container.managed.ServerContext;
import ru.bitel.bgbilling.kernel.contract.api.common.bean.Contract;
import ru.bitel.bgbilling.kernel.contract.api.common.service.ContractService;
import ru.bitel.bgbilling.kernel.contract.balance.common.BalanceService;
import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase;
import ru.bitel.bgbilling.modules.mps.server.events.MPSBeforeRequestEvent;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;
import ru.bitel.common.Utils;

import java.math.BigDecimal;
import java.sql.Connection;
import java.util.Calendar;

public class OSMPRequestHandler2
        extends EventScriptBase<MPSBeforeRequestEvent> {
   //код параметра договора ФИО
   private static final int FIO_PID = 1;
   //код параметра договора Адрес
   private static final int ADR_PID = 2;
    private final static Logger logger = Logger.getLogger(OSMPRequestHandler.class);

    @Override
    public void onEvent(MPSBeforeRequestEvent event, Setup setup, ConnectionSet connectionSet)
            throws Exception {
        Calendar now = Calendar.getInstance();
        ServerContext serverContext = ServerContext.get();
        ContractService contractService = serverContext.getService(ContractService.class, 0);
        BalanceService balanceService = serverContext.getService(BalanceService.class, 0);
        Contract contract = contractService.contractGet(event.getContractId());

        BigDecimal balance = balanceService.contractBalanceGet(contract.getId(), now.get(Calendar.YEAR), now.get(Calendar.MONTH) + 1).toBalance();
        StringBuilder sb = new StringBuilder();
        sb.append("fio:" + contractService.contractParameterGet(contract.getId(), FIO_PID) == null ? "" : contractService.contractParameterGet(contract.getId(), FIO_PID).toString() + ";");
        sb.append("address:" + contractService.contractParameterGet(contract.getId(), ADR_PID) == null ? "" : contractService.contractParameterGet(contract.getId(), ADR_PID).toString() + ";");
        sb.append("ballance:" + Utils.formatBigDecimalSumm(balance) + ";");
        event.getParameters().put("fields", sb.toString());
    }
}


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 фев 2020, 16:56 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4482
Откуда: Уфа, Россия
Карма: 186
есть событие MPSBeforeResponseEvent оно тут уместнее было бы

из него доступен MPSResponse а в нем есть Contract...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 фев 2020, 19:17 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5837
Карма: 472
Тоже как вариант. Не пользуюсь и брал из доки по MPS событие.

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 апр 2020, 11:58 
Не в сети

Зарегистрирован: 05 сен 2018, 13:33
Сообщения: 5
Карма: 0
Здравствуйте. Подключаю MPS к Сбербанку, протокол sbrf.
при использовании в конфигурации
Код:
mps.2.protocol=sbrf
mps.2.param.keys=sum,fio,address
mps.2.sum=300.00
mps.2.fio=2
mps.2.address=3

в ответ добавляются теги
Код:
<FIO>Тестовый клиент</FIO>
<ADDRESS>Адрес подключения тестового клиента</ADDRESS>
<SUM>300</SUM>

в документации написано, что <SUM> можно менять программно в обработчике события, но при использовании протокола sbrf не вызываются события
MPSBeforeRequestEvent и MPSBeforeResponseEvent (в протоколе osmp вызывается только MPSBeforeResponseEvent)

каким образом можно поменять значение рекомендуемой суммы в протоколе sbrf?

версии:
Информация о версии:

Клиент: 8.0.306 / 27.03.2020 18:25:19
os: Windows 10; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_231
Сервер: 8.0.1175 / 27.03.2020 18:25:19
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_152

bill: 8.0.361 / 27.03.2020 18:25:19
card: 8.0.209 / 13.02.2020 22:31:25
inet: 8.0.700 / 27.03.2020 18:25:20
mps: 8.0.195 / 25.02.2020 01:05:17
npay: 8.0.182 / 10.03.2020 18:04:19
reports: 8.0.231 / 18.03.2020 03:31:42
rscm: 8.0.173 / 04.03.2020 20:24:51
sberbank: 8.0.52 / 12.02.2020 18:00:19
yamoney: 8.0.67 / 24.03.2020 13:32:31

Окружение:

Клиент:
os: Windows 10 amd64, 10.0
java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_231
jre home: C:\Program Files\Java\jre1.8.0_231
memory (use/total/max): 87M/235M/1820M
default tz: 08.04.2020 13:54 IRKT +0800 (Asia/Irkutsk)
user tz: 08.04.2020 13:54 IRKT +0800 (Asia/Irkutsk)
locale: en_US
Сервер:
os: Linux amd64, 3.10.0-693.11.6.el7.x86_64
java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_152
jre home: /usr/java/jdk1.8.0_152/jre
default tz: 08.04.2020 13:53 IRKT +0800 (Asia/Irkutsk)
memory (use/total/max): 238M/491M/491M
db time: master: 08.04.2020 13:53 +08
db charset: connection: utf8(utf8_general_ci), database: utf8(utf8_unicode_ci)
ВНИМАНИЕ: кодировки в коннекшене к БД не соответствуют кодировкам БД
locale: en_US
uptime: Started: 02.04.2020 10:45:07 Uptime: 6 d 03:08:27


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 апр 2020, 00:20 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5837
Карма: 472
Код:
db charset: connection: utf8(utf8_general_ci), database: utf8(utf8_unicode_ci)
ВНИМАНИЕ: кодировки в коннекшене к БД не соответствуют кодировкам БД

Плохо же вот это вот.
Мой вам совет исправить пока не поздно.

В протоколе sbrf надо привязываться к MPSSbrfSumEvent
Оно в Сервис - Автоматизация - Функции глобальных событий
Изображение

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 апр 2020, 12:10 
Не в сети

Зарегистрирован: 05 сен 2018, 13:33
Сообщения: 5
Карма: 0
Phricker писал(а):
В протоколе sbrf надо привязываться к MPSSbrfSumEvent

Спасибо, событие работает, но я не могу понять как получить в нём договор, чтобы вытащить из него месячную абонплату и подставить её в ответ


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 апр 2020, 15:38 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6051
Карма: 244
.getContractId() же

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 апр 2020, 06:21 
Не в сети

Зарегистрирован: 05 сен 2018, 13:33
Сообщения: 5
Карма: 0
dimOn писал(а):
.getContractId() же

Метод возвращает 0 или -1, сейчас не могу точно посмотреть. Но не актуальный договор


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 апр 2020, 16:28 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6051
Карма: 244
туда действительно не передаётся актуальный cid, может недоступен в том контексте, надо смотреть, пишите в HD

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 12 апр 2020, 05:42 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4482
Откуда: Уфа, Россия
Карма: 186
а с чего вы решили что в sbrf не события MPSBeforeResponseEvent?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 апр 2020, 09:49 
Не в сети

Зарегистрирован: 05 сен 2018, 13:33
Сообщения: 5
Карма: 0
skn писал(а):
а с чего вы решили что в sbrf не события MPSBeforeResponseEvent?

эмпирически. есть класс
Код:
public class MPSBeforeResponseScript
    extends EventScriptBase<MPSBeforeResponseEvent>
{
    protected static final Logger log = Logger.getLogger( MPSBeforeResponseEvent.class );
   
    @Override
    public void onEvent( MPSBeforeResponseEvent event, Setup setup, ConnectionSet set )
        throws Exception
    {
        log.info("~~~~~~~~~~~~~~~~~~~ Resp! ~~~~~~~~~~~~~~~~~~~~~~~");
    }

}

есть привязка к событию скриншот во вложении

при использовании протокола osmp в логах вижу сообщение, при использовании sbrf - нет


Вложения:
resp.png
resp.png [ 5.2 КБ | Просмотров: 1039 ]
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.065s | 56 Queries | GZIP : On ]