В современных бизнес-процессах часто возникает задача автоматического уведомления пользователей через мессенджеры. Skype, несмотря на обилие конкурентов, остается важным корпоративным инструментом. Отправка простого текста обычно не вызывает затруднений, но когда дело доходит до передачи документов, отчетов или счетов в формате PDF, разработчики сталкиваются с техническими нюансами Microsoft Bot Framework API. Разберем подробно, как модифицировать стандартную отправку сообщений для поддержки вложений.
Прежде чем переходить к файлам, проанализируем базовый код для отправки текстового сообщения через API версии v3. Для взаимодействия используется объект HTTPСоединение и метод POST к адресу activities. Основной момент здесь — получение авторизационного токена Bearer, который имеет ограниченный срок жизни (обычно 1 час или 3600 секунд). Если ваш бот перестает работать через час, причина кроется в необходимости обновления этого токена.
Рассмотрим структуру стандартного запроса, от которой мы будем отталкиваться:
ЗаголовкиHTTP = Новый Соответствие;
ЗаголовкиHTTP.Вставить("Content-Type", "application/json");
ЗаголовкиHTTP.Вставить("Authorization", "Bearer " + Токен);
JSONСтруктура = Новый Структура;
JSONСтруктура.Вставить("type", "message");
JSONСтруктура.Вставить("text", ТекстСообщения);
HTTPЗапрос = Новый HTTPЗапрос("apis/v3/conversations/" + LoginSkype + "/activities", ЗаголовкиHTTP);
Для реализации передачи файлов нам необходимо дополнить JSONСтруктура новым свойством attachments. Это массив объектов, так как одно сообщение может содержать несколько файлов. Каждый объект вложения должен описывать тип контента, его местонахождение и имя.
Выясним, какие поля являются обязательными для объекта вложения:
image/png, для документов — application/pdf.Проанализируем алгоритм подготовки данных в 1С. Поскольку мы не можем передать файл напрямую, нам нужно реализовать промежуточный этап. Рассмотрим шаги:
ПолучитьИмяВременногоФайла.ДвоичныеДанные.HTTPСоединение методом PUT или POST), чтобы получить публичную ссылку.Теперь разберем, как должен выглядеть код формирования структуры сообщения с вложением в 1С. Мы создадим массив вложений и добавим в него структуру, описывающую наш файл.
// Подготовим массив вложений
МассивВложений = Новый Массив;
Вложение = Новый Структура;
Вложение.Вставить("contentType", "application/pdf"); // Указываем тип файла
Вложение.Вставить("contentUrl", "https://yourserver.com/files/invoice123.pdf"); // Ссылка на файл
Вложение.Вставить("name", "Счет_на_оплату.pdf"); // Имя файла для пользователя
МассивВложений.Добавить(Вложение);
// Собираем общую структуру сообщения
JSONСтруктура = Новый Структура;
JSONСтруктура.Вставить("type", "message");
JSONСтруктура.Вставить("text", "Направляем вам документы по заказу:"); // Можно добавить текст к файлу
JSONСтруктура.Вставить("attachments", МассивВложений);
// Сериализация в JSON
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, JSONСтруктура);
ТелоЗапросаJSON = ЗаписьJSON.Закрыть();
Если мы хотим, чтобы файл выглядел не просто как ссылка, а как красивая карточка с кнопкой скачивания или превью, проанализируем использование HeroCard. В этом случае contentType вложения меняется на application/vnd.microsoft.card.hero, а в поле content передается объект, содержащий заголовок, текст и массив кнопок buttons.
Это особенно полезно для отправки изображений, так как Skype сможет сгенерировать миниатюру (превью) прямо в окне диалога.
Разберем основные моменты, которые могут вызвать ошибки при реализации:
contentUrl работал строго по протоколу HTTPS. Ссылки HTTP могут блокироваться в целях безопасности.contentUrl.id беседы. Часто идентификаторы групп имеют специфический формат, который лучше всего получать через механизм webhook, когда бот первым получает сообщение из этой группы.Проанализировав ситуацию, можно сделать вывод: ключ к успешной отправке файлов из 1С в Skype — это правильное сочетание предварительной загрузки файла на веб-сервер и корректное заполнение массива attachments в JSON-пакете. Следуя приведенной структуре, вы сможете реализовать полноценный обмен документами в автоматическом режиме.