Стандартный скрипт обработки входящей почты
При создании правила может использоваться стандартный скрипт обработки почты.
Параметры стандартного скрипта обработки почты
Параметры являются вспомогательными. Для их корректной работы они должны быть объявлены и использованы в скрипте.
Название параметра | Описание | Возможное значение |
---|---|---|
SCALL_CHAR | Префикс, который ожидается перед номером запроса в теме полученного письма | Символ, возможно, пустой |
SEARCH_SC | Признак необходимости поиска запроса с последующим прикреплением письма к нему | Логическое значение |
EMPLOYEE_TYPES | Типы сотрудников, которые могут становиться контрагентами создаваемого запроса, а также сотрудников, чьи письма могут прикрепляться к существующему запросу. Если типы сотрудников не указаны, ограничений на типы сотрудников нет. | Коды типов класса "Сотрудник" (employee) |
DEFAULT_EMPLOYEE_NAME | Фамилия служебного сотрудника, который будет назначен контрагентом создаваемого запроса, если контрагент не может быть определен по отправителю письма | Строка |
ATTACH_MESSAGE | Признак необходимости добавления письма в формате .eml к найденному запросу. | Логическое значение |
ADD_COMMENT | Признак необходимости добавления комментария с текстом письма к найденному запросу | Логическое значение |
CREATE_NEW_SC | Признак необходимости создания запроса по данным полученного письма | Логическое значение |
SENDER_2_TYPE_CODE | Правило определения соответствия email-адреса отправителя письма типу создаваемого запроса | Ассоциативный массив, ключами которого являются email-адреса, значениями — коды типов запроса. |
DEFAULT_TYPE_CODE | Тип создаваемого запроса в случае, если тип запроса не удалось определить по email-адресу отправителя | Код типа запроса |
AGREEMENT_INVENTORY_NUMBER | Уникальный номер соглашения, которое будет установлено для создаваемого запроса в случае, если сотрудник-контрагент является получателем более чем одного соглашения | Значение атрибута "Уникальный номер" соглашения |
SERVICE_INVENTORY_NUMBER | Уникальный номер услуги, которая будет установлена для создаваемого запроса в случае, если с соглашением запроса связана более чем одна услуга | Значение атрибута "Уникальный номер" услуги |
IMPACT_CODE | Уровень влияния, который будет установлен для создаваемого запроса | Код элемента справочника "Уровни влияния" |
URGENCY_CODE | Уровень срочности, который будет установлен для создаваемого запроса | Код элемента справочника "Уровни срочности" |
REQUEST_WAY_ATTR | Атрибут-способ обращения | Код атрибута "Способ обращения" типа "Элемент справочника" запроса |
REQUEST_WAY_VALUE | Способ обращения. | Код элемента "По почте" справочника способов обращения |
REQUEST_WAY_CATALOG | Справочник способов обращения | Код справочника, содержащий способы обращения |
CHANGE_STATE | Состояния обработчика, в которых изменяется статус запроса | Список, который может содержать состояния "Запрос найден", "Запрос создан" |
NEW_STATE | Статус, в который будет переведен запрос | Код статуса запроса |
SET_RESPONSIBLE | Состояния обработчика, в которых устанавливается ответственный за запрос | Список, который может содержать состояния "Запрос найден", "Запрос создан" |
RESPONSIBLE_EMPLOYEE | Сотрудник, назначаемый ответственным за запрос | Уникальный идентификатор сотрудника, который будет назначен ответственным за запрос |
RESPONSIBLE_TEAM | Команда, назначаемая ответственной за запрос | Уникальный идентификатор команды, которая будет назначена ответственной за запрос |
LOGGING_IS_ENABLED | Состояние логирования событий обработчика | Логическое значение |
RICH_DESCR_ATTR_CODE | Атрибут "Описание запроса" в формате RTF | Код атрибута запроса |
Логика работы стандартного скрипта обработки почты
Выполняется проверка, было ли полученное письмо отклонено системой при первоначальной обработке
Если письмо отклонено, то:
- Отправитель письма уведомляется о том, что письмо было отклонено с указанием причины отклонения. Уведомление отправляется на email-адрес отправителя.
- Работа скрипта завершается с сообщением об ошибке.
Поиск запроса по номеру. Запрос найден
Выполняется поиск запроса по номеру в теме письма с учетом префикса (SCALL_CHAR) и необходимости поиска (SEARCH_SC).
Если запрос был найден, то полученное письмо прикрепляется к запросу.
- Выполняется поиск сотрудника. Если сотрудник найден, то к запросу добавляется:
- файл с полученным письмом в формате .eml (ATTACH_MESSAGE).
- файлы из вложений полученного письма.
- комментарий, автором которого назначить найденного сотрудника (ADD_COMMENT). В качестве текста комментария можно установить:
- тело письма в формате HTML, если такой формат присутствует; иначе:
- тело письма в текстовом формате, преобразованное в формат HTML.
- Отправителю письма отправляется уведомление об успешном прикреплении файла к запросу, с указанием номера запроса.
Если сотрудник не найден, то на e-mail отправителя отсылается уведомление о том, что отправитель не может быть идентифицирован.
Поиск запроса не производился или запрос не найден
Если поиск запроса не производился или запрос не найден, то создается новый запрос (CREATE_NEW_SC):
- Выполняется поиск сотрудника:
- Если сотрудник не найден, работа скрипта завершается с сообщением об ошибке.
- Если сотрудник найден, то данный сотрудник устанавливается в качестве контрагента запроса.
- Устанавливаются параметры запроса:
- контактное лицо запроса — значение атрибута "Наименование" контрагента запроса.
- контактный телефон запроса — значение атрибута "Список телефонов" контрагента запроса.
- контактный email запроса — значение атрибута "Адрес электронной почты" контрагента запроса.
- Выполняется поиск соглашения для запроса:
- Если контрагент запроса не является получателем ни одного соглашения, то работа скрипта завершается с сообщением об ошибке.
- Если контрагент запроса является получателем одного соглашения, используется данное соглашение.
- Если контрагент запроса является получателем нескольких соглашений, то выполняется проверка наличия среди них соглашения, значение атрибута "Уникальный номер" которого совпадает с параметром AGREEMENT_INVENTORY_NUMBER:
- если такое соглашение присутствует, то используется данное соглашение.
- если такое соглашение не найдено, то работа скрипта завершается с сообщением об ошибке.
- Выполняется поиск услуги для запроса:
- Если с соглашением запроса не связано ни одной услуги, то работа скрипта завершается с сообщением об ошибке.
- Если с соглашением запроса связана одна услуга, используется данная услуга.
- Если с соглашением запроса связано нескольких услуг, то выполняется проверка наличия среди них услуги, значение атрибута "Уникальный номер" которой совпадает с параметром SERVICE_INVENTORY_NUMBER:
- если такая услуга присутствует, то используется данная услуга.
- если такая услуга не найдена, то работа скрипта завершается с сообщением об ошибке.
- Устанавливаются параметры запроса:
- тип запроса — тип, соответствующий email-адрес отправителя письма (SENDER_2_TYPE_CODE). Если тип запроса определить не удалось, используется тип по умолчанию (DEFAULT_TYPE_CODE).
описание запроса:
- если тело письма заполнено, то выводится тело письма в текстовом формате.
- если тело письма пусто — строка "Описание запроса".
если установлен параметр RICH_DESCR_ATTR_CODE, в качестве описания запроса в формате RTF (атрибут с кодом из RICH_DESCR_ATTR_CODE) установить тело письма в формате HTML.
- часовой пояс запроса — значение по умолчанию атрибута "Часовой пояс" (timeZone) типа запроса (если оно определено). Иначе часовой пояс сервера (если есть возможность его определить) или часовой пояс GMT.
- уровень влияния запроса — элемент справочника "Уровни влияния" с кодом из параметра IMPACT_CODE.
- уровень срочности запроса — элемент справочника "Уровни срочности" с кодом из параметра URGENCY_CODE.
- способ обращения запроса — если атрибут с кодом из параметра REQUEST_WAY_ATTR определен в типе запроса, то в качестве значения указывается элемент с кодом из параметра REQUEST_WAY_VALUE справочника с кодом из параметра REQUEST_WAY_CATALOG.
- Создается запрос с вышеуказанными атрибутами.
- К запросу добавляется:
- файл с полученным письмом в формате .eml (ATTACH_MESSAGE).
- файлы из вложений полученного письма.
- Инициируется событие "Поступление письма".
- Отправителю письма отправляется уведомление о регистрации запроса с указанием номера запроса.
Запрос найден или создан
Возможно изменение статуса запроса (CHANGE_STATE) на статус, код которого указан в параметре NEW_STATE.
Возможно установить ответственного за запрос (SET_RESPONSIBLE):
-
Сотрудника, атрибут "Уникальный идентификатор" которого совпадает со значением параметра RESPONSIBLE_EMPLOYEE.
Если объект с заданным идентификатором не существует, или данный объект не относится к классу "Сотрудник" (employee), работа скрипта завершается с сообщением об ошибке.
-
Команду, атрибут "Уникальный идентификатор" которой совпадает со значением параметра RESPONSIBLE_TEAM.
Если объект с заданным идентификатором не существует, или данный объект не относится к классу "Команда" (team), работа скрипта завершается с сообщением об ошибке.
Дополнительные условия:
- При отправке электронных сообщений скрипт проверяет, что email-адрес получателя и email-адрес системы отличаются.