Начинаем делать веб сервис. Как одна из функций, будет чат аналог живосайта. Нужно грамотно реализовать обмен сообщениями.
Клиент пока будет только веб. Сделаем его сами. От вас бекенд чата. В дальнейшем будут моб приложения, десктоп, нужно учесть, чтоб сервер мог с ними взаимодействовать.
Схема работы сервиса примерно такая:
1. На сайт устанавливают код.
2. Посетитель заходит на сайт.
3. код делает запрос в сервис.
4. сервис проверяет настройки домена, с которого пришел запрос, баланс и пр. Если все ок, возвращает код виджета и js файлы виджета.
5. Сервис проверяет пришла ли в запросе кука с id посетителя (назовем параметр cl_id). Если нет, то заносит посетителя в соответствующую таблицу бд (назовем её visitors) . И возвращает cl_id на сайт.
6. Этот js встраивает виджет, обновляет cl_id в куке
7. На данном этапе должен срабатывать ваш код. Делать запрос к серверу чата и добавлять запись в таблицу visitors_online (связующая таблиц visitors и domens) , с cl_id и id домена, на котором этот посетитель сейчас находится. И поддерживать актуальность онлайн статуса, каким-то образом. Когда он оффлайн, эту запись нужно удалять. Либо предлагайте ваш механизм.
8. Еще, как-то подобным образом, нужно поддерживать онлайн статус менеджеров из таблицы users. Но тут по проще, менеджеры могут быть онлайн только на одном домене в личном кабинете. Поэтому без связующей таблицы можно обойтись.
9. Соответственно, в кабинете в разделе "посетители сайта онлайн" я сам просто буду выводить выборку онлайн юзеров по соответствующему домену. Это я сам сделаю.
10. Далее, посетитель может открыть виджет и написать сообщение. Оно пока не направлено никому конкретно. Просто висит новый диалог, относящийся к определенному виджету (домену).
11. Новые диалоги мы будем выводить в соответствующий раздел в кабинете.
12. Менеджер заходит в раздел и берет этот диалог на себя. Больше диалог в "новых" отображаться не должен. За диалогом должен закрепляться user_id менеджера. Т.е. назначение менеджера в диалог происходит в веб сервисе, возможны и другие механизмы, которые мы сами потом допишем.
13. Менеджер может переключить диалог на другого менеджера. При этом, новый менеджер должен видеть всю историю переписки в диалоге.
14. Желательно чтобы была возможность не только переключить, а просто временно подключить дополнительного менеджера в диалог. Типа конференции.
15. Кроме того, менеджер может сам инициировать диалог. Он заходит в раздел "посетители сайта онлайн", нажимает там на кнопку "начать диалог", пишет первое сообщение и отправляет. В браузере посетителя должен открыться виджет и начаться обновление диалога, как обычно.
16. Посетителю в куку мы ставим id диалога на сутки например. Если у посетителя стоит такая кука, то в виджет автоматически подгружается история переписки.
17. В виджете должна быть возможность отправить файл. Вижу это так. Должен быть php файл который принимает файл, загружает его в соответствующую папку, и добавляет в диалог сообщение со ссылкой на этот файл. Либо предложите вариант по лучше, если есть.
18. Менеджеры должны иметь возможность общаться и между собой, в личном кабинете.
19. Было бы хорошо сразу сделать функцию скрытия сообщения от клиента, в диалогах с клиентами. Допустим менеджер просто хочет сделать для себя пометку какую-то. Или, если в диалоге участвует несколько менеджеров, то они могут скрыто общаться между собой. Сделать эту функцию, либо спроектировать БД и код так, чтобы эту функцию не было проблемой внедрить в дальнейшем.
20. У менеджеров было хорошо сразу сделать возможность использования нескольких статусов. Не только онлайн/оффлайн. Еще: нет на месте / занят / не беспокоить. Думаю это не сложно. Просто закрепить номер каждого статуса и назначить соответствующий. Можно даже не делать таблицу статусов в БД, т.к. статусы эти редактировать больше никто не будет. И эти статусы ни на что пока влиять не будут. По этому ТЗ. Это на будущее, если мы захотим сделать автоматическое распределение диалогов по свободным менеджерам (про возможность из второй части пункта 12).
В отклике жду:
1. описание вашего решение, по вопросам выше.
2. цена, хотя бы от-до или средние расценки за работу (можно на примерах задач).
3. срок, от-до.
4. есть ли опыт разработки чата? есть ли наработки, если да,:как они помогут нам сэкономить время?
5. какие highload проекты делали и какова была там ваша роль
6. какими технологиями владеете
7. когда сможете приступить (дата)
8. будет плюсом рассказать немного о себе
9. контакты: почта, скайп, ВК
Предпочтение кандидатам с конкретными предложениями и подробным ответом по пунктам.
Если у вас нет PRO, можно писать сюда alexa.shmelev@gmail.com с темой "Разработка чата [<ВАШ FL ЛОГИН>]".
P.S.: бюджет в проекте указан для привлечения внимания, предлагайте свои варианты.
Опубликован 02.08.2017 в 11:12 Последнее изменение: 02.08.2017 в 11:12