Что делать если в скайпе появился бот. Устанавливайте статусы в Skype по личным потребностям

Вслед за некоторыми другими мессенджерами и социальными сервисами, в Скайпе решили также «легализировать» ботов. И в конце марта 2016 года разработчики анонсировали данную функцию в своем приложении. Для чего же предназначается бот Скайп , для чего он, собственно говоря, может быть полезен самому обычному пользователю и как можно добавить себе какого-нибудь бота?

Боты в виртуальном пространстве

На самом желе, боты – это не изобретение современного виртуального пространства. Бот представляет собой компьютерную программу, которая призвана всевозможными способами «притворяться» обычным человеком в Сети. И первые боты, как это ни странно, возникли… в компьютерных играх. Именно с развитием сетевых шутеров – таких, как DOOM, Quake и им подобны, — пользователями стали писаться так называемые боты – программные роботы, которые могли составить компанию в сетевых баталиях. Ведь далеко не все игроки тогда вообще имели доступ к компьютерной сети, а поиграть все-таки хотелось…

Сегодня же боты – это как приятные, так и неприятные дополнения практически к любой социальной сети или мессенджеру.

Поначалу они лишь раздражали своей бестолковостью. Со временем, однако, программисты сообразили, что ботов можно поставить и на полезную службу человечеству. И теперь большое количество ботов пишется под заказ и на платной основе. К примеру, чтобы отвечать на вопросы клиентов, выдавать справку по ключевым словам в мессенджере…

Назначение ботов в Скайпе

Программный робот Skype может так или иначе имитировать поведение в Сети живого человека. С момента анонсирования появились самые разные Скайп-боты. Одни просто развлекают пользователя, играя с ним с различные игры, другие могут искать полезную информацию в Сети, третьи могут и пообщаться…

Словом, выбор действительно велик. Впрочем, большая часть ботов пока еще функционирует на английском языке, часть доступна только на территории Соединенных Штатов. Однако ограничений становится все меньше и меньше.

Чтобы убедиться в безопасности бота, нужно посмотреть его профиль перед добавлением. Здесь должна содержаться фраза «Skype Certified». Кроме того, аватарка бота всегда имеет шестиугольную форму, тогда как у всех остальных пользователей она круглая. К тому же, рядом с аватаркой одобренного бота имеется «галочка» на сером фоне.

Как же можно добавить себе того или иного бота? Все довольно просто. Для этого:

  1. Нужно скачать Скайп на своем устройстве;
  2. Дальнейшие действия зависят от того, на какой операционной системе работает Скайп. Например, на Андроиде имеется специальный пункт в меню «Контакты» . Он так и называется – «Боты» . В iOS значок Боты имеется во вкладке «Недавние» . В десктопной версии Skype Windows имеется специальный значок на боковой панели инструментов. В браузерной же версии Скайпа нужно выбрать «Обзор ботов» ;
  3. Далее останется лишь нажать на «Добавить бота» или «Начать» .

Список сертифицированных и одобренных ботов можно найти на странице проекта: https://support.skype.com/ru/faq/FA34655/dostupnye-boty-skype.

Если бот надоел или вызывает подозрения, то его можно заблокировать или удалить. Делается это точно так же, как и в случае с самыми обычными контактами в Скайпе.

Остается добавить, что боты доступны только в самых последних релизных версиях Skype. Так что имеет смысл обновить программу из официальных источников.

Зная, Скайп боты – что это, можно значительно расширить свои возможности по использованию этой многосторонней программы для общения и звонков.

Под различными никами к вам в skype может добавляться пользователь. Как правило, одним из первых его сообщений является что то вроде этого:

hey i found your name on the directory. I"m 24/female wanna chat and share pics?

Далее говорит что её зовут Аманда и она из Майами. Переписку ведёт только на английском языке, даже если отвечать ей на русском. Это skype-бот . Внятных ответов от неё не дождётесь. Ссылки, которые она даёт - в принципе, можно открывать, никаких потенциальных угроз они не несут. А вот номер банковской карточки вводить на сайтах всё же не стоит (если вы только на самом деле не хотите смотреть платные видео-чаты).

Прикладываю всю переписку:

Whoopie.kind25: hi

Евгений Ю.: Привет! Кто это? Что хотели?

Whoopie.kind25: hey i found your name on the directory. I"m 24/female wanna chat and share pics?

Евгений Ю.: ok, you can

Евгений Ю.: from Belarus, and you?

Евгений Ю.: ok

Whoopie.kind25: cool, im just bored as fuk at home! I"m single and looking... have you ever had cyber sex?

Евгений Ю.: no

Whoopie.kind25: lol, send me a recent pic of you and lets have some fun

Евгений Ю.: you should first

Whoopie.kind25: sweet like want to see pics of me?

Евгений Ю.: yes

Евгений Ю.: good

Whoopie.kind25: talk to me like a slut baby... do you like girls with big tits? want to see some naughty big tit pics?

Евгений Ю.: yes

Евгений Ю.: give me more than one plz

Whoopie.kind25: i"m getting wet baby wanna watch me rub my pussy on my cam!?

Евгений Ю.: no, give me plz more photos

Евгений Ю.: give me plz more photos

Whoopie.kind25: Don"t worry baby the site i"m on is FREE to join this site all you have to do is register they support mobile phones too:)

Евгений Ю.: How old are you?

Whoopie.kind25: fill out your cc info baby for Age verification ONLY, your card will not be charged. ok i"m ready for u now

Евгений Ю.: > whoopie.kind25: ok i"ll show you just 1 naughty pic... http://i.imgur.com/zRAM2Uu.jpg

Give me plz more naughty pics

Евгений Ю.: what about more photos?

Евгений Ю.: i wait for your photos

Whoopie.kind25: k

Ещё одна переписка:

Applesauce.bunny562: hey

Евгений Ю.: hello, who are you?

Applesauce.bunny562: hey i found your name on the directory. I"m 24/female wanna chat and share pics?

Евгений Ю.: ok

Евгений Ю.: yes

Евгений Ю.: i`m from Belarus

Applesauce.bunny562: cool, im just bored as fuk at home! I"m single and looking... have you ever had cyber sex?

Евгений Ю.: never have

Евгений Ю.: lol, send me a recent pic of you and lets have some fun

Applesauce.bunny562: lol, send me a recent pic of you and lets have some fun

Евгений Ю.: sweet like want to see pics of me?

Applesauce.bunny562: sweet like want to see pics of me?

Евгений Ю.: angie varona

Talk to me like a slut baby... do you like girls with big tits? want to see some naughty big tit pics?

Applesauce.bunny562: talk to me like a slut baby... do you like girls with big tits? want to see some naughty big tit pics?

Applesauce.bunny562: ok i"ll show you just 1 naughty pic... http://i.imgur.com/SDvojZZ.jpg

Евгений Ю.: good

Applesauce.bunny562: i"m getting wet baby wanna watch me rub my pussy on my cam!?

Евгений Ю.: yes

Евгений Ю.: ok

Applesauce.bunny562: Don"t worry baby the site i"m on is FREE to join this site all you have to do is register they support mobile phones too:)

Таких переписок уже можно найти очень много в Интернете.

Ко мне skype-бот Аманда "постучалась" под ником whoopie.kind25, но также может и под другими никами:

  • mega_punfs
  • akon4loveguy
  • sparky.lovr69
  • passion.dall62
  • lavonia.berk
  • elegantoffer842
  • applesauce.bunny562
  • и др.

Как видно, бот завлекает вас на какие то сайты. Для завлекухи говорит, что у неё пышные формы и большие сись**. Затем предлагает посмотреть на её тело через веб-камеру, но это уже на сайте:)

Первая ссылка, которую даёт бот, ведёт на совершенно безобидный сайт imgur - http://imgur.com/a/PC6Hy. На самом деле это фотографии Angie Varona - девушки, которая стала знаменитостью благодаря этому боту. Фотографии Аngie Varona:




О запуске ботов в Skype - самое время изучить как это работает. Под катом - небольшое описание возможных проблем. Кому не терпится посмотреть результат, вот он - MetricsBot .

Bot Framework vs. Skype Bot API

Для начала стоит понять, что есть Bot Framework , который позволяет создавать ботов для многих мессенджеров, в т.ч. и для Skype, а есть Skype Bot API , который позволяет создавать ботов именно для Skype. У каждого своя документация, свой каталог ботов (?) и своя регистрация ботов. Вроде очевидно, что это разные вещи, но я потратил довольно много времени пытаясь разобраться в документации Bot Framework"a и в регистрации бота в нем, когда ожидал, что создаю бота без фрейворка. Далее речь будет идти именно про Skype Bot API, Bot Framework нам не нужен, регистрировать там тоже ничего не надо. Есть Skype SDK для Node.js и для . Их я тоже не использовал, т.к. писал бота на Python.

Полезные ссылки

Для начала небольшой набор полезных ссылок (все ссылки - на английском языке):
  • Свои приложения (тут необходимо создать новое приложение и получить app id и client secret)
  • Управление своими ботами (здесь необходимо создать нового бота, указав app id полученный ранее)
В принципе, из документации понятно как работает бот и как он взаимодействует со Skype"ом, потому эту часть описывать не буду - расскажу о сложностях.

Авторизация

Это оказалось самой трудоемкой для меня частью. В документации говорится, что для авторизации необходимо получить токен, а затем использовать его в заголовке HTTP при каждом обращении:

Authorization: Bearer oauth2-token

Однако в документации почему-то забыли указать какой scope необходимо использовать для получения токена. Правильный ответ (можно найти в коде Node.js SDK) - https://graph.microsoft.com/.default .
Но тут начинается самое интересное - если создавать URL для подтверждения пользователем (=владельцем бота), потом получать auth_code , а потом попытаться обменять этот код на access token , то проблема возникнет на первом же шаге - при открытии созданного URL, Microsoft ругается на неправильный scope. Правильного scope, кстати, нет в списке возможных вариантов в документации Microsoft . Я пытался указывать другой scope - openid offline_access https://graph.microsoft.com/user.read , в этом случае мне удавалось получить token, только вот с ним взаимодействовать со Skype не удавалось.
Решение оказалось неожиданным - для получения access_token, необходимо было отправить обычный POST запрос:

Curl -X POST -H "Cache-Control: no-cache" -H "Content-Type: application/x-www-form-urlencoded" -d "client_id=&client_secret=&grant_type=client_credentials&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default" "https://login.microsoftonline.com/common/oauth2/v2.0/token"

В ответ возвращается access_token и expires_in (без какого-либо refresh_token ). Такого OAuth я еще не встречал.

Отправка сообщений

Отправка сообщений довольно проста -

POST /v2/conversations/8:alice/activities HTTP/1.1
Host: apis.skype.com
Authorization: Bearer oauth2-token
{
"message": {"content" : "Hi! (wave)"}
}

Запросы отправляются на apis.skype.com. В документации забыли указать, что запросы должны уходить по https .
В тексте можно использовать html-теги. Какие точно - пока неизвестно (в документации списка нет).
Есть интересные и неописанные ограничения на отправляемый текст. Например, в тексте нельзя использовать символы & , < и > . Отсутствие возможности передать символ & создает проблему при передаче ссылок. Еще одна проблема при передаче ссылок - автоматически создаваемые превью для каждой ссылки. В моем боте MetricsBot в тексте приглашения три ссылки, Skype создает три превью. Отключить это пока нельзя.

Публикация бота

После создания бота можно попробовать его опубликовать (до этого количество пользователей бота ограниченно - им может пользоваться только 100 человек). Сколько времени занимает процесс публикации - не ясно, в документации этого нет. Моего бота пока так и не опубликовали. На официальном форуме мой вопрос на эту тему обходят стороной (хотя на другие мои вопросы сотрудники Microsoft отвечают).
Обратите внимание, что для публикации бота надо отключить использование бота в групповых чатах.

В остальном - создание бота для Skype довольно просто.

О своем боте для Telegram, который умеет данные из Google Analytics показывать. А тут Microsoft объявила о запуске ботов в Skype - самое время изучить как это работает. Под катом - небольшое описание возможных проблем. Кому не терпится посмотреть результат, вот он - MetricsBot .

Bot Framework vs. Skype Bot API

Для начала стоит понять, что есть Bot Framework , который позволяет создавать ботов для многих мессенджеров, в т.ч. и для Skype, а есть Skype Bot API , который позволяет создавать ботов именно для Skype. У каждого своя документация, свой каталог ботов (?) и своя регистрация ботов. Вроде очевидно, что это разные вещи, но я потратил довольно много времени пытаясь разобраться в документации Bot Framework"a и в регистрации бота в нем, когда ожидал, что создаю бота без фрейворка. Далее речь будет идти именно про Skype Bot API, Bot Framework нам не нужен, регистрировать там тоже ничего не надо. Есть Skype SDK для Node.js и для . Их я тоже не использовал, т.к. писал бота на Python.

Полезные ссылки

Для начала небольшой набор полезных ссылок (все ссылки - на английском языке):

  • Свои приложения (тут необходимо создать новое приложение и получить app id и client secret)
  • Управление своими ботами (здесь необходимо создать нового бота, указав app id полученный ранее)

В принципе, из документации понятно как работает бот и как он взаимодействует со Skype"ом, потому эту часть описывать не буду - расскажу о сложностях.

Авторизация

Это оказалось самой трудоемкой для меня частью. В документации говорится, что для авторизации необходимо получить токен, а затем использовать его в заголовке HTTP при каждом обращении:

Authorization: Bearer oauth2-token

Однако в документации почему-то забыли указать какой scope необходимо использовать для получения токена. Правильный ответ (можно найти в коде Node.js SDK) - https://graph.microsoft.com/.default .
Но тут начинается самое интересное - если создавать URL для подтверждения пользователем (=владельцем бота), потом получать auth_code , а потом попытаться обменять этот код на access token , то проблема возникнет на первом же шаге - при открытии созданного URL, Microsoft ругается на неправильный scope. Правильного scope, кстати, нет в списке возможных вариантов в документации Microsoft . Я пытался указывать другой scope - openid offline_access https://graph.microsoft.com/user.read , в этом случае мне удавалось получить token, только вот с ним взаимодействовать со Skype не удавалось.
Решение оказалось неожиданным - для получения access_token, необходимо было отправить обычный POST запрос:

curl -X POST -H "Cache-Control: no-cache" -H "Content-Type: application/x-www-form-urlencoded" -d "client_id=&client_secret=&grant_type=client_credentials&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default" "https://login.microsoftonline.com/common/oauth2/v2.0/token"

В ответ возвращается access_token и expires_in (без какого-либо refresh_token ). Такого OAuth я еще не встречал.

Отправка сообщений

Отправка сообщений довольно проста -

POST /v2/conversations/8:alice/activities HTTP/1.1
Host: apis.skype.com
Authorization: Bearer oauth2-token
{
"message": {"content" : "Hi! (wave)"}
}

Запросы отправляются на apis.skype.com. В документации забыли указать, что запросы должны уходить по https .
В тексте можно использовать html-теги. Какие точно - пока неизвестно (в документации списка нет).
Есть интересные и неописанные ограничения на отправляемый текст. Например, в тексте нельзя использовать символы & , < и > . Отсутствие возможности передать символ & создает проблему при передаче ссылок. Еще одна проблема при передаче ссылок - автоматически создаваемые превью для каждой ссылки. В моем боте MetricsBot в тексте приглашения три ссылки, Skype создает три превью. Отключить это пока нельзя.

Публикация бота

После создания бота можно попробовать его опубликовать (до этого количество пользователей бота ограниченно - им может пользоваться только 100 человек). Сколько времени занимает процесс публикации - не ясно, в документации этого нет. Моего бота пока так и не опубликовали. На официальном форуме мой вопрос на эту тему обходят стороной (хотя на другие мои вопросы сотрудники Microsoft отвечают).
Обратите внимание, что для публикации бота надо отключить использование бота в групповых чатах.

В остальном - создание бота для Skype довольно просто.

Я давно хотел попробовать написать какого-нибудь простого бота, чтобы разобраться в этом процессе. Сейчас я в отпуске и у меня есть достаточно свободного времени, чтобы начать писать в своё удовольствие в этом направлении…

Я решил начать с простого бота, который может работать только с текстом. Бот будет на недавно анонсированной платформе для ботов от Microsoft (Microsoft Bot Framework ). Мне она приглянулась тем, что теоретически, один реализованный бот может работать и для Skype и для Telegram и для веба и еще много всяких вариантов. Чтобы не писать совсем уж бесполезное приложение, я буду делать бота-помощника для разработчика, который может выполнить такие действия как:

  • Приведение строки к верхнему регистру
  • Приведение строки к нижнему регистру
  • Получение нового Guid
  • Конвертация числа из любой системы счисления в любую
  • Перевод Base64 строки в обычный текст
  • Обычный текст в Base64 строку
  • Получить дату из строки в UNIX формате
  • Перевести дату в UNIX формат
  • Сгенерировать пароль заданной длины

Для подобных действий, я, обычно, пишу сниппеты, которые при необходимости удобно использовать. Для их организации и запуска я использую LINQPad . Но иногда я могу что-то делать не за своим компьютером или же вообще со смартфона, в таком случае мой бот может быть полезен. Если есть еще идеи, какой функционал можно добавить данному боту, пишите мне, с удовольствием их реализую…

В бот, на вход, будет поступать строка. Будем разделять команду и её параметры пробелами. Сама команда будет либо до первого пробела, либо вся строка, если пробелов нет.

Не буду описывать процесс обработки команд и того, как они исполняются, так как там всё предельно просто, да и весь написанный код я опубликую на GitHub .

Перейдём к более интересному, а именно, к созданию самого бота. Для работы нужна Visual Studio 2015 , рекомендую установить доступные обновления. Воспользуемся готовым шаблоном для создания ботов «Bot Application template », скачать его можно по этой ссылке aka.ms/bf-bc-vstemplate

Полученный zip архив нужно скопировать в директорию «%USERPROFILE%\Documents\Visual Studio 2015\Templates\ProjectTemplates\Visual C# » После этого, мы уже можем создавать нового бота из данного шаблона.

Сразу после создания проект имеет следующую структуру

Мы можем запустить его и проверить, что он уже умеет. Для тестирования существует отдельное приложение «Bot Framework Emulator », сказать его можно отсюда http://download.botframework.com/botconnector/tools/emulator/publish.htm

Запустим наше приложение и эмулятор.

По умолчанию, бот умеет возвращать длину полученного сообщения, данный функционал реализован в MessagesController :


Теперь добавлю боту ранее описанный функционал. Для этого я добавлю новый проект “DeveloperToolsPack ” который будет представлять из себя Class Library и также добавлю проект для Unit тестов.

Класс DeveloperTools представляет из себя следующее:

Public class DeveloperTools { private Dictionary _tools; public DeveloperTools() { AddTool(new ToUpper()); AddTool(new ToLower()); AddTool(new NewGuid()); AddTool(new ConvertTo()); AddTool(new FromBase64()); AddTool(new ToBase64()); AddTool(new FromUnixTime()); AddTool(new ToUnixTime()); AddTool(new Password()); } private void AddTool(ITool tool) { if (_tools == null) { _tools = new Dictionary(); } if (!_tools.ContainsKey(tool.CommandName.ToLower())) { _tools.Add(tool.CommandName.ToLower(), tool); } } public string Run(string str) { if (!System.String.IsNullOrEmpty(str)) { str = str.Trim(); var indexOfSpace = str.IndexOf(" ", StringComparison.Ordinal); string command; var commandText = ""; if (indexOfSpace != -1) { command = str.Substring(0, indexOfSpace).ToLower(); commandText = str.Substring(indexOfSpace+1, str.Length - indexOfSpace-1); } else { command = str.ToLower(); } if (_tools.ContainsKey(command)) { return _tools.Run(commandText); } else { if (command == "help") { var returnString = new StringBuilder(); foreach (var tool in _tools) { returnString.Append(tool.Value.Description + "\n\r"); } return returnString.ToString(); } return $"Command \"**{command}**\" not found. See \"**help**\" command."; } } return "Please input a string"; } }

В самом боте, в «MessagesController » обработку полученного сообщения заменим на

Var developerTools = new DeveloperToolsPack.DeveloperTools(); return message.CreateReplyMessage(developerTools.Run(message.Text));

Можно запускать и тестировать данного бота.


Если всё работает как надо, можно перейти непосредственно к публикации. Создадим в Azure обычное web приложение, можно использовать бесплатный тариф, так как для тестирования мощности хватит вполне.

Теперь щелкаем по проекту правой кнопкой мыши и выбираем Publish

Теперь необходимо выбрать «Microsoft Azure Web Apps »


И найти там ранее созданное приложение. После этого можно нажать кнопку «Publish » и приложение будет опубликовано.

Несомненно, боты очень перспективное направление. Платформа от Microsoft очень удобная и позволяет интегрироваться с другими сервисами, что, несомненно является огромным плюсом. Создаваемые боты, естественно, не ограничиваются только обработкой текста, они могут выполнять гораздо более сложные функции. В данной статье я показал, как можно сделать простого, но в тоже время полезного бота для Skype и опубликовать его. Созданный бот, ко всему прочему, может работать на множестве других платформ, таких как Telegram , Facebook Messenger, GroupMe , Slack .

Приятного программирования.

P.S. Код бота изменялся под новую версия Bot Framework