RU::14-Список готовых решений использующих CppComet::Интегрируемый чат плагин ignore ====== Интегрируемый чат плагин ====== Готовый к встраиванию в ваш сайт чат плагин личной переписки между пользователями. Исходные коды размещены на [[https://github.com/Levhav/Star.Comet-Chat|GitHub]], [[http://comet-server.ru/doc/CometQL/Star.Comet-Chat/backend-example/index.php|Демо версия чата]] Чат опубликован под лицензией Apache License 2.0 По всем вопросам обращайтесь в скайп Levhav или на почту support@comet-server.ru ====== Функционал чата ====== * Возможность передавать текстовые сообщения с прикреплённым изображением * Содержит возможность поиска контактов в списке контактов * Отдельные вкладки для списков избранных и заблокированных пользователей * Звуковое уведомление при получении сообщения * Кнопка пожаловаться * Пригоден для работы в мобильных браузерах * Отслеживание прочитано сообщение или нет. И как только сообщение будет прочитано получателем у отправителя появится на против сообщения две галочки * Перевод сообщений с помощью api яндекс переводчика ====== Функционал админки чата ====== * Real-time мониторинг всех сообщений пользователей * Просмотр диалога любых двух пользователей * Возможность просматривать все сообщения отдельно выбранного пользователя * Список жалоб на пользователей от других пользователей * Возможность просматривать только сообщения с вложениями {{ :star-comet-chat:screenshot_21_.png?600 |}} ====== Скриншоты чата ====== {{ :star-comet-chat:screenshot_4_.png?600 |Внешний вид чата}} ====== Как встроить чат на сайт ====== Если вы решили использовать этот чат или его модификации то пожалуйста сообщите об этом на адрес star-chat@comet-server.ru в данный момент в статье не хватает ссылок на успешные примеры использования чата и отзывов на этот плагин чата. Если возникнут трудности в интеграции то обращайтесь в техническую поддержку. Чат может быть размещён как на отдельном сервере так и на том же сервере где и основной сайт. Чат взаимодействует с вашим сайтом через простое api. У чата все данные хранятся в собственной бд и информацию о пользователях и данные для авторизации он получает путём отправки запросов к вашему сайту. Для установки чата на своём сервере вам понадобится скачать все исходники от [[https://github.com/Levhav/Star.Comet-Chat|сюда]] Среди исходников будет файл database.sql в нём содержится структура таблиц необходимая для работы чата. На основании этого файла создаём базу данных. Затем надо подправить конфигурацию в файлах. * ./config.php * ./backend-example/config.php В файле ./config.php надо указать настройки для чата для подключения к базе данных. Для хранения переписки. И надо задать настройки доступа к комет серверу для рассылки уведомлений. /** * Доступ к БД */ $conf['mysql_db'] = "StarCometChat"; $conf['mysql_user'] = "StarCometChat"; $conf['mysql_pw'] = "RLUJ4TXE22XL5JTh"; $conf['mysql_host'] = "localhost"; /** * Доступ к комет серверу * Получить ключи доступа можно здесь https://comet-server.ru/menu_id/10 */ $conf['cometQL_dev_id'] = "lPXBFPqNg3f661JcegBY0N0dPXqUBdHXqj2cHf04PZgLHxT6z55e20ozojvMRvB8"; $conf['cometQL_key'] = 15; Так же в файле ./config.php есть опция admin_ids которая позволяет перечислить идентификаторы всех пользователей у которых есть права администраторов. Наделять такими правами очень много пользователей не рекомендуется, так как это может повлиять на скорость работы чата. $conf['admin_ids'] = array(1, 2); // Список id пользователей с правами администратора Параметр trusted_ip в файле ./config.php должен содержать ip сервера с которого разрешены вызовы api чата. /** * ip адрес с которого разрешено вызывать api методы управления чатом * Или false если ограничение отключено (не безопасно) */ $conf['trusted_ip'] = false; По умолчанию параметр trusted_ip равен false так как это пример. В реальном приложении необходимо указать ip адрес с которого разрешены запросы к api чата. Переменная $trusted_ip в файле ./backend-example/config.php должна содержать ip адрес сервера на котором расположен чат. /** * ip адрес с которого разрешено вызывать api методы управления чатом * Или false если ограничение отключено (не безопасно) */ $trusted_ip = false; По умолчанию переменная $trusted_ip равна false так как это пример. В реальном приложении необходимо указать ip адрес с которого разрешены запросы к api бекенда. ===== Обмен данными ===== В директории backend-example расположены файлы с примером интеграции чата в php проект. Для того чтобы интегрировать чат в ваш проект вам необходимо создать обработчики на те запросы которые будет отправлять модуль чата для получения данных о зарегистрированных у вас пользователях. ==== URL_getUsersInfo ==== Чат будет отправлять вашему проекту post запросы для получения информации о пользователях. Адрес на который будут отправляться эти запросы задаётся в файле ./config.php, имя параметра "URL_getUsersInfo" Вот фрагмент кода в котором определено это значение. /** * URL для запроса информации о пользователях в json */ $conf['URL_getUsersInfo'] = 'http://comet-server.ru/doc/CometQL/Star.Comet-Chat/backend-example/chat_get_users.php'; В запросе в параметре users будет передан список id пользователей через запятую для которых необходимо вернуть данные. POST /doc/CometQL/Star.Comet-Chat/backend-example/chat_get_users.php HTTP/1.1 Host: comet-server.ru Origin: https://comet-server.ru users=1,2 В ответ он будет ожидать json строку со следующими объектами. [{ "user_id":1, "avatar_url":"http:\/\/comet-server.ru\/doc\/CometQL\/Star.Comet-Chat\/img\/avatar0.png", "name":"Виктор", "city":"Владивосток", "age":24, "status":"active", "login":"victor" }, { "user_id":2, "avatar_url":"http:\/\/comet-server.ru\/doc\/CometQL\/Star.Comet-Chat\/img\/avatar0.png", "name":"Лена", "city":"Владивосток", "age":25, "status":"active", "login":"lena" },] Файл ./backend-example/chat_get_users.php содержит в себе код который правильно обрабатывает запрос и отдаёт правильные данные. ==== URL_getUsersHash ==== Для получения хеша авторизации пользователя чат будет отправлять post запрос на адрес который содержится в параметре URL_getUsersHash в файле ./config.php, Вот фрагмент кода в котором определено это значение. /** * URL для запроса хеша авторизации */ $conf['URL_getUsersHash'] = 'http://comet-server.ru/doc/CometQL/Star.Comet-Chat/backend-example/chat_get_user_hash.php'; В запросе в параметре id будет передан id пользователя для которого необходимо получить хеш авторизации. POST /doc/CometQL/Star.Comet-Chat/backend-example/chat_get_user_hash.php HTTP/1.1 Host: comet-server.ru Origin: https://comet-server.ru id=1 В ответ он будет ожидать строку хеша авторизации 56ff3f23bfd1071e14749aad42e58d89 Файл ./backend-example/chat_get_user_hash.php содержит в себе код который правильно обрабатывает запрос и отдаёт правильные данные. ===== JavaScript вызовы чата ===== Файл ./backend-example/userPage.php представляет из себя пример страницы пользователя. В нём есть пример интеграции JavaScript вызовов чата в страницы сайта. Вот приведён код запуска чат плагина. var user_id = ; var user_key = ""; $(document).ready(function() { /** * Подключение к комет серверу. Для возможности принимать команды. * dev_id ваш публичный идентификатор разработчика * user_id идентификатор пользователя под которым вы вошли. * user_key ваш хеш авторизации. */ CometServer().start({dev_id:15, user_id:user_id, user_key: user_key}) /** * Инициализируем модуль чата, происходит инициализация и загрузка данных необходимых для работы. * Но окно чата этим вызовом не открывается. */ StarCometChat.init({ user_id: user_id, user_key: user_key, open:false, // Параметр home_dir содержит адрес расположения php скриптов чата home_dir: "http://comet-server.ru/doc/CometQL/Star.Comet-Chat", // Функция назначенная в success вызывается после успешной инициализации чата. success:function() { // Вызов countNewMessagesSum возвращает количество новых сообщений. Работает корректно только после завершения инициализации чата var c = StarCometChat.countNewMessagesSum(); if(c > 0) { $('#newMsgIndicator').html("У вас "+ c + " новых сообщений"); } } }); }); Надеюсь комментарии в коде понятны. Следует отметить что для человек получает статус online только после того как выполняется код подключения к комет серверу. === После завершения инициализации доступны следующие вызовы: === Возвращает кол-во непрочитанных сообщений StarCometChat.countNewMessagesSum() Возвращает кол-во непрочитанных сообщений от пользователя user_id StarCometChat.countNewMessages(user_id) Открывает список диалогов StarCometChat.openDialog() Открывает диалог с пользователем user_id StarCometChat.openDialog(user_id) ===== Решение проблем ===== Для включения вывода ошибок надо добавить в файл config.php код: ini_set('display_errors','on'); error_reporting (E_ALL & ~E_NOTICE); Ошибка о том что указаны не верные пути к файлам чата выглядит как то так: Error in line 14 include_once $_SERVER['DOCUMENT_ROOT'].'/config.php'; Ошибка при загрузке файла похожая на эту Warning: move_uploaded_file(/home/www-data/web/comet-server.com/chatFiles/3_2_1488678883243.png): failed to open stream: No such file or directory in /home/www-data/web/administrator/sub_sites/comet.cms-machaon.ru/doc/CometQL/Star.Comet-Chat/sendMessage.php on line 62 Warning: move_uploaded_file(): Unable to move '/tmp/php27nQco' to '/home/www-data/web/comet-server.com/chatFiles/3_2_1488678883243.png' in /home/www-data/web/administrator/sub_sites/comet.cms-machaon.ru/doc/CometQL/Star.Comet-Chat/sendMessage.php on line 62 говорит о том что нет папки chatFiles или нет прав на запись в неё. == Как попасть в админку? == Список пользователей с правами администратора задаётся в файле config.php в функции getAdminIds() {{ :star-comet-chat:снимок_экрана_от_2017-03-06_14-39-30.png |}}