Перейти к содержанию

История диалогов

Изучение истории диалогов может помочь отследить качество работы операторов: можно проанализировать, у кого из них много пропущенных обращений, кому из операторов ставят самые низкие оценки.

Тексты диалогов, состоявшихся у оператора ранее, можно посмотреть на странице История, перейдя на неё из меню Панели управления:

Переход к истории диалогов через меню
Переход к истории диалогов через меню

Откроется страница истории диалогов.

Страница истории диалогов
Страница истории диалогов

Столбцы таблицы

В таблице истории диалогов отображаются следующие поля:

Поле Описание
№ Внутренний идентификатор обращения
Имя Имя посетителя (или «Посетитель», если имя не задано)
ID посетителя Идентификатор посетителя из внутренней системы идентификации, используемой клиентом (provided_visitor_id)
Email посетителя Адрес электронной почты посетителя, если был указан
Телефон Номер телефона посетителя, если был указан
Адрес посетителя IP-адрес, с которого начат диалог
Оператор Оператор, который последним писал или совершил действие в диалоге
Сообщений посетителя Количество сообщений, отправленных посетителем в рамках обращения
Категории Список категорий, назначенных диалогу. Если их несколько, они выводятся через запятую
Отделы Отдел, в который было направлено обращение
Начат Дата и время начала диалога
Длительность обращения Общая продолжительность обращения от создания до закрытия
Действие Возможность начать новый чат с посетителем (кнопка Начать чат). Подробнее см. Функция «Начать чат»

N.B.

Если provided_visitor_id не передан, в колонке ID посетителя отображается идентификатор посетителя в канале (channel_user_id). Если не переданы ни тот, ни другой, колонка пустая. visitor_id из системы Webim в этой колонке не отображается.

На этой странице отображается список всех диалогов, доступных для просмотра этим оператором, прежде всего между ним самим и посетителями, которых он(а) обслужил(а).

История диалогов может работать в двух режимах:

  • Стандартный режим - поиск по истории диалогов работает через аналитическую СУБД (MySQL, PostgreSQL), при большом количестве диалогов процесс может занять продолжительное время.

  • Режим интеграции Webim с поисковым кластером (Elasticsearch или OpenSearch, начиная с Webim Server 10.8+) — поиск по истории диалогов идёт через ту же интеграцию, что ускоряет поиск при большом числе диалогов. Передача диалогов в кластер выполняется компонентом data-storager.

Чтобы быстро найти нужные диалоги, введите в строке поиска имя посетителя, его ID или фрагмент текста сообщения. Поиск по имени и по тексту сообщения не зависит от регистра букв: запросы «Иван» и «иван» найдут одни и те же диалоги. По ID находятся диалоги при точном совпадении с visitor_id из системы Webim или с provided_visitor_id. Поиск по channel_user_id не поддерживается.

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

Фильтры
Фильтры

В качестве дополнительных фильтров можно настроить следующие параметры:

  • Операторы: можно выбрать одного или несколько операторов, чьи диалоги необходимо найти;

  • Оценка: можно выбрать чаты, в которых посетитель поставил оператору определённую оценку;

  • Отделы: позволит показать чаты, обращения в которых были направлены в определённые отделы;

  • Язык диалога: отображение чатов на конкретном языке;

  • Категория: отображение чатов, которым была задана одна из выбранных категорий;

  • Показывать диалоги: позволит отобразить диалоги, которые попали в одну из следующих групп:

    • Онлайн: онлайн-обращения;

    • Офлайн: офлайн-обращения (обращение считается офлайн, если все операторы в отделе для обращения были в статусе Офлайн);

    • Пропущенные: обращение считается пропущенным, если посетитель ушёл до того, как ему начали набирать ответ, и не вернулся до того, как закрыли диалог;

    • Отказы: обращение, в котором посетитель написал, когда операторы были онлайн, и находился онлайн в течение этого тайм-аута, но не получил за это время ответа;

    • Отклонённые приглашения;

    • В обработке.

  • Минимум сообщений: показывает диалоги, в которых количество сообщений – не меньше указанного;

  • ID посетителя: отображает все чаты посетителя с указанным provided_visitor_id.

N.B.

Несколько фильтров применяются по принципу логического И, т.е. при выборе любых нескольких фильтров в результатах поиска будут отображены только те диалоги, которые соответствуют значениям всех заданных фильтров.

Также в таблице с историей в крайней правой колонке есть кнопка Начать чат. Это позволит Вам начать новый чат с данным посетителем. В РМО он отобразится в отделе Приглашённые. Если посетитель не онлайн, у чата будет пометка «офлайн». Подробнее см. Функция «Начать чат».

Скачивание данных пользователей

Чтобы выгрузить список всех посетителей, которые обращались к Вам за всё время, нажмите кнопку Скачать данные всех посетителей. Начнётся загрузка csv-файла. В нём будет содержаться информация о всех посетителях, когда-либо обращавшихся к Вам за консультацией, с указанием их идентификаторов, имени, даты и времени обращения.

Пример фрагмента списка посетителей
Пример фрагмента списка посетителей

Выгрузка истории диалогов

Чтобы загрузить список диалогов на локальный диск, нажмите кнопку Сохранить как... и в выпадающем окне выберите нужный формат. Сервис сформирует файл и предложит сохранить его на диске. Выберите имя и директорию для сохранения. Откройте файл в любом текстовом редакторе.

Пример фрагмента истории диалогов в формате .TXT
Пример фрагмента истории диалогов в формате .TXT

Чтобы загрузить список диалогов на локальный диск в формате Microsoft Excel, нажмите Сохранить как XLSX с диалогами.

Функция доступна при включённой тарифной опции thread_search_leads_excel_export. Для её активации обратитесь к вашему менеджеру.

Сервис сформирует файл и предложит сохранить его на диске. Выберите имя и директорию для сохранения. Откройте файл в программе Microsoft Excel. Обратите внимание, что выгрузить можно не более 5000 диалогов.

Пример фрагмента истории диалогов в виде таблицы Excel
Пример фрагмента истории диалогов в виде таблицы Excel

Поиск по тексту

Далее описаны правила того, как работает строка поиска и фильтр «Текст сообщения» в разделе История диалогов. В интерфейсе могут применяться два разных механизма:

  • Поиск через кластер Elasticsearch или OpenSearch — полнотекстовый, токенизирующий запрос (в коде и настройках по-прежнему часто фигурирует имя Elasticsearch).

  • Поиск по SQL — поиск подстроки в тексте сообщений, без учёта регистра.

Отличия видов поиска

Характеристика Elasticsearch / OpenSearch SQL
Обработка фразы с несколькими словами Слова анализируются отдельно; по умолчанию — логическое И; порядок слов не важен (кроме запроса в кавычках) Ищется точная подстрока; порядок и пробелы важны
Кавычки "…" Поиск строгой последовательности слов Не имеют специального смысла, учитываются как обычные символы
Регистрозависимость Регистр не учитывается Регистр не учитывается
Маски Поддерживается только суффиксная * у одного слова Маски не используются; поиск по части слова возможен обычным вводом фрагмента
Ошибки в синтаксисе Невалидные части запроса игнорируются, поиск выполняется по валидным фрагментам Синтаксического парсинга нет; ищется введённая подстрока
Производительность и актуальность Быстрая индексация, «почти в реальном времени» Скорость зависит от объёма и периода; при длинных интервалах медленнее

Поля, по которым выполняется поиск

Свободная строка поиска и фильтр «Текст сообщения» применяются к текстам сообщений диалога (сообщения посетителя и оператора). Структурные фильтры (период, канал, оператор, отдел, категория и т. п.) сужают выборку диалогов и не меняют правила разбора текстового запроса.

N.B.

Внутренние системные события отображаются в истории, но в текстовом поиске учитываются только текстовые тела сообщений.

Поиск через Elasticsearch или OpenSearch

Поддерживаются следующие операторы в строке поиска:

  • + — логическое И между словами

  • | — логическое ИЛИ

  • "…" — точная фраза (строгое совпадение порядка и соседства слов)

  • * — только в конце одного слова для поиска по префиксу

N.B.

Любые символы внутри кавычек трактуются как обычные символы. Другие расширенные операторы (например, -, ~, скобки) в интерфейсе истории не используются.

Особенности

  • Порядок слов вне кавычек не важен. Запрос из нескольких слов трактуется как логическое И между токенами.

  • Регистр не учитывается.

  • Если запрос сформулирован с ошибкой (например, не закрыты кавычки), невалидные части игнорируются и поиск всё равно выполняется по валидным фрагментам.

  • Маска * работает только как суффикс одного слова: эластик*. Конструкции вида поиска в эластик* не возвращают результатов.

  • Символ ? в текстовом поле не поддерживается и воспринимается как обычный символ.

Примеры (режим поискового кластера)

Пусть в сообщениях есть фрагмент: фраза для поиска в эластике.

Ввод Результат
фраза Диалоги, где встречается слово «фраза»
фраза для Диалоги, где встречаются оба слова «фраза» и «для», порядок не важен
"фраза для" Диалоги с точной последовательностью «фраза для»
"фраза для" | поиска Диалоги с точной фразой «фраза для» или со словом «поиска»
эластик* Диалоги со словами, начинающимися на «эластик…»
поиска в эластик* Результатов нет (маска работает только для одного слова)
"фраза для Работает как фраза для (первая кавычка будет проигнорирована)

Поиск через SQL

Ищется подстрока в тексте сообщений, без учёта регистра букв. Так работает и MySQL, и PostgreSQL. То же относится к имени посетителя и имени оператора в строке поиска. Специальный синтаксис в строке не используется.

Особенности

  • Регистр букв не учитывается: Фраза и фраза дают одинаковый результат.

  • Несколько слов, разделённых пробелами, трактуются как единая подстрока: порядок и наличие пробелов важны.

  • Кавычки, *, ? и другие символы не имеют специального смысла и воспринимаются как обычные символы.

  • Для поиска по части слова достаточно ввести фрагмент слова; он будет найден как подстрока.

Примеры (SQL)

Те же исходные данные: фраза для поиска в эластике.

Ввод Результат
фраза Диалоги, где встречается подстрока «фраза»
ФРАЗА То же, что и фраза: регистр не важен
фраза для Диалоги, где встречается ровно «фраза␠для» (в этом порядке)
"фраза для" То же, что и выше: кавычки не влияют
эластик* Диалоги с подстрокой «эластик*» (звёздочка не является маской)
ласт Диалоги, где встречается «ласт» как часть слова

Влияние фильтров

Период ограничивает набор диалогов, в пределах которого выполняется текстовый поиск.

Канал, отдел, оператор, категория и другие параметры сужают выборку диалогов. Логика разбора текстового запроса при этом не меняется.

Ограничения

  • В режиме Elasticsearch / OpenSearch не поддерживается комбинация маски * и нескольких слов. Если нужен поиск по нескольким словам и одному префиксу, используйте последовательные запросы или уточняйте фразу.

  • В SQL при длинных интервалах время отклика может увеличиваться, так как поиск подстроки линейно зависит от объёма текста.

  • Для строгого совпадения слов рядом и в заданном порядке используйте кавычки в режиме поискового кластера. В SQL того же эффекта можно добиться, введя фразу целиком, включая пробелы в нужном месте.

Выбор режима поиска

Переключение режима выполняется параметром elasticsearch_history.

  • true — строка поиска и фильтр «Текст сообщения» работают через кластер Elasticsearch или OpenSearch (simple_query_string).

  • false — используется SQL: поиск подстроки по телу сообщений, без учёта регистра (и в MySQL, и в PostgreSQL).

Подключение к кластеру настраивается по инструкции «Подключение Elasticsearch или OpenSearch».

Где включить?

  • Через редактор настроек аккаунта (account config): найдите параметр elasticsearch_history и установите нужное значение.

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

N.B.

Если у вас нет доступа к account config, пожалуйста, обратитесь к вашему аккаунт-менеджеру.

Как проверить режим

  • В логах запросов видны обращения либо к API поискового кластера, либо SQL с ILIKE по телу сообщений.

  • В интерфейсе начинают работать | и суффиксная маска * только в режиме Elasticsearch / OpenSearch.

Связанные страницы