Отправка сообщений в Skype через Microsoft Bot Framework API
Интеграция - Мессенджеры и боты
Функция ПолучитьТокенSkype(IDПриложения, Пароль) Экспорт
ДанныеНастроек = ХранилищеСистемныхНастроек.Загрузить("ЧатБот", "Skype");
Если ДанныеНастроек <> Неопределено И ДанныеНастроек.Свойство("ТокенBearer") И ДанныеНастроек.Свойство("ДатаПолученияBearer") И ДанныеНастроек.ДатаПолученияBearer > ТекущаяДата() - 55 * 60 Тогда
ТокенBearer = ДанныеНастроек.ТокенBearer;
Возврат ТокенBearer;
КонецЕсли;
//grant_type=client_credentials&client_id=cffbb6ea-1f54-4d57-9d5b-1f04cedd228a&client_secret=jisp2}^{tyuUTHHKTJ5547?&scope=https%3A%2F%2Fapi.botframework.com%2F.default
ТелоЗапросаJSON = "grant_type=client_credentials&client_id=" + IDПриложения + "&client_secret=" + Пароль + "&scope=https%3A%2F%2Fapi.botframework.com%2F.default";
HTTPСоединение = Новый HTTPСоединение("login.microsoftonline.com", Неопределено, Неопределено, Неопределено, Неопределено, 120, Новый ЗащищенноеСоединениеOpenSSL);
ЗаголовкиHTTP = Новый Соответствие;
ЗаголовкиHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");
HTTPЗапрос = Новый HTTPЗапрос("botframework.com/oauth2/v2.0/token", ЗаголовкиHTTP);
HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаJSON);
HTTPОтвет = HTTPСоединение.ВызватьHTTPМетод("POST", HTTPЗапрос);
HTTPОтветТело = HTTPОтвет.ПолучитьТелоКакСтроку();
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(HTTPОтветТело);
HTTPОтветСтруктура = ПрочитатьJSON(ЧтениеJSON);
Если Не (HTTPОтвет.КодСостояния = 200) Или ТипЗнч(HTTPОтветСтруктура) = Тип("Структура") И HTTPОтветСтруктура.Свойство("error") Тогда
ОписаниеОшибки = "Ошибка: " + HTTPОтвет.КодСостояния + ?(ТипЗнч(HTTPОтветСтруктура) = Тип("Структура") И HTTPОтветСтруктура.Свойство("error_description"), HTTPОтветСтруктура.error_description, "");
ЗаписьЖурналаРегистрации("ЧатБот.Skype:", УровеньЖурналаРегистрации.Предупреждение, , , ОписаниеОшибки);
ВызватьИсключение ОписаниеОшибки;
КонецЕсли;
ТокенBearer = HTTPОтветСтруктура.access_token;
ХранилищеСистемныхНастроек.Сохранить("ЧатБот", "Skype", Новый Структура("ТокенBearer, ДатаПолученияBearer", ТокенBearer, ТекущаяДата()));
Возврат ТокенBearer;
КонецФункции
Функция ОтправитьСообщениеSkype(Токен, IDЧата, ТекстСообщения) Экспорт
HTTPСоединение = Новый HTTPСоединение("smba.trafficmanager.net", Неопределено, Неопределено, Неопределено, Неопределено, 120, Новый ЗащищенноеСоединениеOpenSSL);
ЗаголовкиHTTP = Новый Соответствие;
ЗаголовкиHTTP.Вставить("Content-Type", "application/json");
ЗаголовкиHTTP.Вставить("Authorization", "Bearer " + Токен);
JSONСтруктура = Новый Структура;
JSONСтруктура.Вставить("conversation", Новый Структура);
JSONСтруктура.conversation.Вставить("id", IDЧата);
JSONСтруктура.Вставить("from", Новый Структура);
JSONСтруктура.from.Вставить("id", "");
JSONСтруктура.Вставить("type", "message");
JSONСтруктура.Вставить("text", ТекстСообщения);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, JSONСтруктура);
ТелоЗапросаJSON = ЗаписьJSON.Закрыть();
//https://smba.trafficmanager.net/apis/v3/conversations/29:1SbCdrSJNasZnoQ_x4xaOMu27l4MSfF7iyhfaHgzW_f8/activities
HTTPЗапрос = Новый HTTPЗапрос("apis/v3/conversations/" + IDЧата + "/activities", ЗаголовкиHTTP);
HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаJSON);
HTTPОтвет = HTTPСоединение.ВызватьHTTPМетод("POST", HTTPЗапрос);
HTTPОтветТело = HTTPОтвет.ПолучитьТелоКакСтроку();
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(HTTPОтветТело);
HTTPОтветСтруктура = ПрочитатьJSON(ЧтениеJSON);
Если Не (HTTPОтвет.КодСостояния = 200 Или HTTPОтвет.КодСостояния = 201) Тогда
ОписаниеОшибки = "Ошибка: " + HTTPОтвет.КодСостояния + ?(ТипЗнч(HTTPОтветСтруктура) = Тип("Структура") И HTTPОтветСтруктура.Свойство("error") И HTTPОтветСтруктура.error.Свойство("message"), " - " + HTTPОтветСтруктура.error.message, "");
ЗаписьЖурналаРегистрации("ЧатБот.Skype:", УровеньЖурналаРегистрации.Предупреждение, , , ОписаниеОшибки);
ВызватьИсключение ОписаниеОшибки;
КонецЕсли;
Возврат HTTPОтветСтруктура;
КонецФункции
Пример использования:
Токен = ПолучитьТокенSkype("cffbb6ea-1f54-4d57-9d5b-2f04cedd228a", "jisp8}^{tyuTHHKTJ5547"); // айди и пароль бота
IDЧата = "29:2b9b13504f134aebad59a25a7bdc1f98@thread.skype"; // айди комнаты
ТекстСообщения = "Привет, мир!";
ОтправитьСообщениеSkype(Токен, IDЧата, ТекстСообщения);
Как получить ID и пароль бота?
1. Заходим на страницу https://dev.botframework.com/bots/new, предварительно залогинившись под учеткой microsoft
2. Заполняем поля: Display name, Bot handle, Long description, включаем Enable adding to a group.
3. Нажимаем «Create Microsoft APP ID and password» - копируем идентификатор приложения (ID приложения). Нажимаем «Создать для приложения» - копируем отображенный пароль (токен) – нажимаем «завершить и вернуться» - Registred
4. Сохраняем данные в блокнотик
5. Добавляем бота к себе в контакты, перейдя по ссылке вида https://join.skype.com/bot/cffbb6ea-1f54-4d57-9d5b-1f04cedd228a (кнопка Get bot embed codes)

Как получить ID беседы (группы, контакта)?
1. Идем на Webhook Tester и получаем ссылку вида
https://webhook.site/cfd9261e-a3d8-410f-8547-da9628390339
2. Вставляем эту ссылку в Messaging endpoint на странице настроек чат-бота, сохраняем
3. Пишем в скайпе из группы (айди которой хотим получить) сообщение боту вида "@botname test", где botname - имя созданного бота
4. Получаем в вебхук-тестере пост-запрос с джисоном, нужый нам айди находится в поле conversation.id

Может можно и проще - напишите.
Итог
Вбиваем данные и видим, что сообщение отправляется

зы: хотите бота на 1С - пишем http-сервис, ngrok и bot framework emulator в помощь ;)
upd: скайп нужен самый новый, для отладки пользуйте postman
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
SALE! 50%
Мессенджеры и боты SMS рассылки Email рассылки Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)
Расширение 1С с полным набором инструментов для качественных транзакционных, триггерных и маркетинговых рассылок Email, SMS, MAX, WhatsApp, Telegram. Даже простые уведомления об оплате счетов способны существенно упростить сбор дебиторской задолженности. Применение всех возможностей прямого маркетинга выводит коммуникацию с клиентами, уровень сервиса и лояльность на новый уровень.
6100
3050 руб.
07.04.2014 99693 92 205
Мессенджеры и боты 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)
Интеграция мессенджеров Max, WhatsApp и 1С: УНФ, УТ, КА, ERP - отправка и получение сообщений, картинок, файлов и видео прямо в 1С. Расширение работает с сервисом GreenApi. Важно: Интеграция с Telegram пока только для конфигурации 1С:УНФ.
30500 руб.
23.06.2023 18834 62 27
Мессенджеры и боты 1С:Предприятие 8 1С 8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Управленческий учет Платные (руб)
Расширение WhatsApp/MAX/Telegram-клиент для 1С работает через сервис Green-Api.com (WhatsApp/MAX/Telegram) и BotFather (Telegram). Это отправка/получение сообщений, изображений, смайлов, файлов из 1С.
15000 руб.
09.02.2024 13996 27 74
Мессенджеры и боты 1С 8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Россия Платные (руб)
Готовый чат-бот MAX для 1С виде расширения. Клиенты проверяют остатки и заказы прямо в мессенджере. Ролевая модель, гибкое меню, отправка файлов, диалоги. Подключайте свою логику через внешние обработки.
14640 руб.
26.03.2026 3863 5 0
Мессенджеры и боты SMS рассылки Email рассылки 1С:Предприятие 8 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)
Общение с клиентами несколькими операторами 1С с одного или нескольких аккаунтов Max, Telegram и WhatsApp в вашей базе 1С. Рассылки, чат-боты, сценарии. Работает как самостоятельное решение, так и в составе других конфигураций 1С 8.3 - 8.5.
5900 руб.
08.04.2020 59601 123 2
Мессенджеры и боты 1С 8.3 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 Платные (руб)
Обработка для быстрого подключения мессенджера MAX к любой конфигурации 1С.
10000 руб.
02.02.2026 8779 40 2
Учетные задачи Мессенджеры и боты 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)
Модуль отправки уведомлений и документов из 1С в мессенджер MAX. Счета, статусы заказов, автоподстановка данных. Без абонентской платы и скрытых комиссий.
5490 руб.
10.04.2026 2485 1 8
Мессенджеры и боты SMS рассылки 1С:Предприятие 8 1С:Управление нашей фирмой 3.0 Россия Платные (руб)
Решение реализовано в виде расширения. Заменяет отправку смс на отправку в WhatsApp через Green-api. Отправка чека картинкой.
7930 руб.
15.05.2024 5076 5 11
"Bots requiring migration to Azure Bot Service must migrate now to avoid service interruption"
Надо ли делать миграцию или без этого будет работать?
По самой работе - токен получаю, пытаюсь отправить сообщение, но получаю ответ:
{
"error": {
"code": "BadArgument",
"message": "Unauthenticated"
}
}
может кто сталкивался с этим - в чем дело может быть?
P.S.
(7) JSON читается как "джейсон". JSON (англ. JavaScript Object Notation, обычно произносится как /ˈdʒeɪsən/ JAY-sən)
А то как вы написали в статье "джисон" должно было бы писаться как - "GSON".
Это куда? В скайпе из группы пишу, но чет ничего не происходит.... Пояните, мож чего не понял.
все делал, как продемонстрировано, однако бота смог добавить в группу только после дважды перезапущеного скайпа
просто берем ник пользователя Skype и обрабатываем следующим образом:
Если СтрНайти(Контакт, ":") = 0 Тогда
Контакт = "8:" + Контакт;
ИначеЕсли СтрНачинаетсяС(Контакт, "live:") Тогда
Контакт = "8:" + Контакт;
КонецЕсли;
И переменную Контакт передаем как ИД беседы.
Авторство не мое, нашел в типовых.
что-то не нашел в документации такой возможности, возможно плохо искал..
{
"текст": "проверил",
"type": "message",
"метка времени": "2019-06-03T07: 59: 09.428Z",
"id": "1559548749423",
"channelId": "skype",
"serviceUrl": "https://smba.trafficmanager.net/apis/",
"от": {
"id": "29: 17J...................................................................dY",
"имя": "Дмитрий Алексеевич"
},
"разговор": {
"id": "29: 17J....................................................................dY"
},
"получатель": {
"id": "28: 2d...............................................270",
"имя": "virtex_bot"
},
"лица": [
{
"locale": "ru-RU",
"страна": "RU",
«платформа»: «Windows»,
«часовой пояс»: «Азия / Эр-Рияд»,
"type": "clientInfo"
}
],
"channelData": {
"текст": "проверил"
},
"locale": "ru-RU"
} ПоказатьПример файловой базы:
ib="File="[КаталогВиртуальноПриложения]";Usr=[Пользователь];Pwd=[Пароль];"
Пример клиент-серверной базы:
ib="Srvr="tcp://[ИмяСервера]";Ref="[ИмяПубликации]";Usr=[Пользователь];Pwd=[Пароль];"
Alias "/notify-manager" "C:/notify-manager/"
<Directory "C:/notify-manager/">
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor "C:/notify-manager/default.vrd"
</Directory>
Alias "/notify-managerWS" "C:/notify-managerWS/"
<Directory "C:/notify-managerWS/">
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor "C:/notify-managerWS/default.vrd"
</Directory> Показатьа как в телеге не получится?
//Прочитать сообщение пользователя
Процедура ПрочитатьСообщенияПользователя() Экспорт
СтруктураНастроек = ПолучитьНастройкиTelegram();
//Установим соединение
Источник = "bot" + СтруктураНастроек.token + "/getUpdates";
HTTPСоединение = Новый HTTPСоединение(СтруктураНастроек.api,443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
HTTPЗапрос = Новый HTTPЗапрос(Источник);
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/json");
HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос);
Если HTTPОтвет.КодСостояния = 200 Тогда
Данные = ДесериализоватьJSON(HTTPОтвет.ПолучитьТелоКакСтроку());
Если Данные.ok И Данные.result.Количество()>0 Тогда
//Запишем историю сообщений
Для каждого СтрокаМассива Из Данные.result Цикл
СообщениеID = СтрокаМассива.update_id;
Если ПроверитьНаличиеСообщенияПоID(СообщениеID) Тогда
Продолжить;
КонецЕсли;
Если СтрокаМассива.Свойство("message") Тогда
Команда = ВернутьКомандуTelegram(СтрокаМассива.message.text);
ЗаписатьИсториюСообщений(СтрокаМассива.message,СообщениеID,Команда);
ОбработатьОтветПользователя(Команда,СтруктураНастроек,СтрокаМассива.message,СообщениеID);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
ПоказатьПри генерации ключей учтите, что если в ключе будут "+/", то работать не будет.
Видео немного устарело, сейчас айди приложения и ключи делаются немного по другому, в Microsoft Azure.
HTTPСоединение = Новый HTTPСоединение("webchat.botframework.com", Неопределено, Неопределено, Неопределено, Неопределено, 120, Новый ЗащищенноеСоединениеOpenSSL);
ЗаголовкиHTTP = Новый Соответствие;
ЗаголовкиHTTP.Вставить("Authorization", "BotConnector "+Пароль);
HTTPЗапрос = Новый HTTPЗапрос("/api/tokens", ЗаголовкиHTTP);
HTTPОтвет = HTTPСоединение.ВызватьHTTPМетод("GET", HTTPЗапрос);
HTTPОтветТело = HTTPОтвет.ПолучитьТелоКакСтроку();
ПоказатьТокен получает, но вот при отправке сообщения пишет "Authorization has been denied for this request"
На этапе тестирования получилось отправить только мультимедиа файлы. На форумах пишут, что бот не поддерживает отправку других видов файлов.
В документации отправка мультимедиа здесь
Никто не сталкивался?
400AADSTS9002331: Application xxx is configured for use by Microsoft Account users only. Please use the /consumers endpoint to serve this request.
Что и где надо исправить?
Если приложение уже зарегистрировано, то в карточке приложения необходимо перейти на вкладку Манифест и в редакторе манифеста исправить значение свойства signInAudience с PersonalMicrosoftAccount на AzureADandPersonalMicrosoftAccount. После этих манипуляций у меня заработало.
Отправляю: v2/conversations/8:<userLogin>/activities
Ошибка: Ошибка работы с Интернет: SSL connect error
До этого все отлично работало
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 962753
Создание 13.12.18 12:30
Обновление 17.05.19 04:59
Просмотры 20925
Загрузки 0
Рейтинг
89
Комментарии 59
Код открыт Да
Рубрики Мессенджеры и боты
Кому Разработчик
Тип файла Нет файла
Платформа 1С:Предприятие 8
Конфигурация 1C:Бухгалтерия
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)