Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Раздел “Настройки” - “Спам-фильтр” позволяет установить фильтр нежелательных сообщений для выбранного типа канала с помощью регулярных выражений.

...

Описание функциональности

Пользователь системы добавляет регулярные выражения (в дальнейшем РВ) для каждого типа канала в отдельности. Система проверяет все входящие сообщения на предмет того, удовлетворяют ли они заданным РВ.

  • Если сообщение попадает под условия фильтрации, то запрос сразу закрывается со статусом “Закрыт без ответа” и он не попадает во входящие к оператору.

  • Если сообщение не попадает под условия фильтрации, то происходит стандартный разбор сообщения и поиск ответа на него в подключенных БЗ.

Проверяются Выполняется проверка только первые первого сообщения от пользователя до тех пор, пока диалог не попал к оператору. Если диалог уже находится во входящих у оператора или оператор взял его в работу, то такие сообщения не проверяются, а приходят как обычно.

Интерфейс

...

 

  1. Область со списком добавленных РВ.

  2. Область для проверки, соответствует ли введенный текст добавленным выражениям.

...

В истории сообщений можно посмотреть, что отфильтрованные сообщения находятся со статусом “Закрыт без ответа”.

...

Примеры регулярных выражений

Смысл/задача

РВ

Отфильтровать определенное слово + спецсимволы после и смайлики, например, “участвую”

Code Block
^(([уУ][чЧ][аА][вВ]?[сС][тТ][вВ][уУ][юЮ])[^0-9A-Za-zА-Яа-я]*)+$

Отфильтровать перечисление упоминаний в канале через @ , чаще всего для Instagram

Code Block
^((@[a-zA-Z0-9._]+)\s*)+$

Отфильтровать определенные смайлики без текста в строке

  • Code Block
    ^[❤🔥♥♻☺✌✨💐😁]+$ - перечисление определенных смайлов
  • Code Block
    ^[😀-🙏]+$ - указание диапазона

Отфильтровать только смайлики (самые распространенные)

Code Block
^([❤️❤🔥♥♻☺✌✨👨‍🔧💐😁]|[😀-🙏]|[🌀-🔟]|[🤍-🪕])+$

Отфильтровать все единичные слова, кроме “хочу” со знаком “?” в конце.
Т.е. попадут во входящие: хочу, сколько?, хочу купить и т.д.. И не попадут: круто!, отлично), класс и т.д.

Code Block
^\s*(?!хочу|ХОЧУ|Хочу)([а-яА-Я]*)[^\?\s\w]*?$

Отфильтровать только ссылки вида:

Code Block
^(https?:\/\/[-\w;\/?:@&=+$\|\_.!~*\|'()\[\]%#,☺]+[\w\/#](\(\))?)(?=$|[\s',\|\(\).:;?\-\[\]>\)])$

Отфильтровать сообщения, содержащие определенные слова, например “отпуск” или “вдохновение”.

Code Block
([оО][тТ][пП][уУ][сС][кК])|([вВ][дД][оО][хХ][нН][оО][вВ][еЕ][нН][иИ][еЕ])

Т.е. в этот шаблон можно вставить любые слова

Code Block
([][][][][][])|([][][][][][])
[] - буквы слова, лучше писать маленькую и большую, чтобы любой регистр учитывался
() - в скобки заключается ваше слово
| - разделитель между словами

Отфильтровать сообщения, которые содержат только цифры, или цифры и смайлики (в заданном индекс диапазоне \uD83D\uDE00-\uD83D\uDE50), или цифры и знаки препинания, кроме знака вопроса:

  • 1

  • 12

  • 1!

  • 2😀

  • 231 😀

Code Block
^(\d+|\d+[\uD83D\uDE00-\uD83D\uDE50]+|\d+[.,;:!-]+)$

Отфильтровать сообщения, которые содержат только цифры от 0 до 9

Code Block
^[0-9]*$

Следует учитывать, что система проверяет вхождение строки из РВ, а не полное совпадение. Т.е. если будет написано РВ вида “нехорошее слово“ и мы хотели отфильтровать только отдельно это слово, то будут также отфильтрованы все предложения, содержащие в себе это “нехорошее слово”. Например, “а вот это “нехорошее слово” я не употребляю”. Нужно обязательно в РВ использовать указатели на начало и конец строки, в некоторых случаях указатель на границу слова.