Получение и создание обсуждений
Для отправки и получения сообщений нужно получить обсуждения. Для этого используются следующие методы типа СистемаВзаимодействия:
- ПолучитьНепрочитанныеОбсуждения() — возвращает список идентификаторов непрочитанных обсуждений. Количество можно выставить в параметре ЛимитОбсуждений. Максимальное число обсуждений, полученных за один раз, не может превышать 100 (даже если таких обсуждений больше).
- ПолучитьОбсуждения() — возвращает список обсуждений, которые соответствуют указанным в параметрах идентификаторам.
- НайтиОбсуждение() — возвращает обсуждение системы взаимодействия (ОбсуждениеСистемыВзаимодействия) по его идентификатору или ключу.
- НайтиОбсуждения() — возвращает список обсуждений, которые соответствуют установленным фильтрам. Контекстные обсуждения доступны, только если у текущего пользователя взаимодействия есть права на чтение сущностей, указанных в контекстах обсуждений. Чтобы получить все обсуждения, а не только те, в которых участвует активный пользователь, необходимо вызвать метод в привилегированном режиме.
- СоздатьОбсуждение() — создает новое групповое обсуждение с указанными в методе параметрами.
- СоздатьЛичноеОбсуждение() — создает новое обсуждение между двумя пользователями.
Создание обсуждения и сообщений, получение непрочитанных сообщений
// Создание обсуждения между двумя пользователями.
пер ИдОбсуждения: Ууид
пер ИдСообщения: Ууид
попытка
знч НазваниеОбсуждения = "Название обсуждения"
знч КлючОбсуждения = "Ключ обсуждения"
// Создание обсуждения между двумя пользователями.
// Сохраните идентификатор обсуждения.
ИдОбсуждения = СистемаВзаимодействия.СоздатьОбсуждение([ИдПользователяСВ1, ИдПользователяСВ2],
НазваниеОбсуждения, КлючОбсуждения)
поймать Исключение : ИсключениеСистемыВзаимодействия
// Обработка исключения...
;
// Создание сообщения для второго пользователя.
попытка
пер МассивПолучателейСообщения: Массив<Ууид> = новый Массив<Ууид>()
МассивПолучателейСообщения.Добавить(ИдПользователяСВ2)
знч ТекстСообщения = "Привет, пользователь!"
// Сохраните идентификатор сообщения системы взаимодействия.
ИдСообщения = СистемаВзаимодействия.СоздатьСообщение(ИдОбсуждения,
МассивПолучателейСообщения, ТекстСообщения)
поймать Исключение : ИсключениеСистемыВзаимодействия
// Обработка исключения...
;
// Создание других сообщений.
// ...
// Получение непрочитанных сообщений.
попытка
пер МассивНовыхСообщений = СистемаВзаимодействия.ПолучитьНепрочитанныеСообщения(ИдОбсуждения)
// Обход массива непрочитанных сообщений.
для Сообщение из МассивНовыхСообщений
// Обработка непрочитанных сообщений...
;
поймать Исключение : ИсключениеСистемыВзаимодействия
// Обработка исключения...
;
Получение непрочитанных обсуждений и сообщений
попытка
// Получение непрочитанных обсуждений.
пер МассивИдНепрочитанныхОбсуждений = СистемаВзаимодействия.ПолучитьНепрочитанныеОбсуждения(ЛимитОбсуждений = 10)
// Получение непрочитанных сообщений из каждого непрочитанного обсуждения (выдаются в хронологическом порядке).
для ИдНепрочитанногоОбсуждения из МассивИдНепрочитанныхОбсуждений
// Консоль.Записать("Обсуждение # " + ИдНепрочитанногоОбсуждения)
пер МассивНовыхСообщений = СистемаВзаимодействия.ПолучитьНепрочитанныеСообщения(ИдНепрочитанногоОбсуждения)
для Сообщение из МассивНовыхСообщений
// Консоль.Записать("Сообщение # " + Сообщение.Ид + " : " + Сообщение.Текст)
// Установка прочитанного сообщения как последнего прочитанного.
СистемаВзаимодействия.УстановитьПоследнееПрочитанноеСообщение(ИдНепрочитанногоОбсуждения, Сообщение.Ид)
;
;
поймать Исключение : ИсключениеСистемыВзаимодействия
// Обработка исключения...
;
Получение обсуждения по пользовательскому ключу
метод ПолучитьОбсуждениеДляУведомлений(КлючОбсужденияДляУведомлений: Строка): ОбсуждениеВзаимодействия
// Поиск обсуждения по ключу.
знч СписокОбсуждений = СистемаВзаимодействия.НайтиОбсуждения(Ключ = КлючОбсужденияДляУведомлений)
если СписокОбсуждений.Пусто()
возврат СоздатьОбсуждениеДляУведомленийПользователя(КлючОбсужденияДляУведомлений)
;
возврат СписокОбсуждений.Первый()
;
метод ПолучитьИдентификаторОбсужденияДляУведомлений(): Ууид
// В примере используется фиктивый ключ.
// В обычном случае он вычисляется по пользователю приложения.
знч КлючОбсужденияДляУведомлений = "Notification#105ea6f2-2e8f-11ed-a261-0242ac120002"
знч Обсуждение = ПолучитьОбсуждениеДляУведомлений(КлючОбсужденияДляУведомлений)
возврат Обсуждение.Ид
;
метод СоздатьОбсуждениеДляУведомленийПользователя(КлючОбсужденияДляУведомлений: Строка):
ОбсуждениеВзаимодействия
знч НазваниеОбсуждения: Строка = "" // Получение наименования обсуждения.
знч УчастникиОбсуждения: Массив<Ууид> = [] // Получение участников обсуждения.
знч ИдОбсуждения = СистемаВзаимодействия.СоздатьОбсуждение(
Название = НазваниеОбсуждения,
Участники = УчастникиОбсуждения,
Ключ = КлючОбсужденияДляУведомлений)
возврат СистемаВзаимодействия.НайтиОбсуждение(ИдОбсуждения)!
;
Добавление нового участника в существующее обсуждение
метод ДобавитьУчастникаВСуществующееОбсуждение(ИдОбсуждения: Ууид, ИдНовогоУчастника: Ууид)
знч Обсуждение = СистемаВзаимодействия.НайтиОбсуждение(ИдОбсуждения)
если Обсуждение == Неопределено
возврат
;
пер СписокУчастников = новый Массив<Ууид>(Обсуждение.ИдУчастников)
СписокУчастников.Добавить(ИдНовогоУчастника)
СистемаВзаимодействия.РедактироватьОбсуждение(
ИдОбсуждения = ИдОбсуждения,
Участники = СписокУчастников,
Название = Обсуждение.Название)
;