Заметки из Зазеркалья

07.09.2018

Пересылка файлов с помощью сообщений системы взаимодействия и видеоконференции для двух и более человек

Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.

Планируется в версии 8.3.14.

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

Обмен файлами

Теперь вы можете прикреплять к сообщениям произвольные файлы. Файлы, прикрепленные к сообщению, отображаются в виде гиперссылок после текста сообщения, до действий сообщения. У гиперссылки отображается размер файла, а также картинка, соответствующая типу файла:

001.png

При нажатии левой кнопки мыши на гиперссылку файла (вложения) выполняется открытие или сохранение файла в зависимости от его типа и от вида клиентского приложения. Это стандартное действие вы можете переопределить средствами встроенного языка.

Прикрепление файлов и отправка сообщений

Прикрепить файлы к сообщению вы можете несколькими способами:

  • нажать на кнопку Прикрепить файл в поле ввода сообщения,
  • перетащить файл из операционной системы,
  • вставить изображение (картинку) из буфера обмена.

002.png

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

004.png

Когда вы отправляете сообщение с файлами, его файлы помещаются по внешнее файловое хранилище на сервере взаимодействия. В то время, пока файлы загружаются в хранилище, в сообщении отображается индикатор прогресса и общий процент загрузки на все файлы сообщения.

Хранение файлов

Файлы, прикрепленные к сообщениям, хранятся на сервере взаимодействия, во внешнем хранилище. Поддерживаются хранилища Amazon S3, Google Cloud, OpenStack Swift и другие, реализующие протокол Amazon S3.

Если на сервере взаимодействия внешнее хранилище не подключено, то в интерфейсе клиентских приложений будут отсутствовать возможности прикрепления файлов к сообщениям. Например:

  • кнопка Прикрепить файлы не отображается,
  • нет возможности вставить картинку из буфера обмена,
  • перетаскивание файлов из операционной системы приводит к стандартным действиям, а не к прикреплению файла.

Ограничения на вложения

На собственном сервере системы взаимодействия вы можете задать ограничения на некоторые характеристики вложений. Например, вы можете ограничить:

  • размер одного загружаемого файла,
  • суммарный размер загружаемых файлов в сутки,
  • суммарный размер получаемых файлов в сутки.

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

003.png

Встроенный язык

Во встроенном языке мы реализовали набор объектов, которые позволяют выполнять все операции с прикрепленными файлами. Основным объектом среди них является коллекция вложений (КоллекцияВложенийСистемыВзаимодействия), которая имеется у каждого сообщения. Она состоит из объектов ВложениеСистемыВзаимодействия. Коллекция вложений доступна через новое свойство сообщения – Вложения.

Далее показан пример создания сообщения и прикрепления к нему файла. Полное имя файла хранится в переменной ПутьКФайлу.

Сообщение = Новый СообщениеСистемыВзаимодействия(ИдентификаторОбсуждения); ... Поток = ФайловыеПотоки.ОткрытьДляЧтения(ПутьКФайлу); Сообщение.Вложения.Добавить(Поток, ИмяФайла); Сообщение.Записать();

Контекстное меню

Для сообщений мы реализовали контекстное меню, имеющее стандартный набор команд. Например, само сообщение можно скопировать, редактировать или удалить.

007.png

Файл, прикрепленный к сообщению, можно открыть или сохранить.

008.png

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

009.png

Если вы хотите изменить состав этих команд или добавить к ним собственные команды, вы можете сделать это из встроенного языка. Менеджеру системы взаимодействия мы добавили новый метод – ПодключитьОбработчикФормированияКоманд(). С помощью этого метода вы можете назначить собственную процедуру, которая будет обрабатывать событие формирования команд.

В эту процедуру одним из параметров передаётся массив команд меню. Он заполнен стандартными командами. Вы можете удалить ненужные команды, добавить стандартные команды системы оповещения, или подключить собственные процедуры, которые будут вызваны при нажатии на те, или иные пункты меню.

Групповые видеоконференции

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

Мы не стали делать какой-то особенный режим для видеоконференций, просто вы можете в любой момент добавлять и удалять участников видеозвонка. На сервере взаимодействия существует стандартное ограничение на количество участников – не более десяти. Но если вы используете собственный сервер взаимодействия, вы можете изменить это ограничение при необходимости.

Управление расположением участников

Мы реализовали возможность управления расположением участников видеоконференции.

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

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

Таким образом, теперь вы можете быстро подключить к своему видеозвонку нового участника, чтобы уточнить у него обсуждаемый вопрос. Или, например, можете провести совещание с пользователями. Причем пользователи могут присоединяться к совещанию по мере готовности до тех пор, пока совещание не завершено.

Рассказать друзьям: