Долгое время стандартом интеграции 1С со Skype считалось использование библиотеки Skype4Com.dll. Это позволяло разработчикам напрямую обращаться к API десктопного приложения. Однако мир технологий изменился: Microsoft прекратила поддержку этого метода, перейдя на облачные протоколы и строгие стандарты безопасности. Сегодня задача "сконнектить" 1С и Skype требует иного архитектурного подхода. В этой статье мы разберем, как построить современную систему взаимодействия, используя Skype Bot API и механизмы платформы 1С:Предприятие 8.3.
Ранее взаимодействие строилось на уровне локального компьютера, где установлена 1С и запущен Skype. Использование COM-объекта позволяло читать сообщения и управлять звонками. В актуальных версиях Skype Desktop API закрыто. Современный Skype — это облачный сервис, и общение с ним происходит через HTTP-запросы. Как справедливо отмечено в обсуждении, простая отправка URI-команд (звонков или сообщений) возможна, но для полноценного приема данных и обработки входящих сообщений необходимо использовать Bot Framework.
Для начала взаимодействия нам необходимо создать "посредника" — бота. Разберем этот процесс по шагам:
App ID и App Password (секрет клиента). Они понадобятся нам для авторизации запросов из 1С.Чтобы 1С могла "слышать" Skype, она должна выступать в роли веб-сервера. Для этого мы будем использовать объект метаданных HTTP-сервисы. Рассмотрим структуру нашего сервиса:
Создадим новый HTTP-сервис, например, с именем SkypeIntegration. В поле "Корневой URL" укажем skype_bot. Внутри сервиса создадим шаблон URL с именем messages и путем /v1/messages.
Для обработки входящих данных нам необходимо реализовать метод POST. Разберем программный код, который будет принимать JSON-пакет от Skype:
Функция СообщенияPOST(Запрос)
// Получаем тело запроса в виде строки
ДанныеJSON = Запрос.ПолучитьТелоКакСтроку("UTF-8");
// Подготавливаем чтение JSON
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(ДанныеJSON);
// Читаем структуру данных (Activity object)
Попытка
СтруктураСообщения = ПрочитатьJSON(Чтение);
Чтение.Закрыть();
Исключение
Возврат Новый HTTPСервисОтвет(400); // Ошибка формата
КонецПопытки;
// Проанализируем тип события. Нас интересует "message"
Если СтруктураСообщения.type = "message" Тогда
ТекстСообщения = СтруктураСообщения.text;
ИдентификаторОтправителя = СтруктураСообщения.from.id;
// Здесь мы можем запустить логику обработки:
// Создать задачу, найти контрагента или отправить ответ
ОбработатьВходящееСообщение(ИдентификаторОтправителя, ТекстСообщения);
КонецЕсли;
// Обязательно возвращаем статус 200 (OK), иначе сервер Microsoft
// будет слать повторы, считая, что мы не приняли данные
Ответ = Новый HTTPСервисОтвет(200);
Возврат Ответ;
КонецФункции
Просто написать код в 1С недостаточно. Проанализируем инфраструктурные требования:
Для того чтобы 1С сама написала пользователю, нам нужно выполнить обратное действие — отправить POST-запрос к API Skype. Для этого используется объект HTTPСоединение.
Перед отправкой необходимо получить токен доступа (OAuth 2.0), используя ваши App ID и App Password. Рассмотрим пример функции отправки:
Процедура ОтправитьСообщениеВSkype(КомуИД, Текст)
Сервер = "smba.trafficmanager.net"; // Пример адреса для Skype
Ресурс = "/v3/conversations/" + КомуИД + "/activities";
// Формируем структуру ответа
СтруктураОтвета = Новый Структура;
СтруктураОтвета.Вставить("type", "message");
СтруктураОтвета.Вставить("text", Текст);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, СтруктураОтвета);
ТелоЗапроса = ЗаписьJSON.Закрыть();
// Создаем HTTP-запрос
Запрос = Новый HTTPЗапрос(Ресурс);
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + ТекущийТокенАвторизации);
Запрос.УстановитьТелоИзСтроки(ТелоЗапроса);
Соединение = Новый HTTPСоединение(Сервер, 443,,,,, Новый ЗащищенноеСоединениеOpenSSL());
Попытка
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния <> 201 Тогда
ЗаписьЖурналаРегистрации("Skype.Ошибка", УровеньЖурналаРегистрации.Ошибка,,, Ответ.ПолучитьТелоКакСтроку());
КонецЕсли;
Исключение
// Обработка ошибок сетевого соединения
КонецПопытки;
КонецПроцедуры
Если разработка собственного HTTP-сервиса кажется слишком сложной или компания не готова выставлять сервер 1С "наружу", рассмотрим другие пути:
1. Использование Microsoft Graph API. Это современный и мощный инструмент для работы со всей экосистемой Microsoft 365. Если ваша компания использует корпоративный Skype (или перешла на Teams), Graph API предоставляет гораздо больше возможностей, включая управление календарями, статусами и файлами. Авторизация здесь также строится на OAuth 2.0.
2. Промежуточные шлюзы (агрегаторы мессенджеров). Существуют платные сервисы, которые предоставляют единое API для всех мессенджеров (Skype, Telegram, WhatsApp). В этом случае 1С общается только с одним сервисом по упрощенному протоколу, а сервис сам решает вопросы авторизации в Skype, поддержки SSL и форматов сообщений. Это экономит время разработки, но требует ежемесячной оплаты.
3. Web SDK в Поле HTML-документа. Рассмотрим вариант, предложенный в обсуждении: запуск веб-версии Skype внутри формы 1С. Мы можем использовать объект ПолеHTMLДокумента и попытаться интегрировать Skype Web SDK. Это позволит пользователю видеть интерфейс чата прямо в 1С, но программное взаимодействие (автоматическое чтение и отправка без участия человека) будет крайне затруднено из-за ограничений безопасности браузеров.
Важно помнить, что HTTP-сервисы должны отвечать быстро. Если при получении сообщения от Skype вам требуется выполнить тяжелую операцию в 1С (например, сформировать сложный отчет и отправить его обратно файлом), не делайте этого непосредственно в методе POST. Выясним причину: сервер Skype ждет ответа в течение нескольких секунд, и если 1С "задумается", соединение будет разорвано.
Правильным подходом будет:
200 OK.Регламентным заданием, которое работает в фоновом режиме.Интеграция 1С и Skype сегодня — это полноценный проект по созданию REST-архитектуры. Несмотря на то, что старая библиотека Skype4Com.dll ушла в прошлое, новые инструменты Bot Framework и HTTP-сервисы 1С открывают гораздо более широкие возможности для автоматизации бизнеса: от простых уведомлений до сложных интерактивных ботов-помощников, работающих внутри вашей учетной системы.