Как отправлять второе сообщение спустя определенное время для каждого юзера?

uRusure

Client
Регистрация
07.07.2018
Сообщения
40
Реакции
14
Баллы
8
Автоматизирую мобильное приложение через Зенку + Аппиум.

Подскажите, пожалуйста, как можно реализовать следующее:

Я добавляю человека в друзья, шлю ему первое сообщения типо "Привет", потом через 15 минут мне надо отправить ему второе сообщение. И так по кругу надо делать с каждым новым юзером которого я принимаю в друзья и шлю ему первое сообщение "Привет". Это нужно как-то с БД мутить, если да, то куда копать? Просто я никогда с БД дел не имел. =\

То есть к примеру раз в 10 минут чекать БД на то прошло ли 15 минут для какого-то конкретного юзера\юзеров, и если такие юзеры есть, то слать им второе сообщение. Или как подобное можно реализовать проще?
Я вижу это так: Я добавил человека в друзья, отправил ему первое сообщение, сохранил его никнейм список и присвоил его никнейму время когда было отправлено первое сообщение, потом выполняю какие-то другие задачи и к примеру через 5 минут мне нужно проверить прошло ли 15 минут с момента отправки первого сообщения юзерам из списка, если да, то отправить им второе сообщение, если нет, то вернуться к проверке через 5 минут. Думаю логика понятна, но вот как реализовать не представляю))
 
Можно реальзовать на БД, списках, таблицах, файлах, возможно даже на кубиках, правда объёмно получится.
Делай поэтапно.
В списке можно сделать формат строк login:timestamp:secondMessageResult и чекать его построчно, завершённые задания переносить в другой или удалять.
 
  • Спасибо
Реакции: uRusure
Автоматизирую мобильное приложение через Зенку + Аппиум.

Подскажите, пожалуйста, как можно реализовать следующее:

Я добавляю человека в друзья, шлю ему первое сообщения типо "Привет", потом через 15 минут мне надо отправить ему второе сообщение. И так по кругу надо делать с каждым новым юзером которого я принимаю в друзья и шлю ему первое сообщение "Привет". Это нужно как-то с БД мутить, если да, то куда копать? Просто я никогда с БД дел не имел. =\

То есть к примеру раз в 10 минут чекать БД на то прошло ли 15 минут для какого-то конкретного юзера\юзеров, и если такие юзеры есть, то слать им второе сообщение. Или как подобное можно реализовать проще?
Я вижу это так: Я добавил человека в друзья, отправил ему первое сообщение, сохранил его никнейм список и присвоил его никнейму время когда было отправлено первое сообщение, потом выполняю какие-то другие задачи и к примеру через 5 минут мне нужно проверить прошло ли 15 минут с момента отправки первого сообщения юзерам из списка, если да, то отправить им второе сообщение, если нет, то вернуться к проверке через 5 минут. Думаю логика понятна, но вот как реализовать не представляю))
Приветствую. Не обязательно с БД заморачиваться. (опять же - смотря куда люди приходят - может действительно в ней необходимость есть, на сайте например, уточните момент).
Я бы так сделал:
1. Разделил бы пользователей на 3 категории - новички (те кто только пришел/постучался к вам), подписчики (те кто уже, допустим 15 дней с вами), покупатели( соотв, те кто что-то купил).
2. Заносил бы их в 3 разные таблички, примерно в таком формате: имя пользователя, время, никнейм, еще какая-то полезная инфа о нем\ней
Для новичков ставим код, который считает, сколько время прошло с момента их прихода, допустим чел пришел в 21ч, код ставит отправку сообщения на паузу на 15 минут (можно жестко зафиксировать значение или в настройки вынести, не суть), в 21.15 пауза снимается и челу отправляется сообщение нужное. Потом снова пауза и так по кругу, до достижения какого-то результата. Например, пока список в таблице не кончится.
- подписчикам свои предложения
- покупателям свои + тайминги тоже
В принципе вы логику верно построили ;)
C#:
Развернуть Свернуть Копировать
int unixTime = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
int timenow = (int)(DateTime.Parse(project.Variables["now_date"].Value) - new DateTime(1970, 1, 1)).TotalSeconds;
int deadline = (int)(DateTime.Parse(project.Variables["time_end"].Value) - new DateTime(1970, 1, 1)).TotalSeconds;
int lastpost = (int)(DateTime.Parse(project.Variables["time_end1"].Value) - new DateTime(1970, 1, 1)).TotalSeconds;
int count = Convert.ToInt32(project.Variables["kolvo"].Value );
 
var postTime = lastpost + (deadline - unixTime) / count;
// return postTime;
 
return new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime().AddSeconds(postTime);
Код возвращает разницу во времени между указанными значениями, соотв на ее величину паузите отправку сообщения
 
  • Спасибо
Реакции: uRusure

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)