Начиная с релиза 3.7.0 в системе присутствует возможность настроить фильтр нежелательных сообщений с помощью регулярных выражений.
Описание функциональности
Пользователь системы добавляет регулярные выражения (в дальнейшем РВ) для каждого канала в отдельности. Система проверяет все входящие сообщения на предмет того, удовлетворяют ли они заданным РВ.
Если сообщение попадает под условия фильтрации, то запрос сразу закрывается со статусом “Закрыт без ответа” и он не попадает во входящие к оператору.
Если сообщение не попадает под условия фильтрации, то происходит стандартный разбор сообщения и поиск ответа на него в подключенных БЗ.
Проверяются только первые сообщения от пользователя до тех пор, пока диалог не попал к оператору. Если диалог уже находится во входящих у оператора или оператор взял его в работу, то такие сообщения не проверяются, а приходят как обычно, новым комментарием в текущий диалог.
Интерфейс
Новый пункт меню для пользователей с ролью Администратор: Настройки - Запросы - Фильтрация входящих сообщений.
Область со списком добавленных РВ.
Область для проверки, соответствует ли введенный текст добавленным выражениям.
При проверке сообщения система:
сообщит, что совпадений не найдено
сообщит для каких каналов было найдено совпадение и под какими номерами находятся эти РВ. Также справа от каждого выражения будет индикатор последней проверки.
Для каждого канала можно создать несколько регулярных выражений.
В истории сообщений можно посмотреть, что отфильтрованные сообщения находятся со статусом “Закрыт без ответа”.
Примеры регулярных выражений
Смысл/задача | РВ |
---|---|
Отфильтровать определенное слово + спецсимволы после и смайлики, например, “участвую” | ^(([уУ][чЧ][аА][вВ]?[сС][тТ][вВ][уУ][юЮ])[^0-9A-Za-zА-Яа-я]*)+$ |
Отфильтровать перечисление упоминаний в канале через @ , чаще всего для Instagram | ^((@[a-zA-Z0-9._]+)\s*)+$ |
Отфильтровать определенные смайлики без текста в строке |
|
Отфильтровать только смайлики (самые распространенные) | ^([❤️❤🔥♥♻☺✌✨👨🔧💐😁]|[😀-🙏]|[🌀-🔟]|[🤍-🪕])+$ |
Отфильтровать все единичные слова, кроме “хочу” со знаком “?” в конце. | ^\s*(?!хочу|ХОЧУ|Хочу)([а-яА-Я]*)[^\?\s\w]*?$ |
Отфильтровать только ссылки вида: | ^(https?:\/\/[-\w;\/?:@&=+$\|\_.!~*\|'()\[\]%#,☺]+[\w\/#](\(\))?)(?=$|[\s',\|\(\).:;?\-\[\]>\)])$ |
Отфильтровать сообщения, содержащие определенные слова, например “отпуск” или “вдохновение”. | ([оО][тТ][пП][уУ][сС][кК])|([вВ][дД][оО][хХ][нН][оО][вВ][еЕ][нН][иИ][еЕ]) Т.е. в этот шаблон можно вставить любые слова ([][][][][][])|([][][][][][]) [] - буквы слова, лучше писать маленькую и большую, чтобы любой регистр учитывался () - в скобки заключается ваше слово | - разделитель между словами |
Отфильтровать сообщения, которые содержат только цифры, или цифры и смайлики, или цифры и знаки препинания, кроме знака вопроса:
| ^([0-9]+)[^\?\w]*$ |
Отфильтровать сообщения, которые содержат только цифры от 0 до 9 | ^[0-9]*$ |
Следует учитывать, что система проверяет вхождение строки из РВ, а не полное совпадение. Т.е. если будет написано РВ вида “нехорошее слово“ и мы хотели отфильтровать только отдельно это слово, то будут также отфильтрованы все предложения, содержащие в себе это “нехорошее слово”. Например, “а вот это “нехорошее слово” я не употребляю”. Нужно обязательно в РВ использовать указатели на начало и конец строки, в некоторых случаях указатель на границу слова.