Внешний поиск

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

Действие доступно только в секции "действия бота до ответа".

Адрес, на который чат-бот будет делать запрос, должен возвращать html-страницу.

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




Параметры действия:
  • URL поиска - адрес на который чат-бот будет делать запрос. Поддерживается вставка переменных. Обязательное поле.
  • Html-класс заголовка строки результата - класс элемента на получаемой html-странице, в котором содержится заголовок. Обязательное поле.
  • Html-класс превью результата - класс элемента на получаемой html-странице, в котором содержится превью. Обязательное поле.
  • Html-класс блока, в котором искать ссылку на результат  - класс элемента на получаемой html-странице, в котором содержится ссылка. Обязательное поле.
  • Количество показываемых ссылок - максимальное количество результатов (элементов), которые чат-бот должен вывести в чате. По умолчанию 10. Обязательное поле.
  • Текст сообщения, если поиск неудачен - текст, который чат-бот выведет в случае возникновении ошибки при запросе или при отсутствии результатов (элементов). Обязательное поле.




Разберём работу действия на примере поиска в справке Битрикс24:
https://helpdesk.bitrix24.ru/search.php

Введём поисковый запрос и нажмём "искать" (иконка с лупой). После этого в адресной строке у нас изменится ссылка на:
https://helpdesk.bitrix24.ru/search.php?q=Задачи




Наш текст запроса - это слово "Задачи".

Но мы хотим автоматизировать поиск и позволить искать информацию по любым словам. Для этого мы создадим переменную с типом "Строка".




Создадим новый узел.

И в действии "Внешний поиск" в поле "URL поиска" вставим нашу ссылку. Но вместо слова "Задачи" подставим код переменной.



Далее нам нужно определить классы элементов.

Кликните по заголовку элемента правой кнопки мыши и в появившемся меню выберите "Просмотреть код элемента". Откроется панель с кодом страницы, где будет выделен выбранный вами элемент. При наведении на элемент в этой панели он будет подсвечиваться и на самой странице, а сверху над ним будут указаны его тег и классы через точку. Вам нужно взять этот класс, либо из панели сверху над элементом (точку копировать не надо), либо из панели с кодом из атрибута "class" (подчёркнут красным) скопируйте содержимое между кавычками (классы разделяются пробелами, если классов в кавычках несколько - скопируйте только один из них).



Вставьте скопированный класс в поле "Html-класс заголовка строки результата".



Далее нам нужно определить превью. Аналогично, как и с заголовком, копируем класс выделенного элемента.



 Вставьте скопированный класс в поле "Html-класс превью результата".



С ссылкой несколько сложнее. Для начала, нужно понять, где находится ссылка. В данном случае ссылка - это заголовок. Кликаем по нему правой кнопкой мыши и смотрим код элемента. Мы видим, что внутри заголовка есть тег <a href="ссылка">Текст заголовка<a>.

Эта та ссылка, которая нам нужна. Но нам не нужен класс ссылки (и как вы можете заметить, его у неё даже нет), нам нужен класс блока ссылки. Т.е. это либо сам заголовок, либо более верхний уровень - сам элемент. Давайте возьмём класс элемента.



 Вставьте скопированный класс в поле "Html-класс блока, в котором искать ссылку на результат".



В поле "Количество показываемых ссылок" укажите сколько элементов нужно отображать боту.

В поле "Текст сообщения, если поиск неудачен" укажите текст, который чат-бот выведет, если не найдёт ничего.

Всё, настройка действия завершена.


Вспоминаем, что в поле "URL поиска" мы подставляли переменную. И прежде чем начинать поиск - нам нужно эту переменную заполнить. 

Создадим новый узел.

Сначала в секции "действия бота до ответа" уведомим пользователя, чтобы он ввёл текст для поиска.



Далее выбираем тип ответа "Ждать произвольного ответа пользователя" и записываем в нём сообщение пользователя в созданную нами переменную.



После чего в секции "действия бота после ответа" с помощью действия "Запустить другой сценарий/узел" переводим на узел в котором мы создавали действие "Внешний поиск".



Получаем следующие узлы.




Наш сценарий готов. Запускаем его.

Чат-бот отправил текст и теперь ожидает ответ пользователя.



После того, как пользователь введёт текст - чат-бот перейдёт в узел с действием "Внешний поиск" и сделает запрос по указанному адресу, в который подставит текст пользователя.

Результат он выведет в сообщении. А также оставит ссылку на все результаты.





Если же чат-бот не обнаружит никаких результатов, он отправит сообщение с текстом из поля "Текст сообщения, если поиск неудачен". Если у вас включена отладка, то вы увидите причину, почему запрос неудачен и на какой адрес чат-бот делал запрос.