Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Значение <searchModeClassName>Что ищетКонфигурация и пример
ru.bgcrm.dao.message.MessageTypeSearchCustomerByTitleКонтрагента по наименованию, для любого типа сообщения.

Нет дополнительных параметров.

Пример:

Блок кода
languageruby
linenumbersfalse
messageType.1.search.2.title=Контрагент по названию
messageType.1.search.2.class=ru.bgcrm.dao.message.MessageTypeSearchCustomerByTitle
ru.bgcrm.dao.message.MessageTypeSearchEmailПоиск контрагента по Email для типа сообщения Email.

Нет дополнительных параметров.

Пример:

Блок кода
languageruby
linenumbersfalse
messageType.1.search.1.title=Авто по EMail
messageType.1.search.1.class=ru.bgcrm.dao.message.MessageTypeSearchEmail
ru.bgcrm.dao.message.MessageTypeSearchCallПоиск контрагента в базе BGCRM по номеру телефона звонящего для типа сообщения Call. Поиск производится по точному совпадению.
Блок кода
languagejava
linenumbersfalse
messageType.<id>.search.<searchModeId>.title=<title>
messageType.<id>.search.<searchModeId>.class=ru.bgcrm.dao.message.MessageTypeSearchCall
messageType.<id>.search.<searchModeId>.commands=<commands>
# необязательный параметр
messageType.<id>.search.<searchModeId>.stringExpressionNumberPreprocess=<jexl>

Где:

  • <commands> - команды разделённые точкой с запятой, в данный момент поддержана customerByPhoneParam:<paramId><paramIds>, где <paramId> <paramIds> - идентификатор параметра коды параметров типа "телефон" в биллинге через запятую;
  • <jexl> - JEXL выражение для предобработки номера перед поиском с его использованием, исходный номер передаётся переменной numberFrom.

Пример:

Блок кода
languageruby
linenumbersfalse
messageType.1.search.1.title=Авто контрагент (номер)
messageType.1.search.1.class=ru.bgcrm.dao.message.MessageTypeSearchCall
messageType.1.search.1.commands=customerByPhoneParam:10
messageType.1.search.1.stringExpressionNumberPreprocess=if( numberFrom.length() == 11 ){ numberFrom = numberFrom.substring(1)}; return numberFrom;
ru.bgcrm.plugin.bgbilling.dao.MessageTypeSearchEmailПоиск договора в базе BGBilling по EMail парамеру для типа сообщения EMail.
Блок кода
languageruby
linenumbersfalse
messageType.<id>.search.<searchModeId>.title=<title>
messageType.<id>.search.<searchModeId>.class=ru.bgcrm.plugin.bgbilling.dao.MessageTypeSearchEmail
messageType.<id>.search.<searchModeId>.billingId=<billingId>
messageType.<id>.search.<searchModeId>.paramIds=<paramIds>

Где:

  • <billingId> - идентификатор биллинга;
  • <paramIds> - коды параметров договора т ипа EMail через запятую.

Пример:

Блок кода
languageruby
linenumbersfalse
messageType.1.search.3.title=Договор по параметру EMail
messageType.1.search.3.class=ru.bgcrm.plugin.bgbilling.dao.MessageTypeSearchEmail
messageType.1.search.3.billingId=bitel
messageType.1.search.3.paramIds=7
ru.bgcrm.plugin.bgbilling.dao.MessageTypeSearchCallПоиск договора в базе BGBilling по номеру телефона звонящего для типа сообщения Call. Поиск производится по подстроке.
Блок кода
languagejava
linenumbersfalse
messageType.<id>.search.<searchModeId>.title=<title>
messageType.<id>.search.<searchModeId>.class=ru.bgcrm.plugin.bgbilling.dao.MessageTypeSearchCall
messageType.<id>.search.<searchModeId>.billingId=<billingId>
messageType.<id>.search.<searchModeId>.commands=<commands>
# необязательный параметр
messageType.<id>.search.<searchModeId>.stringExpressionNumberPreprocess=<jexl>

Где:

  • <billingId> - идентификатор биллинга;
  • <commands> - команды, в данный момент поддержана contractByPhoneParam:<paramId>, где <paramId> - идентификатор параметра типа "телефон" в биллинге;
  • <jexl> - JEXL выражение для предобработки номера перед поиском с его использованием, исходный номер передаётся переменной numberFrom.

Пример:

Блок кода
languagejava
linenumbersfalse
messageType.1.search.1.title=Авто (номер)
messageType.1.search.1.class=ru.bgcrm.plugin.bgbilling.dao.MessageTypeSearchCall
messageType.1.search.1.billingId=bg
messageType.1.search.1.commands=contractByPhoneParam:27
messageType.1.search.1.stringExpressionNumberPreprocess=if( numberFrom.length() == 11 ){ numberFrom = numberFrom.substring(1)}; return numberFrom;
ru.bgcrm.plugin.bgbilling.dao.MessageTypeSearchContractByTitleAndCommentПоиск договора в базе BGBilling по номеру и комментарию, для любого типа сообщения.

Блок кода
languageruby
linenumbersfalse
messageType.<id>.search.<searchModeId>.title=<title>
messageType.<id>.search.<searchModeId>.class=ru.bgcrm.plugin.bgbilling.dao.MessageTypeSearchContractByTitleAndComment
messageType.<id>.search.<searchModeId>.billingId=<billingId>

Где:

  • <billingId> - идентификатор биллинга.

Пример:

Блок кода
languageruby
linenumbersfalse
messageType.1.search.2.title=По номеру/примечанию
messageType.1.search.2.class=ru.bgcrm.plugin.bgbilling.dao.MessageTypeSearchContractByTitleAndComment
messageType.1.search.2.billingId=bg
ru.bgcrm.plugin.bgbilling.dao.MessageTypeSearchContractByDialUpLoginПоиск договора в базе BGBilling по логину либо алиасу DialUp модуля.
Блок кода
languageruby
linenumbersfalse
messageType.<id>.search.<searchModeId>.title=<title>
messageType.<id>.search.<searchModeId>.class=ru.bgcrm.plugin.bgbilling.dao.MessageTypeSearchContractByDialUpLogin
messageType.<id>.search.<searchModeId>.billingId=<billingId>
messageType.<id>.search.<searchModeId>.moduleId=<moduleId>

Где:

  • <billingId> - идентификатор биллинга;
  • <moduleId> - код экземпляра модуля DialUp.

Пример:

Блок кода
languageruby
linenumbersfalse
messageType.1.search.3.title=По логину DialUp
messageType.1.search.3.class=ru.bgcrm.plugin.bgbilling.dao.MessageTypeSearchContractByDialUpLogin
messageType.1.search.3.billingId=bg
messageType.1.search.3.moduleId=1

...

Блок кода
languagejava
linenumbersfalse
messageType.1.title=billing@bitel.ru
messageType.1.class=ru.bgcrm.dao.message.MessageTypeEmail
messageType.1.email=billing@bitel.ru
messageType.1.host=imap.ufamail.ru
messageType.1.login=billing@bitel.ru
messageType.1.pswd=*****
messageType.1.folderIn=INBOX
messageType.1.folderProcessed=INBOX.CRM_PROCESSED
messageType.1.folderSkipped=INBOX.CRM_SKIPPED
messageType.1.folderSent=INBOX.CRM_SENT
messageType.1.signExpression=NEW_LINE + user.getTitle() + NEW_LINE + "Служба технической поддержки" + NEW_LINE + "ОАО \"Инет\"" + NEW_LINE + "тел. 2232333" + NEW_LINE + "email. mastea@inet.ru" + NEW_LINE
messageType.1.mail.transport.protocol=smtp
messageType.1.mail.smtp.user=billing@bitel.ru
messageType.1.mail.smtp.host=smtp.ufamail.ru
messageType.1.mail.smtp.pswd=******
Быстрый ответ

Полученные по E-Mail уведомления о новых сообщениях процесса могут быть использованы для быстрого ответа на них. Для этого в тему уведомлений добавляется маркер QA:код сообщения. Быстрый ответ может быть произведён на любой тип сообщения и идентичен написанию ответа из интерфейса BGCRM. Пользователь идентифицируется по EMail, сохранённому в параметре типа EMail, код которого указывается в опции quickAnswerEmailParamId типа сообщения.

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

Отправка уведомлений в конфигурации типа процесса. На адрес EMail указанный в параметре исполнителей с кодом 21 отправляется письмо. В тему добавляется QA маркер для быстрого ответа.

Блок кода
languagejava
linenumbersfalse
onProcessEvent.5.events=messageAdded
onProcessEvent.5.doExpression=<<END
   text = "Новое сообщение в процессе, в котором вы числитесь исполнителем." + 
       NEW_LINE2 + "Сообщение:" + NEW_LINE +
       event.getMessage().getText() +
       NEW_LINE2 + "Открыть процесс: http://crm.office.bitel.ru/user/process#" + process.getId() +
       NEW_LINE2 + "Для быстрого ответа на сообщение ответьте на это письмо сохранив идентификатор в теме.";
    
   subject = "Новое сообщение в процессе  #" + process.getId() + 
      " [" + (process.getDescription().length() < 15 ? process.getDescription() : process.getDescription().substring(0, 15) + "..") + "] " +
      " QA:" + event.getMessage().getId(); 
   
   emailNotifyExecutors(21, subject, text);
END

Уведомление о назначении процесса на исполнителя с текстом входящих сообщений.

Блок кода
languagejava
linenumbersfalse
onProcessEvent.6.events=executorsChanged
onProcessEvent.6.doExpression=<<END
      text = "Изменён состав исполнителей процесса." + NEW_LINE2;
   
      searchResult = new("ru.bgcrm.model.SearchResult");
      searchResult.getPage().setPageIndex(-1); 
      dao = new("ru.bgcrm.dao.message.MessageDAO", conSet.getConnection());
      dao.searchMessageList(searchResult, process.getId(), null, 1, null, null, null, null, null, true);
      
      lastMsg = null;      
      for (m : searchResult.getList()) {
         if (lastMsg == null) lastMsg = m;       
  
         text += "Входящее сообщение #" + m.getId() + NEW_LINE;
         text +=  "##########################" + NEW_LINE;
         text +=  m.getText() +  NEW_LINE2;
       }
     
      subject = "#" + process.getId() + 
       " [" + (process.getDescription().length() < 30 ? process.getDescription() : process.getDescription().substring(0, 30) + "..") + "] ";
      if (lastMsg != null) subject += " QA:" + lastMsg.getId();
    
      emailNotifyExecutors(21, subject, text);
END

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

Блок кода
languagejava
linenumbersfalse
messageType.<id>.title=Наименование
messageType.<id>.class=ru.bgcrm.dao.message.MessageTypeEmail
...
messageType.<id>.quickAnswerEmailParamId=21

Сообщения Note

<messageTypeClassName>=ru.bgcrm.dao.message.MessageTypeNote.

...

По занятому номеру система определяет какой из пользователей получил звонок и открывает для него сообщение для обработки. Для включения данного функционала в переменной createOnStart конфигурации сервера должн быть указан класс ru.bgcrm.event.listener.MessageTypeCallListener.

"Поставщиком" звонков может, например, выступить плагин Asterisk либо звонок может быть зарегистрирован внешним HTTP запросом класса

Crm_javadoc
Nameru.bgcrm.event.listener.MessageTypeCallRegister
.

Документация BGCRM 3.0