Роботы, плагины и скрипты к чату MyChat. Разработка альтернативных клиентов и различных утилит. Технические вопросы по программированию, замечания и предложения по развитию API
ИгорьЧ
Добрый день.

Версия MyChat 7.7.0
Отправляю сообщение через API функцией cmd 0002
Все замечательно работает, но хотелось бы прикрутить элементарное оформление к сообщениям: цвет, жирность, оформление ссылки и т.п.
В документации не нашел информации как это сделать. Пробовал смотреть в логах как уходят оформленные сообщения и делать по аналогии - то же не получается.

Подскажите плз....
Аватара пользователя
Алексей Пикуров
Здравствуйте, Игорь. Готовим справку, я отвечу вам в понедельник.
Аватара пользователя
Алексей Пикуров
Сорри, не получается пока что выложить новые статьи, заняты другими вещами. Поставили в план работ, сделаем, когда будет время.
ИгорьЧ
Утро доброе.
Хорошо, жду с нетерпением (и думаю, что не только я) .
Аватара пользователя
Степан
Да, тоже очень жду.
Возможно, у кого-нибудь уже есть какие-либо из кодов - жирный текст, курсив, увеличенный размер,цвет - можете в личку кинуть?
А то наладил взаимодействие с 1С по нескольким документам - очень хочется определенные кусочки текста выделить для пользователя для наглядности...
Аватара пользователя
ЮрийИваницкий
Доброго всем дня. Тоже жду.
Если требуются сообщения системы в несколько строк, то без выделения ключевых слов не обойтись.
Надеюсь на понимание.
Аватара пользователя
Алексей Пикуров
Добавили в список работ, но пока этим вопросом не занимались, готовим очень большое обновление. Следите за новостями.
Аватара пользователя
ЮрийИваницкий
Следим. Крепи́мся. Верим.
Аватара пользователя
Степан
Добрый день.
Обновления вышли, все замечательно - подскажите, а какие-то движения в этом направлении есть?
Уже как только не "изворачивался"...
В стандартном Integration API через Rest запрос по команде ""cmd", "0002" нет возможности передать тип сообщения, просто текст.
Поступил по другому - повесил обработчик на OnRequestByREST, перехватываю сообщения и дальше отправляю их через mSendPrivateMessage.
Но вот дальше пока проблемы. Хотел использовать тип iMsgType=5 (MSG_TYPE_MARKDOWN) - но разметка маркдаун не срабатывает...
Отпарсил сообщения, которые отсылаются между пользователями, в результате использую mSendPrivateMessage с типом MsgType=0 (MSG_TYPE_OLD_SHIT) и срокой вида "L$F-16777208#536870911#3#ITest", где кодируется соответственно цвет шрифта и фона, размер и тип шрифта.
Сообщения стали приходить с оформлением - но вот во всплывающем окошке все показывается без оформления, да еще и с управляющими символами... А ведь при обычной отсылке там показывается без оформления - значит как-то по другому работает.... - пока не разобрался (( Но зато во всплывающем окошке срабатывает обычная html разметки типа <b></b> - но вот в сообщении она не показывается....

В общем, мучаюсь с разных сторон - может быть что-то есть уже готовое, более простое?
Аватара пользователя
Алексей Пикуров
В стандартном Integration API через Rest запрос по команде ""cmd", "0002" нет возможности передать тип сообщения, просто текст.

Есть. Справка, параметр MsgType.

Markdown в сообщениях чата ещё не поддерживается, это наработка "на будущее".
Сообщения стали приходить с оформлением - но вот во всплывающем окошке все показывается без оформления, да еще и с управляющими символами... А ведь при обычной отсылке там показывается без оформления - значит как-то по другому работает.... - пока не разобрался (( Но зато во всплывающем окошке срабатывает обычная html разметки типа <b></b> - но вот в сообщении она не показывается....

Во всплывающем окошке будет обычный текст, никакой разметки. Насчёт html — да, всплывающее окошко поддерживает несколько примитивных тегов, но это всё, на это ориентироваться нельзя. Спасибо, кстати, что заметили, я настрою экранирование, чтобы не менялся внешний вид мессаджей во всплывающем окошке.

Насчёт цветовой разметки в чате (OLD_SHIT) — она не очень корректно работает, руки не доходят до полной доводки и документирования. Вероятно, мы её оставим для совместимости, а потом добавим внутри текста теги вроде html или phpbb, чтобы удобно было "руками" формировать сообщения при необходимости.
Аватара пользователя
Степан
Справка, параметр MsgType

Понял, мы просто еще на версии 8.1 - там этого не было.

Во всплывающем окошке будет обычный текст, никакой разметки.

Да это и хорошо, но там L$ показывается, начиная со второй строки, если я использую OLD_SHIT, а если во второй строке не добавлять L$, то тогда в сообщении эти строки не выводятся... Да и ладно, пусть, мелочи....

И все-же, основной вопрос - можно ли как-то отправить сообщение, например, с жирным текстом, не используя полную конструкцию "L$F-16777208#536870911#3#BTest" в сообщении с типом OLD_SHIT, а как-то проще?
Аватара пользователя
Алексей Пикуров
Проще пока не выйдет.
Аватара пользователя
Алексей Пикуров
Так, мы уже на подходе к реализации отправки форматированных сообщений. Есть MessageType, в версии 8.6 уже сделали специальный тип сообщения, я подготовлю пример, там всё будет приятно и несложно.
ПавелСуткин
Добрый день. Дайти ссылку пожалуйста на мануал или примеры.. Как отправлять форматированные сообщения через АПИ?
Аватара пользователя
Алексей Пикуров
Нету ещё документации. Война, пока что мы беженцы и работать нормально не получается. Закончится это всё, потом напишем.
Аватара пользователя
NeiTRoN4ik
Добрый день. Надеюсь, что разработчики будут не против, если выложу то, что удалось раскопать по этому вопросу.

Зная, из переписки выше, что новый тип сообщения все-таки был добавлен, методом перебора выяснил, что MsgType = 47

Далее, я как только не извращался с форматом html, надеясь, что он внутри, но нет..
Понять, как строить конструкцию форматированного сообщения, помог баг, который встречается довольно редко при отправке форматированного сообщения, но все ж таки иногда случается. При этом баге в конец форматированного сообщения вдруг добавляется
font]/font]

Тогда я подумал, что все должно находиться внутри конструкции [font][/font] и стал копать в этом направлении.
В итоге, потратив целый день, вот что получилось:
Код: Выделить всё
[font bg=#ff00bb color=#fac447 size=3 style=i;b;u;s;]  bla-bla-bla  [/font]

Где:
bg - цвет фона текста;
color - цвет текста;
size - размер текста;
style - набор параметров через точку с запятой: i - курсив; b - жирный; u - нижнее подчеркивание; s - перечеркивание.

К сожалению, не удалось все-таки отгадать, как реализуется выравнивание текста и цвет фона строки
Аватара пользователя
Алексей Пикуров
Добрый день. Без проблем.
Выравнивание делается параграфами, они идут с начала строки, вот так:

Код: Выделить всё
[p=right indent=10 color=#aabbcc]

Можно для выравнивания использовать ещё "center" и "justify". indent — отступ слева. Параграф — это одна строка. Параметры "indent" и "color" необязательны.

Если выравнивания нету (by default, по левому краю, без отступов и цветового выделения), то тег параграфа с начала строки не нужен.
Аватара пользователя
Алексей Пикуров
Да, ещё. В параметре "style=i;b;u;s;" не нужны точки с запятыми. Просто "style=ibus", буквы после "=" в любом порядке.
Аватара пользователя
NeiTRoN4ik
Спасибо!

А подскажите тогда заодно, пожалуйста, я так понимаю, что при преобразовании формата, происходит удаление незначащих символов до и после [font] и [/font]. Получается, что, например, если нужно выделить слово в предложение, то слова до и после нужного слова склеиваются с самим выделяемым словом (так происходит и в отправке из самом чата). Может быть есть какой-то неочевидный способ все-таки, чтобы они не склеились? Хотя скорее всего его нет конечно..
Аватара пользователя
Алексей Пикуров
Покажите пример, что вы хотите сделать.

Что-то такое?

test-selected-text.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
NeiTRoN4ik
Да, именно. Сейчас такое слипается
Аватара пользователя
Алексей Пикуров
Ничего не слипается. Содержимое строки:

Код: Выделить всё
test [font color=#FFFFFF bg=#FF0000 style=bi]\u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0439 \u0442\u0435\u043a\u0441\u0442[/font] test 2
Аватара пользователя
NeiTRoN4ik
Может быть это пофиксили, у меня сейчас 8.9.0 версия

Сейчас выглядит так:
ввод форматированного текста.PNG

сообщение форматированного текста.PNG
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Алексей Пикуров
Ну, во-первых, используйте последнюю версию. Сейчас это 2023.1.5.

P.S. Чтобы не заниматься угадыванием, что да как, вы можете в консоли клиента включить debug on, чтобы видеть содержимое команд, что уходит на сервер и приходит на клиент. Выключается — debug off.

Включаете дебаг, отправляете сообщение, смотрите, что внутри, в консоли (Ctrl+`).
Справка по включению/выключению протоколирования трафика на MyChat Client
Аватара пользователя
Алексей Пикуров
Может быть это пофиксили, у меня сейчас 8.9.0 версия

Да, пофиксили в 8.12.
Аватара пользователя
NeiTRoN4ik
P.S. Чтобы не заниматься угадыванием, что да как, вы можете в консоли клиента включить debug on, чтобы видеть содержимое команд, что уходит на сервер и приходит на клиент. Выключается — debug off.

ого, вот как оказывается можно было легко узнать про способ отправки форматированного сообщения со всеми атрибутами ...

Спасибо за ответы!
Аватара пользователя
Алексей Пикуров
В MyChat много чего есть хорошего :) Пожалуйста.