Роботы, плагины и скрипты к чату MyChat. Разработка альтернативных клиентов и различных утилит. Технические вопросы по программированию, замечания и предложения по развитию API
ЛёнькаЩелкунов
Собственно вопрос в заголовке) Пытаюсь написать модуль для битрикс (php). Что требуется сделать:

1. Получить список доступных групп;
2. При выборе группы, показать список пользователей;
3. При выборе пользователей, получить список тех кто онлайн;

Для чего мне это надо, хочу сделать обратную связь для сайта. Стандартная не устраивает, хотя бы потому, что при спиское даже из трех человек, может сообщение с чата отправить тому кто оффлайн!

Как мне получить пункты 1, 2, 3?
Аватара пользователя
Алексей Пикуров
Здравствуйте. Добавим необходимые функции в IntegrationAPI, отпишу в этой теме. Переношу тему в раздел "Боты, плагины, скрипты и разные дополнения".
ЛёнькаЩелкунов
Как скоро это будет добавлено? И будет ли качественный гайд по API?
Аватара пользователя
Алексей Пикуров
В ближайшие дни. Скоро выход новой версии.
И будет ли качественный гайд по API?

Справка постоянно дополняется. Добавленные функции будут там описаны. Вы это имеете в виду?
Аватара пользователя
Алексей Пикуров
P.S. Зайдите в свой профиль в форуме и укажите существующий email, иначе не будете получать уведомления о сообщениях.
ЛёнькаЩелкунов
Еще такой вопрос! Как правильно использовать команды, допустим получить количество пользователей, подключенных в данный момент к серверу (онлайн)?

Сама команда.
006В cs_get_connected_users_count

После не большого колдовства, отправляемый запрос должен быть таким?

007748006В
Аватара пользователя
Алексей Пикуров
Вы путаете открытый протокол MyChat и команды IntegrationAPI.

В первом случае вам придётся делать функционал MyChat Client, хотя бы минимальный, для подключения к серверу, удержания коннекта и авторизации.

Во втором случае — ничего этого не нужно. Подключился, отправил/получил данные, отключился. Стандартный REST.

Пример на php
ЛёнькаЩелкунов
Не подскажите где ознакомиться более подробно по работе с Integration API через REST? Здесь совсем уныло https://nsoft-s.com/mcserverhelp/index. ... ionapi.htm, как получить ответ от оператора хотя бы? Вопросов много, ответов нет. На форуме тоже не густо.
Аватара пользователя
Алексей Пикуров
На форуме ознакомиться. Что вы сейчас и делаете. Ответ от оператора через IntegrationAPI вы не получите. Он не для этого разрабатывался. Это легкий API, для быстрого получения либо отправки данных, одиночными командами.

Если вы хотите делать свой чат на сайт вместо того, что есть у нас, вам нужно работать напрямую с протоколом MyChat. Описание у вас есть, общая схема работы описана в начале файла протокола.
Аватара пользователя
Андрей Раков
Добрый день.

Получается, что вас не устраивает веб-сапорт только тем, что он открывает чат с конкретным пользователей, а не с кем-то, кто онлайн?

Вы сейчас просите нас повторить часть нашего протокола в виде REST запросов, не думаю, что это разумно.
ЛёнькаЩелкунов
Ваш чат к сожалению может открыть диалог с тем кто офлайн! В этом проблема.
Аватара пользователя
Андрей Раков
Да, а какие еще есть препятствия для его использования в вашем случае?
ЛёнькаЩелкунов
В целом нет препятствий, но чат с офлайн оператором, огромный минус который мешает жить! И надо что-то делать, а времени в обрез! Вот собственно и хотел уточнить как средствами вашего API можно всё это сделать? А чат у вас хороший, покупали на 70 пользователей. Всё устраивает, всё классно. Еще бы трабл с офлайн оператором обойти как то)
Аватара пользователя
Андрей Раков
Хорошо, теперь картина прояснилась.

Мы подготовим PHP скрипт, который выполнит проверку, кто из списка пользователей (список будете определять вы) онлайн и подставит их в веб-сапорт, чтобы чат открылся с пользователем в сети.

Таким образом посетитель сайта:
- входит на страницу;
- нажимает кнопку чата;
- выполняется PHP скрипт проверки;
- подставляется UIN оператора в сети;
- чат откроется с этим пользователем.

Думаю, завтра выложу его в это теме.
Аватара пользователя
Андрей Раков
Сделали скрипт проверки и перехода в веб-сапорт.
(889 байт) Скачиваний: 258

Настройка PHP скрипта:
Код: Выделить всё
<?php
// Параметры подключения:

// адрес сервера
$host              = 'mychat-server.com';
// порт веб-сервера
$portWEB           = '443';
// шифрование на веб-сервере
$isUseHttps        = true;
// список UIN-ов пользователей, через запятую
$UINS              = "15427,3,5454,6,13041";
// IntegrationAPI ключ
$integrationAPIKey = 'iddqd';

HTML код крайне прост, вставьте его где-то на странице:
Код: Выделить всё
<form method="POST" action="/путь_к_скрипту/mcUserCheck.php">
    <input type="submit" value="Открыть чат">
</form>

Внешний вид кнопки вы можете настроить пока самостоятельно.

Но есть одна неприятность — мы выяснили, что в 6.8 не работает REST функция проверки пользователя онлайн ли он, так что увидеть работу этого функционала можно в новой версии.

Новая версия уже на подходе, совсем немного осталось!
ЛёнькаЩелкунов
Скрипт работает, но такой трабл наблюдается. Когда проверял первый раз веб чат, новому пользователю был присвоен UIN = 83. В другом браузере всё нормально. Потом этот тестовый пользователь был удален и сейчас если я пытаюсь открыть чат, то вылазит ошибка #17. Как быть в этой ситуации. И еще один вопрос, можно ли как то сделать чтоб чат открывался не в новом окне, а на той же странице?
Вложения
trabl.png
trabl.png (10.09 КБ) Просмотров: 7249
Аватара пользователя
Андрей Раков
Какая у вас версия чата?

Да логично, если пользователь удален — вы получите эту ошибку, не вижу проблемы. Возможно я вас не правильно понял, объясните как-то иначе.

Открывать ссылку вы можете как угодно — скрипты у вас на руках.
ЛёнькаЩелкунов
Здравствуйте! Подскажите, можно ли через сокеты получить список пользователей из группы "Веб поддержки", ручное добавление UIN в скрипт не лучшее решение, т.к. люди которые работают в той организации не смогут это делать самостоятельно! А люди в веб поддержке могут меняться как перчатки! Было бы хорошо, чтоб в админ панеле можно было этот список формировать и получать список UIN оттуда. Понимаю, что достал уже с вопросами, но это действительно важно!
Аватара пользователя
Андрей Раков
Добрый день.

Да, это можно сделать.

Сейчас в админке сервера есть инструмент "Веб-поддержка на сайт", там формируются группы операторов, мы добавим отображение индекса групп, чтобы по нему можно было выполнить запрос и получить список юзеров.

Но вы должны понимать, что данный функционал будет только в новой версии и нужно будет обновиться :)
ЛёнькаЩелкунов
Это понятно! А как скоро выйдет обновление, через месяц, два? И такой момент, можно ли к имени клиента, который пишет в чат с сайта, добавить префикс например "Веб клиент"
Аватара пользователя
Андрей Раков
Новая версия будет на следующей неделе, версия 7.0.

Переименование можно сделать в разделе "Инструменты" - "Скрипты", событие "OnRegistered". Пример скрипта дадим чуть позже.

Пожалуйста, создавайте отдельные темы для разных вопросов, не лепите все в одну.
Аватара пользователя
Алексей Пикуров