Отправка сообщений в Skype через Microsoft Bot Framework API

Публикация № 962753

Разработка - Практика программирования

skype rest api

74
Как отправлять сообщения в скайп по rest api.
 
 Код

Пример использования:

Токен = ПолучитьТокен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

74

См. также

Специальные предложения

Вознаграждение за ответ
Показать полностью
Комментарии
Избранное Подписка Сортировка: Древо
1. kuzyara 785 13.12.18 12:10 Сейчас в теме
user774630; leonidy4; Leits; sertak; paulpit; Romeooo; zuxelzz; METAL; jaroslav.h; AlX0id; pavlov_dv; leobrn; DrAku1a; 🅵🅾️🆇; triviumfan; st4rk; CSiER; lunjio; litonchik; +19 Ответить
16. zuxelzz 01.02.19 11:51 Сейчас в теме
(1) Привет, пробую сейчас настроить бота, в списке ботов у моего постоянно висит предупреждение:
"Bots requiring migration to Azure Bot Service must migrate now to avoid service interruption"
Надо ли делать миграцию или без этого будет работать?
По самой работе - токен получаю, пытаюсь отправить сообщение, но получаю ответ:
{
"error": {
"code": "BadArgument",
"message": "Unauthenticated"
}
}

может кто сталкивался с этим - в чем дело может быть?
17. kuzyara 785 04.02.19 12:14 Сейчас в теме
(16) Такое предупреждение у всех - это ненавязчивая реклама ажуры)

А при создании пароля ("секрета приложения") в низу страницы настроек не забыть нажать "Сохранить".
19. zuxelzz 04.02.19 13:43 Сейчас в теме
(17) понял, осталось понять, как добавить бота в нужную группу - подскажешь? =)
2. rpgshnik 1609 13.12.18 14:09 Сейчас в теме
Полезная информация, нужно будет применить на практике.
3. 🅵🅾️🆇 424 13.12.18 19:00 Сейчас в теме
(2) Полезно все, кроме, собственно, самого скайпа)
Он ушел вслед за ICQ.
Lapitskiy; anvolkov1cbit; GreenDragon; Vanch90; +4 2 Ответить
4. pallid 213 13.12.18 22:19 Сейчас в теме
Отлично, все времени не было начать разбираться с апи, а тут вот уже заготовочка
5. rpgshnik 1609 14.12.18 01:58 Сейчас в теме
(3) да ну, в компании активно используется. Видео звонки только через него.
CyberCerber; +1 Ответить
6. CSiER 26 14.12.18 03:32 Сейчас в теме
(3) для частных лиц возможно, но в корпоративном секторе скайп теперь заменяет Microsoft Lync.
rpgshnik; Артано; +2 Ответить
7. 1c_nik923 14.12.18 06:48 Сейчас в теме
Что-то, я не заметил нормальную замену скайпу, так что говорить что он ушел в след за ICQ, может вы из 3-тысячного. Автору однозначно + за работу!
Vida; rpgshnik; JohnyDeath; CyberCerber; kuzyara; paulpit; +6 Ответить
10. GreenDragon 16.12.18 16:49 Сейчас в теме
Удивительно. Думал, что api скайпа умерло года 3 назад. Однако же...

P.S.
(7) JSON читается как "джейсон". JSON (англ. JavaScript Object Notation, обычно произносится как /ˈdʒeɪsən/ JAY-sən)
А то как вы написали в статье "джисон" должно было бы писаться как - "GSON".
11. GreenDragon 16.12.18 16:53 Сейчас в теме
(7) как софт для проведения видеоконференций - может соглашусь. Но только не как текстовый клиент (а его как таковой используют 90% времени, что ужасно).
8. Fil15 14.12.18 23:08 Сейчас в теме
Вот одного не понял: Пишем в скайпе из группы (айди которой хотим получить) сообщение боту вида "@botname test", где botname - имя созданного бота
Это куда? В скайпе из группы пишу, но чет ничего не происходит.... Пояните, мож чего не понял.
9. Fil15 14.12.18 23:26 Сейчас в теме
Все, разобрался! Спасибо!
18. zuxelzz 04.02.19 13:38 Сейчас в теме
(9) привет, подскажи, как бота в группу добавил? пытаюсь добавить своего - ни через людей, ни через ботов его не находит
22. VictorRGB2 10 21.05.19 09:48 Сейчас в теме
(9)
(18)
коллеги, подскажите, как добавить бота в группу скайпа?
23. zuxelzz 21.05.19 10:53 Сейчас в теме
(22) тыкай в саму группу - там где видно список пользователей в группе и там где-то должен быть пункт "Добавить бота". Я точно не помню, как добавлял - возможно, его просто как пользователя можно добавить.
25. VictorRGB2 10 21.05.19 11:15 Сейчас в теме
(24) спасибо за видео
все делал, как продемонстрировано, однако бота смог добавить в группу только после дважды перезапущеного скайпа
12. sdf1979 70 19.12.18 09:39 Сейчас в теме
В конфигурации "Центр Контроля Качества" присутствует возможность отправлять сообщения в скайп, используя rest api.Код в общем модуле "СкайпБот".
13. kuzyara 785 19.12.18 10:29 Сейчас в теме
(12) действительно, есть такое в составе КИП
Прикрепленные файлы:
14. e][tend 19.12.18 14:30 Сейчас в теме
Коллега, разрешите поинтересоваться, что за ссылки у вас скрываются в папке "Убийцы 1С" в браузере? :)
20. zuxelzz 04.02.19 14:23 Сейчас в теме
все, разобрался, спасибо автору за помощь)
21. Romeooo 77 20.02.19 18:21 Сейчас в теме
"Как получить ID беседы (группы, контакта)?" - может кому пригодится:
просто берем ник пользователя Skype и обрабатываем следующим образом:

Если СтрНайти(Контакт, ":") = 0 Тогда
Контакт = "8:" + Контакт;
ИначеЕсли СтрНачинаетсяС(Контакт, "live:") Тогда
Контакт = "8:" + Контакт;
КонецЕсли;

И переменную Контакт передаем как ИД беседы.

Авторство не мое, нашел в типовых.
26. Артано 658 21.05.19 11:23 Сейчас в теме
(21) индусы уже в 1с
GreenDragon; papami; +2 Ответить
27. VictorRGB2 10 21.05.19 16:25 Сейчас в теме
а реально ли помощью этого бота отправить файл, например *.xls в чат?
что-то не нашел в документации такой возможности, возможно плохо искал..
28. EliasShy 48 22.05.19 11:25 Сейчас в теме
К знатокам - есть ли возможность подобное реализовать для Lync (Skype для бизнеса) ?
29. Dwiss 159 24.05.19 11:57 Сейчас в теме
Спасибо автору, все работает.
Вопрос как принимать сообщения от бота в 1с
30. Dwiss 159 04.06.19 08:10 Сейчас в теме
31. Dwiss 159 04.06.19 08:53 Сейчас в теме
{
  "текст": "проверил",
  "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"
}
Показать
32. Dwiss 159 04.06.19 08:59 Сейчас в теме
на вебхуке видно ответ боту, но как его получить в 1С???
34. kuzyara 785 04.06.19 10:25 Сейчас в теме
(33) свой http-сервис 1с сделать надо
35. Dwiss 159 04.06.19 11:32 Сейчас в теме
т.е. конечная точка должна быть свой http-сервис 1с?
а как в телеге не получится?
//Прочитать сообщение пользователя
Процедура ПрочитатьСообщенияПользователя() Экспорт
    СтруктураНастроек = ПолучитьНастройки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);
					КонецЕсли; 
				КонецЦикла; 
			КонецЕсли; 		
	КонецЕсли;
КонецПроцедуры
Показать
36. kuzyara 785 04.06.19 13:17 Сейчас в теме
37. Dwiss 159 04.06.19 13:49 Сейчас в теме
(36) а пример есть сервиса ?
38. user1034316 24.06.19 15:03 Сейчас в теме
Спасибо Автору за идею и код. Все работает просто отлично.

При генерации ключей учтите, что если в ключе будут "+/", то работать не будет.
Видео немного устарело, сейчас айди приложения и ключи делаются немного по другому, в Microsoft Azure.
39. ivan.kh 24.06.19 17:33 Сейчас в теме
Сделал вроде бы все по инструкции, но при попытке отправить сообщение в чат - получаю ошибку 401AADSTS7000215: Invalid client secret is provided.
Пароль пытался удалить и заново создать, но результат не изменился.
Оставьте свое сообщение