Как сделать бота для сайта, какой отвечает пользователям в реальном времени?
Попросили сделать бота который ждет сообщения на сайте от пользователя, и отвечает.
(Как примерно работают боты Callback API VK). Но как сделать так, чтобы этот скрипт работал фулл тайм? Какие варианты есть? Это как минимум придется заходить на сайт где находится бот, и так как пхп умирает после отработки, нужно прилепить аякс как я понимаю (который каждые 2 сек допустим) будет обновлять стр с этим ботом?
Как оптимальнее всего?
По моей логике:
Человек заходит на страницу сайта с этим ботом, оставляет ссылку включенной, а аякс каждые 2 сек запускает этот скрипт
Найдите сайт "Пятиминутка PHP", в подкасте парень обсуждал разработку чат-бота на PHP и, если память не подводит, приводил ссылку на исходники ботов написанных на разных языках (в том числе и PHP).
Немного не понял, зачем запуск скрипта с временным интервалом, когда нужно ловить событие отправки сообщения пользователя? Юзер написал, нажал отправку, тогда уже и включить timeOut для иллюзии задержки ответа, а по его истечению - вывести ответ бота.
Я логику задачи вижу именно в таком формате.
KorniloFF: может вы меня не поняли
я не являюсь админом сайта, я не смогу всему этому сайту припилить JS, меня попросил лишь пользователь этого сайта сделать бота для него, чтобы он отвечал на сообщения людей. и вот поэтому я не совсем понимаю, как мой JS будет выполняться во всех браузерах, если он будет доступен лишь в файле у меня на сервере, и будет действителен только на аккаунт этого человека кому я бота написал?
KorniloFF: да
допустим, как вы бы взяли сделать бота для своего аккаунта на Тостере KorniloFF, и допустим вам бы в лс стучались, а скрипт бы каждому отвечал какое-то сообщение. А пхпшный скрипт не запустится просто так, его должен запустить либо крон, либо аякс. Но только вам нужно понять, когда данное сообщение от юзера пришло еще.
KorniloFF: ну вот да, и человеку какому я скрипт буду передавать, надо сказать чтобы он перешел по той ссылке где бот находится, чтобы запустить его, если вдруг он окажется не запущен. всё верно?
p.s. искать контент буду я скорее через phpquery, и отправлять всё это через постфилдс в CURL
Якобы будет логиниться бот через CURL, и отвечать на вопросы в беседе. У меня доступа к сайту никакого не будет, только один аккаунт, в который я буду логиниться через скрипт
driverx18: ну вы сами и ответили на свой вопрос
делайете через curl, и как я до этого писал "Если Вам необходим именно диалог, а не вариант вопрос-ответ, то создаете отдельно БД для бота, в котором будет логироваться предыдущие сообщения"
Artem0071: сорри, вот еще раз, по полочкам (если не тяжело)
Есть мой бот, который залогинен через курл. Он должен отследить когда ему на сайте придет уведомление (КАКИМ ОБРАЗОМ? PHP умирает сразу после отработки запроса, от того я и говорю, что я хотел обновлять всё это через AJAX, потому что я точно знать не могу когда придет сообщение от юзера).
Вот я например вижу, что сообщение человека предыдущего я бы спарсил через phpquery, а вот ответить через временной промежуток еще нужно понять через какой
driverx18: вы курлом делаете задание по расписанию, например проверять сообщения каждую минуту. Затем смотрите по базе есть ли последнее сообщение или нет, если нет, то отправляете сообщение
а вот ответить через временной промежуток
Зачем вообще это нужно? Если прям действительно необходимо, то делайте sleep() на столько-то секунд и все
вы курлом делаете задание по расписанию, например проверять сообщения каждую минуту
так более понятнее, но я у курла не знаю такой опции, чтобы работало по расписанию (знал бы - не создавал топик), не поделитесь, случайно? А то я через CTRL+F глянул почти всё что есть связанное с TIME в curl_setopt и ничего нужного не нашел