Действие "Внешний поиск" позволяет сделать запрос на любой адрес, подставив в него данные из переменных, и вывести в чат содержимое полученной страницы.
Действие доступно только в секции "действия бота до ответа".
Адрес, на который чат-бот будет делать запрос, должен возвращать 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 поиска" мы подставляли переменную. И прежде чем начинать поиск - нам нужно эту переменную заполнить.
Создадим новый узел.
Сначала в секции "действия бота до ответа" уведомим пользователя, чтобы он ввёл текст для поиска.
Далее выбираем тип ответа "Ждать произвольного ответа пользователя" и записываем в нём сообщение пользователя в созданную нами переменную.
После чего в секции "действия бота после ответа" с помощью действия "Запустить другой сценарий/узел" переводим на узел в котором мы создавали действие "Внешний поиск".
Получаем следующие узлы.
Наш сценарий готов. Запускаем его.
Чат-бот отправил текст и теперь ожидает ответ пользователя.
После того, как пользователь введёт текст - чат-бот перейдёт в узел с действием "Внешний поиск" и сделает запрос по указанному адресу, в который подставит текст пользователя.
Результат он выведет в сообщении. А также оставит ссылку на все результаты.
Если же чат-бот не обнаружит никаких результатов, он отправит сообщение с текстом из поля "Текст сообщения, если поиск неудачен". Если у вас включена отладка, то вы увидите причину, почему запрос неудачен и на какой адрес чат-бот делал запрос.