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

uRusure

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

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

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

То есть к примеру раз в 10 минут чекать БД на то прошло ли 15 минут для какого-то конкретного юзера\юзеров, и если такие юзеры есть, то слать им второе сообщение. Или как подобное можно реализовать проще?
Я вижу это так: Я добавил человека в друзья, отправил ему первое сообщение, сохранил его никнейм список и присвоил его никнейму время когда было отправлено первое сообщение, потом выполняю какие-то другие задачи и к примеру через 5 минут мне нужно проверить прошло ли 15 минут с момента отправки первого сообщения юзерам из списка, если да, то отправить им второе сообщение, если нет, то вернуться к проверке через 5 минут. Думаю логика понятна, но вот как реализовать не представляю))
 

Metrix

Client
Регистрация
03.01.2014
Сообщения
343
Благодарностей
271
Баллы
63
Можно реальзовать на БД, списках, таблицах, файлах, возможно даже на кубиках, правда объёмно получится.
Делай поэтапно.
В списке можно сделать формат строк login:timestamp:secondMessageResult и чекать его построчно, завершённые задания переносить в другой или удалять.
 
  • Спасибо
Реакции: uRusure

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 110
Благодарностей
195
Баллы
63
Автоматизирую мобильное приложение через Зенку + Аппиум.

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

Я добавляю человека в друзья, шлю ему первое сообщения типо "Привет", потом через 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

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