Стандартный скрипт обработки входящей почты

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

Параметры стандартного скрипта обработки почты

Параметры являются вспомогательными. Для их корректной работы они должны быть объявлены и использованы в скрипте.

 
Название параметра Описание Возможное значение
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 Код атрибута запроса

Логика работы стандартного скрипта обработки почты

Выполняется проверка, было ли полученное письмо отклонено системой при первоначальной обработке (возможные причины отклонения, см. Методы API).

Если письмо отклонено, то:

  1. Отправитель письма уведомляется о том, что письмо было отклонено с указанием причины отклонения. Уведомление отправляется на email-адрес отправителя.
  2. Работа скрипта завершается с сообщением об ошибке.

Поиск запроса по номеру. Запрос найден

Выполняется поиск запроса по номеру в теме письма с учетом префикса (SCALL_CHAR) и необходимости поиска (SEARCH_SC).

Если запрос был найден, то полученное письмо прикрепляется к запросу.

  1. Выполняется поиск сотрудника. Если сотрудник найден, то к запросу добавляется:
    • файл с полученным письмом в формате .eml (ATTACH_MESSAGE).
    • файлы из вложений полученного письма.
    • комментарий, автором которого назначить найденного сотрудника (ADD_COMMENT). В качестве текста комментария можно установить:
      • тело письма в формате HTML, если такой формат присутствует; иначе:
      • тело письма в текстовом формате, преобразованное в формат HTML.
  2. Отправителю письма отправляется уведомление об успешном прикреплении файла к запросу, с указанием номера запроса.

Если сотрудник не найден, то на e-mail отправителя отсылается уведомление о том, что отправитель не может быть идентифицирован.

Поиск запроса не производился или запрос не найден

Если поиск запроса не производился или запрос не найден, то создается новый запрос (CREATE_NEW_SC):

  1. Выполняется поиск сотрудника:
    • Если сотрудник не найден, работа скрипта завершается с сообщением об ошибке.
    • Если сотрудник найден, то данный сотрудник устанавливается в качестве контрагента запроса.
  2. Устанавливаются параметры запроса:
    • контактное лицо запроса — значение атрибута "Наименование" контрагента запроса.
    • контактный телефон запроса — значение атрибута "Список телефонов" контрагента запроса.
    • контактный email запроса — значение атрибута "Адрес электронной почты" контрагента запроса.
  3. Выполняется поиск соглашения для запроса:
    • Если контрагент запроса не является получателем ни одного соглашения, то работа скрипта завершается с сообщением об ошибке.
    • Если контрагент запроса является получателем одного соглашения, используется данное соглашение.
    • Если контрагент запроса является получателем нескольких соглашений, то выполняется проверка наличия среди них соглашения, значение атрибута "Уникальный номер" которого совпадает с параметром AGREEMENT_INVENTORY_NUMBER:
      • если такое соглашение присутствует, то используется данное соглашение.
      • если такое соглашение не найдено, то работа скрипта завершается с сообщением об ошибке.
  4. Выполняется поиск услуги для запроса:
    • Если с соглашением запроса не связано ни одной услуги, то работа скрипта завершается с сообщением об ошибке.
    • Если с соглашением запроса связана одна услуга, используется данная услуга.
    • Если с соглашением запроса связано нескольких услуг, то выполняется проверка наличия среди них услуги, значение атрибута "Уникальный номер" которой совпадает с параметром SERVICE_INVENTORY_NUMBER:
      • если такая услуга присутствует, то используется данная услуга.
      • если такая услуга не найдена, то работа скрипта завершается с сообщением об ошибке.
  5. Устанавливаются параметры запроса:
    • тип запроса — тип, соответствующий 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.
  6. Создается запрос с вышеуказанными атрибутами.
  7. К запросу добавляется:
    • файл с полученным письмом в формате .eml (ATTACH_MESSAGE).
    • файлы из вложений полученного письма.
  8. Инициируется событие "Поступление письма".
  9. Отправителю письма отправляется уведомление о регистрации запроса с указанием номера запроса.

Запрос найден или создан

Возможно изменение статуса запроса (CHANGE_STATE) на статус, код которого указан в параметре NEW_STATE.

Возможно установить ответственного за запрос (SET_RESPONSIBLE):

  • Сотрудника, атрибут "Уникальный идентификатор" которого совпадает со значением параметра RESPONSIBLE_EMPLOYEE.

    Если объект с заданным идентификатором не существует, или данный объект не относится к классу "Сотрудник" (employee), работа скрипта завершается с сообщением об ошибке.

  • Команду, атрибут "Уникальный идентификатор" которой совпадает со значением параметра RESPONSIBLE_TEAM.

    Если объект с заданным идентификатором не существует, или данный объект не относится к классу "Команда" (team), работа скрипта завершается с сообщением об ошибке.

Дополнительные условия:

  • При отправке электронных сообщений скрипт проверяет, что email-адрес получателя и email-адрес системы отличаются.