Перейти к основному содержимому

Создание сообщения

Чтобы создать сообщение, используйте метод СистемаВзаимодействия.СоздатьСообщение(). Необходимые параметры:

  • ИдентификаторОбсуждения

    Ууид. Идентификатор обсуждения, в которое нужно отправить сообщение.

  • Получатели

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

  • ТекстСообщения

    Строка. Текст сообщения, который отправляется в обсуждение.

  • Вложения

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

В ответ возвращается идентификатор (Ууид) этого сообщения на сервере системы взаимодействия.

Создание обсуждения и сообщений, получение непрочитанных сообщений

// Создание обсуждения между двумя пользователями.
пер ИдОбсуждения: Ууид
пер ИдСообщения: Ууид

попытка
знч НазваниеОбсуждения = "Название обсуждения"
знч КлючОбсуждения = "Ключ обсуждения"

// Создание обсуждения между двумя пользователями.
// Сохраните идентификатор обсуждения.
ИдОбсуждения = СистемаВзаимодействия.СоздатьОбсуждение([ИдПользователяСВ1, ИдПользователяСВ2],
НазваниеОбсуждения, КлючОбсуждения)
поймать Исключение : ИсключениеСистемыВзаимодействия
// Обработка исключения...
;

// Создание сообщения для второго пользователя.
попытка
пер МассивПолучателейСообщения: Массив<Ууид> = новый Массив<Ууид>()
МассивПолучателейСообщения.Добавить(ИдПользователяСВ2)

знч ТекстСообщения = "Привет, пользователь!"
// Сохраните идентификатор сообщения системы взаимодействия.
ИдСообщения = СистемаВзаимодействия.СоздатьСообщение(ИдОбсуждения,
МассивПолучателейСообщения, ТекстСообщения)

поймать Исключение : ИсключениеСистемыВзаимодействия
// Обработка исключения...
;

// Создание других сообщений.
// ...

// Получение непрочитанных сообщений.
попытка
пер МассивНовыхСообщений = СистемаВзаимодействия.ПолучитьНепрочитанныеСообщения(ИдОбсуждения)

// Обход массива непрочитанных сообщений.
для Сообщение из МассивНовыхСообщений
// Обработка непрочитанных сообщений...
;

поймать Исключение : ИсключениеСистемыВзаимодействия
// Обработка исключения...
;

Использование служебного пользователя для отправки сообщения

@ВПодсистеме
структура Сообщение
обз знч Текст: Строка
обз знч Получатель: Пользователи.Ссылка
;

@ВПроекте
метод ОтправитьУведомление(ИдПолучателя: ИдПользователя)

знч ИдОперацииДляЗаданий = новый Ууид()

знч Получатель = Пользователи.Найти(ИдПолучателя)
знч Сообщение = новый Сообщение("Текст уведомления", Получатель)

ЗапланированныеЗадания.Создать(&ОтправитьСообщение, Сообщение)
.Настроить(Ключ = "СообщениеСВ_" + ИдОперацииДляЗаданий,
ПовторыПриОшибке = СтратегияПовтораЗадания.Инкремент(3, 10с, 20с))
.Запланировать()
;

@ВПодсистеме
метод ОтправитьСообщение(Сообщение: Сообщение)
// Получим ссылку на служебного пользователя
// по его идентификатору в приложении
знч БотДляОтправки = Пользователи.Найти(ИдБота)
исп СистемаВзаимодействия.УстановитьТекущегоПользователяВзаимодействия(БотДляОтправки)

// Фиктивное получение идентификатора обсуждения в рамках примера
знч ИдентификаторОбсуждения: Ууид = ПолучитьИдентификаторОбсужденияКаналаУведомлений(Сообщение.Получатель)
знч ИдПользователя = СистемаВзаимодействия.ПолучитьИдПользователяВзаимодействия(Сообщение.Получатель)

СистемаВзаимодействия.СоздатьСообщение(ИдентификаторОбсуждения, ИдПользователя, Сообщение.Текст)
;

Создание сообщения с вложением

знч ИдПользователяСВ = Ууид{520a34cb-f8cb-4c79-ba78-45b7fdfb080a}

// Создание сообщения c вложением.
попытка
// Загрузка вложения на сервер взаимодействия.
знч Файл = новый Файл("C:/test/price.xlsx")
знч Вложение = СистемаВзаимодействия.ЗагрузитьВложение(
Содержимое = Файл.ОткрытьПотокЧтения(),
Имя = "price.xlsx",
ТипСодержимого = "application/octet-stream"
)

пер МассивПолучателейСообщения : Массив<Ууид> = новый Массив<Ууид>()
МассивПолучателейСообщения.Добавить(ИдПользователяСВ)

// Создание сообщения с вложением.
// Сообщения с вложениям можно создавать без текста.
пер ИдСообщения = СистемаВзаимодействия.СоздатьСообщение(
ИдОбсуждения = ИдОбсуждения,
Получатели = МассивПолучателейСообщения,
Вложения = [Вложение]
)

// Получение отправленного сообщения.
знч Сообщение = СистемаВзаимодействия.НайтиСообщение(ИдСообщения)

знч ВходящееВложение = Сообщение.Вложения[0]
знч ИдВложения = ВходящееВложение.Ид // 1aee7439-6268-4f01-a4e3-432ac0dd79f4
знч ИмяФайла = ВходящееВложение.Имя // price.xlsx
знч РазмерФайла = ВходящееВложение.Размер // 1024 (в байтах)
знч Содержимое: Байты = ВходящееВложение.ПолучитьБайты()

// Сохранение вложения на компьютер.
пер НовыйФайл = новый Файл("C:/test/price_new.xlsx")
исп ПотокЗаписи = НовыйФайл.ОткрытьПотокЗаписи()
ПотокЗаписи.Записать(Содержимое)
ПотокЗаписи.Закрыть()
поймать Исключение : ИсключениеСистемыВзаимодействия
// Обработка исключения...
;