Содержание
Мессенджеры *PHP * Еще давно я хотел иметь свой автоответчик или бота для скайпа, называйте как вам угодно. В гугле я ничего найти не мог, да еще из-за того, что я пользуюсь Ubuntu, задача становилась сложнее в несколько раз. А если учесть, что я знаю только PHP, и то, не очень хорошо, моя мечта становилась нереальной. Но недавно, просматривая официальную документацию по API скайпа, я обратил внимание на «D-BUS messaging», не знаю, почему я раньше не обращал на него внимание. Разобравшись со всем, я наконец сделал то, что давно хотел! Я получил доступ к Skype API на PHP. Об этом я и хочу рассказать в своей статье. Для установки dbus-php нужен phpize, который идет в пакете php5-dev, установим его:
sudo apt-get install php5-dev
Теперь установим php-pear, выполнив такие команды:
sudo apt-get install php-pear pear install PEAR
Устанавливаем dbus расширение для php, предварительно установив зависимости(У Вас должен быть установлен make, иначе установка dbus-beta завершится ошибкой!):
sudo apt-get install libdbus-1-dev libxml2-dev pecl install dbus-beta
Добавляем загрузку расширения в конфигурацию php:
echo -e "; configuration for php DBus modulenextension=dbus.so"| sudo tee -a /etc/php5/conf.d/dbus.ini
Проверяем, работает ли расширение, вводим в терминале команду php -i и находим там:
dbus Dbus support => enabled Version => 0.1.0
Нашли? Отлично! Можете продолжать! Не нашли? Что же, повторите все, найдите ошибку, исправьте и продолжайте чтение, у Вас все выйдет. Все! Теперь у нас есть все необходимое для работы. Приступим к самому коду php. Самое простое и важное — подключение к скайпу и запрос на доступ к api, сделаем мы это таким образом:
$dbus = new Dbus(Dbus::BUS_SESSION, true); //Инициализируем Dbus $n = $dbus->createProxy('com.Skype.API', '/com/Skype', 'com.Skype.API'); //Подключаемся к скайпу $n -> Invoke('NAME PHP'); //Имя нашей программы, авторизация в скайпе $n -> Invoke('PROTOCOL 8'); //Используем последний протокол
Метод Invoke() будет основным для отправки указаний скайпу. Теперь, научим наш скрипт получать уведомления скайпа:
//продолжение предыдущего отрывка кода class phpSkype { public static function notify ($notify) { echo $notify."n"; } } $dbus -> registerObject('/com/Skype/Client', 'com.Skype.API.Client', 'phpSkype'); //Регистрируем просмотр уведомлений скайпа while(1) { $s = $dbus -> waitLoop(1); }
Запустив этот скрипт, вы сможете наблюдать все уведомления скайпа, примерно так:
CONNSTATUS ONLINE CURRENTUSERHANDLE *my_user* USERSTATUS DND CHATMESSAGE 5150665 STATUS READ CHATMESSAGE 5149961 STATUS READ CHATMESSAGE 5149993 STATUS READ CHATMESSAGE 5150025 STATUS READ CHATMESSAGE 5150057 STATUS READ CHATMESSAGE 5150697 STATUS SENDING CHAT #zaidin16/$e00fc2f75170ec9e ACTIVITY_TIMESTAMP 1345401315 CHATMESSAGE 5150697 STATUS SENT
Дополняем класс phpSkype и обучаем наш скрипт обрабатывать и отвечать на сообщения, вот что получилось у меня:
$dbus = new Dbus(Dbus::BUS_SESSION, true); //Инициализируем Dbus $n = $dbus->createProxy('com.Skype.API', '/com/Skype', 'com.Skype.API'); //Подключаемся к скайпу $n -> Invoke('NAME PHP'); //Имя нашей программы, авторизация в скайпе $n -> Invoke('PROTOCOL 8'); //Используем последний протокол class phpSkype { /* * Эту функцию мы будем использовать для проверки последних сообщений в скайпе. * Если вы не хотите, чтобы программа реагировала на ваши сообщения, используйте * preg_match('/RECEIVED/', $notify) */ public static function notify ($notify) { if (preg_match('#RECEIVED|SENT#Uis', $notify)) { $message_id = explode(' ', $notify); bot::get_details($message_id[1]); //Вызываем обработчик сообщений } } } class bot { private static $last_id; public static function get_details ($message_id) { global $n; $ch = $n -> Invoke('GET CHATMESSAGE '.$message_id.' CHATNAME'); //Получаем id чата, используется для ответа $mess = $n -> Invoke('GET CHATMESSAGE '.$message_id.' BODY'); //Получаем текст сообщения $aut = $n -> Invoke('GET CHATMESSAGE '.$message_id.' FROM_DISPNAME'); //Получаем автора сообщения /* * Теперь мы получим из строк, которые мы только что получили, нужные нам данные. * А именно: Автора сообщения, id чата и текст сообщения. */ $author = explode('FROM_DISPNAME ', $aut); $chat = explode('CHATNAME ', $ch); $message = explode('BODY ', $mess); echo $author[1].': '.$message[1]."n"; //Выводим в консоль автора и сообщение /* * Мне не нужно, чтобы бот пытался найти ответ на каждое сообщение, из-за этого * я вызываю обработку сообщения только когда оно начинается на "!". */ if ($message[1][0] == '!') { self::reply($chat[1], $message[1], $message_id); } } public function reply ($chat, $message, $id) { global $n; /* * Проверки, больше ли id сообщение, на которое нужно ответить, изначально не было, но * мои любезные друзья начали загружать бота кучей "!test" в одном сообщении, он хоть и отвечал * лишь на первое, но потом ответил и на остальные. Из-за этого я сделал проверку и если id * сообщения, на которое нужно ответить, меньше чем id предыдущего, то ответа не будет. */ self::$last_id = $message; if (self::$last_id <= $message) { switch ($message) { case '!test': $reply = 'It's work!'; break; case '!help': $reply = 'Нету, пока нету'; break; default: $reply = 'Используйте !help'; break; } if ($reply != '') $n -> Invoke('CHATMESSAGE '.$chat.' '.$reply); //Посылаем сообщение } else { echo 'Уже отвечал!'."n"; } } } $dbus -> registerObject('/com/Skype/Client', 'com.Skype.API.Client', 'phpSkype'); //Регистрируем просмотр уведомлений скайпа while(1) { $s = $dbus -> waitLoop(1); }
Теперь наш скрипт умеет отвечать на определенные сообщения, а если Вы немного его измените — сможет отвечать на любые сообщения. Если навскидку подумать, можно реализовать что-то интересное на сайте, если он хостится на вашем компьютере, ну или через связку скрипта на локалхосте и на хостинге, это уже как Вы придумаете. Подробный список команд, которые доступны через метод Invoke() Вы найдете тут. А [Неактуально из-за действий Microsoft’a] исходники и более функциональный скрипт. Все это я делал в системе Ubuntu 12.04 LTS, работу на остальных системах не гарантирую и буду рад, если кто-то проверит. Любые идеи приветствуются. Спасибо за чтение!
На сегодняшний день программой Skype пользуются миллионы людей. Кому-то доставляет удовольствие просто болтать с друзьями в Скайп конференции, а кому-то это необходимо по работе. Сейчас успешно практикуются деловые переговоры среди коллег в данном программном обеспечении. Существуют некие правила и хитрости для коллективных собраний в Skype, о которых не имеют представления подавляющее большинство среди пользователей. Команды Скайпа — новая возможность управления чатом. Пользуясь такими командами, можно добиться большей результативности в дискуссионных переговорах с коллегами по работе. Для вас будет представлен набор инструкций по руководству пользования программой Skype.
Deskopt API для Skype
Skype можно управлять и при помощи командной строки
Deskopt API — программный компонент, который доступен каждому. Данный продукт позволяет управлять процессами Скайпа. Одна из главных целей API — это помочь разработчику управлять вызовами Skype извне программы. Применение Deskopt API не одобряется создателями Skype, но программный продукт все равно используется и имеет спрос. API может использоваться во всех программах, если есть условия использования API, поэтому Cкайп — не исключение. Благодаря среде API, пользователи обрели возможность управлять конференцией с помощью текстовых команд.
Команды, используемые для Скайпа
Иногда бывает так, что при общении в конференции количество собеседников превышает 10. Такое общение не приносит особого комфорта из-за постоянно всплывающих окон на рабочем столе. А если таких конференций много? Нужно и друзьям ответить, и перед начальником отчитаться, и с коллегами по работе обсудить дальнейшие планы. Все это приведет к невыносимой путанице, многое вас будет отвлекать, а порой и раздражать. Поэтому возникает желание скомбинировать весь процесс общения в Скайпе.
Многие пользователи умеют настраивать программу только предлагаемым интерфейсом (глобальные настройки). Такими настройками особо не улучшишь времяпрепровождение в Скайпе. Поэтому в программе Skype предоставлены возможности пользования в ином виде. Команды Скайпа — отличная возможность настроить программу на свой лад. Отправка команды ничем не отличается от обычного сообщения. Просто скопируйте или введите в поле чата строку команды и нажмите клавишу Enter, стоит всего лишь обратить внимание на отсутствие символов перед строкой, тогда команда будет принята. Данные команды Скайпа позволят улучшить контроль над чатом. Когда обсуждаемые вопросы имеют повышенную важность, применения этих команд в большей мере необходимы. Подобным образом в чате могут быть удалены отдельные мешающие для беседы участники. Или же есть возможность уполномочить в ряде правил другого участника.
Список используемых команд
- /add [Skype-ник] — добавляем собеседника в диалог;
- /alertsoff (/alertson)- включение-отключение уведомления в чате;
- /clear — полностью удалить историю переписки;
- /find [текст] — поиск фрагмента в беседе;
- /get banlist — вывод на экран списка участников, у которых запрещен доступ к чату;
- /get creator — вывод на экран информации о создателе чата;
- /get role — показать вашу роль в чате;
- /help — вывод на экран списка возможных команд;
- /history — отображение истории переписки в активное окно;
- /leave — удалиться из беседы;
- /set guidelines [текст] — назначить правила чата;
- /set password [текст] — поставить пароль (использование пробелов недопустимо);
- /setrole [Skype-ник] MASTER | HELPER | USER | LISTENER — назначить собеседника в беседе исполнительной ролью;
- /showstatus — вывод общей информации о чате;
- /verify — проверка баз данных.
Для чего нужны роли в конференции
В Skype конференциях существуют отдельные роли, которые присваиваются участникам для общего порядка, сплоченности и слаженности. Существует создатель конференции, который вправе назначить любого собеседника особой ролью. Подобные вещи делаются для лучшей организованности в общении. У каждого есть свои полномочия. Все роли можно описать по снижению ранга (от создателя до кандидата).
1. Creator — Создатель. Пользователь, создавший чат. Роль создателя не передается, так как она должна быть у одного участника. Только создатель вправе устанавливать и отменять правила чата.
2. Master — Ведущий. Пользователь, получивший право от создателя настраивать чат.
3. Helper — Помощник. Уполномоченное лицо, которое не обладает широким спектром возможностей. Помощник может выполнять различные мелкие действия, он не имеет права назначать или удалять участников чата.
4. User — Пользователь. Простой участник чата, возможности которого ограничены. Пользователь может читать и отправлять сообщения.
5. Listener — Наблюдатель. Участник беседы, не имеющий право отправлять сообщения. Наблюдатель вправе только читать.
6. Applican — Кандидат. Пользователь, которого еще не приняли в чат. Кандидат не может читать и писать сообщения, он ждет своей очереди вступления в чат.
|
Skype API позволяет интегрировать десктоп-версию Skype с бизнес приложениеми, такими как Outlook, Office, CRM, 1С, Call-центры. Интеграция позволяет осуществлять скайп-звонки одним кликом, логировать звонки в других системах. См. также: Топ 10: Мессенджеры для бизнеса 2016. Skype интегрировался со Slack Корпоративный мессенджер Slack – очень хорош для организации совместной работы. Но вот видеозвонков в нем нет. Этот недостаток вызывалась исправить компания Microsoft и интегрировала Skype со Slack. Теперь простой командой “/skype” в Slack можно быстро создать группу для видеовстречи в браузерной версии Skype. Войти в группу можно как через свой аккаунт, так и создав временный. Чтобы совершать аудио и видеозвонки необходимо установить плагин Skype для браузера. Без него общаться можно только текстом или пересылать файлы. Учитывая популярность Slack и приверженность Сатьи Наделлы инструментам для совместной работы, никто не удивится, если Microsoft вскоре купит этот самый горячий (на данный момент) ИТ стартап. 2013. Microsoft встроила Skype в Outlook.com Наконец-то Microsoft начинает хоть как-то интегрировать купленный ею Skype в свои продукты. У конкурентов из Google уже давно давно в GMail есть чат с видеосвязью и возможностью совершать звонки на обычные телефоны. Поэтому, со стороны Microsoft (имея Skype) было бы преступлением не реализовать такие же возможности в почтовом сервисе Outlook.com. Что они и сделали. Правда, пока эта фича доступна только для британцев, и лишь через несколько недель появится у нас. Для возможности совершать звонки и видеозвонки из Outlook.com необходимо будет установить плагин для браузера (Internet Explorer, Chrome или Firefox), так же, как это делается и в GMail. 2011. Skype as a Service – миссия не выполнима Пару лет назад ИТ-мир загорелся идеей использования Skype как сервиса – когда любое приложение, web-сервис, мобильный клиент и любое устройство сможет звонить и принимать звонки через сеть Skype. Эта возможность теоретически стала реальностью в прошлом году, когда был запущен на закрытое бета-тестирование SkypeKit SDK. Однако за целый год фактически SkypeKit SDK использовался только парой производителей телевизоров и (возможно) для интеграции с Facebook. В начале этого месяца SkypeKit SDK вышел из закрытой бета-версии и стал доступен всем желающим, однако никакого ажиотажа и никаких намеков на новые Skype-приложения даже не видно. И на этот раз Microsoft точно не при чем. ***
2010. Skype as a Service стал реальностью Как и обещал шеф Skype, Джонатан Кристинсен, этот самый популярный в мире коммуникационный сервис разработчики теперь смогут использовать в качестве “чистого” сервиса. Вчера появился SkypeKit SDK, который позволяет любым программам и устройствам использовать сеть Skype для обмена сообщениями, контроля статуса, аудио и видео-связи без необходимости установки проприетарного клиента. SkypeKit поддерживает Windows, Linux и Mac. Частью нового SDK является “VoIP сердце” Skype – аудиокодек Silk, который уже год свободно распространяется для разработчиков. Однако плохой новостью является то, что SkypeKit пока не смогут использовать веб-приложения и мобильные приложения. 2009. Skype as a Service После плохих новостей для разработчиков, руководитель Skype, Джонатан Кристинсен, поспешил внести кое-какие поправки и вернуть надежду на светлое будущее. Во-первых, коль Skype API никто не закрывает, все плагины будут отлично работать даже после закрытия Skype Extras. Просто пользователи не смогут платить за них со своего Skype-счета. Но никто не мешает разработчикам собирать платежи через другие платежные системы. Во-вторых, Skype не собирается отказываться от сообщества сторонних разработчиков, и скоро представит для них платформу нового поколения. А самое интересное то, что в разговоре с Майклом Аррингтоном (из TechCrunch), Кристинсен намекнул, что разработчики смогут создавать новые решения на базе сервисов Skype. Что это означает? *** 2009. Skype закрывает экосистему для разработчиков Новые владельцы Skype – похоже сторонники шоковой терапии. Сегодня они решили закрыть Skype Extras – дополнения к Skype, которые создавались сторонними разработчиками. Сейчас в каталоге несколько сотен этих дополнений, причем многие из них – это основной источник дохода для их создателей. Среди них такие, как Pamela (для записи разговоров),Skylook (плагин для Outlook), Yugma (веб-конференции)… Официальная причина закрытия – слишком мало пользователей использовали и платили за Extras, поэтому затраты на поддержку партнерской экосистемы оказались не рентабельны. *** 2008. Skype интегрирован с Oracle Siebel CRM Самое замечательное в этой новости, что решение для интеграции было разработано российской компанией NAVAT. При помощи Skype Communication Channel forSiebel (SCCS) реализуетсяприем входящихзвонков, поиск клиента по Skype имении переход на карточку клиента (Screen Popup) с возможностью автоматического создания активности ипривязки к клиенту. Это исходящие вызовы методом «One Click Call», как на Skype номера, так и на городские и мобильные номера. «В настоящее время рынок Интернет-телефониистремительно развивается, и Skype становится все болеепривычным каналом взаимодействия с клиентом. Пока эти тенденции болеехарактерны для зарубежных компаний, учитывая возможность приема звонков,поступающих на городские номера и номера сотовых операторов в любойточке, где есть Интернет-соединение. Мы разработали решение для одного из нашихзарубежных клиентов, но рассчитываем на внедрения этого продукта и вРоссии», – комментирует руководитель направления CRMИван Сергеев. «В России уже сейчас многие компании уделяют большоевнимание Интернет-телефонии, т.к. это еще один способ сделать взаимодействие склиентом более удобным как для клиента, так и для компании». 2006. Интеграция Skype и Microsoft Outlook Компании TRENDnet и Skylook объявили о партнерстве для создания решения, обеспечивающего взаимодействие системы Skype и программного комплекса Microsoft Outlook для платформы Unified Messaging. В процессе проведения совместных работ используется программное обеспечение быстрого доступа к VoIP-сервисам компании Skylook для платформы универсальных коммуникаций. В результате реализации совместного проекта пользователям предоставляется возможность осуществлять VoIP-вызовы, выбирая абонентов из адресной книги Outlook, а также отвечать на входящие VoIP-звонки, пользуясь средствами Outlook. 2006. Skype представил новые панели для приложений Microsoft и Mozilla Панель инструментов позволяет одним щелчком набрать номер Skype из документа, электронного письма или веб-страницы. Она распознает телефонные номера, обнаруженные в странице. Кроме звонков, пользователи Skype могут обмениваться файлами и отправлять мгновенные текстовые сообщения. Все панели представлены бесплатно и совместимы с Outlook/Office 2000, XP и 2003; Firefox — от 1.5 до 2.0 бета, а также Internet Explorer 5.5, 6.0 и 7.0 бета. 2005. Skype выпустил средства для интеграции своего интернет-пейджера с другими программами Компания Skype начала распространение своего инструментария для разработчиков SkypeWeb и SkypeNet. Тем самым Skype, по словам представителей самой компании, открывает возможность интегрировать функции интернет-пейджера, встроенные в Skype с другими VoIP программами. Skype полагает, что способна составить серьезную конкуренцию другим IM-гигантам, таким, как Yahoo, MSN, Jabber и AIM. Пользовательская база Skype насчитывает 51 миллион имен, что вдвое больше, чем у Yahoo и в шестеро – чем у America Online. Другое дело, что интернет-пейджер Skype считается менее используемой функцией, нежели голосовая связь.14
У меня большой опыт написания приложений Delphi 6 Pro с использованием Skype API. Я не использую COM-объект, вместо этого я напрямую взаимодействую с клиентом Skype через
SendMessage()
систему. Мое текущее приложение действует как полнодуплексный аудиопрокси с передачей видео. Для передачи звука я использую ALTER CALL с параметром PORT, чтобы установить дуплексное звуковое соединение с клиентом Skype через пару сокетов. Для отправки видео у меня есть фильтр DirectX на основе DSPACK, который я указываю клиенту Skype для выбора в качестве выбранного видеоустройства. Это работает нормально, но поскольку это Skype API, мне неудобно взаимодействовать с клиентом Skype как с отдельным объектом.
Теперь идет SkypeKit, который, по-видимому, позволяет разработчику интегрировать Skype гораздо более интегрированным образом. Я собираюсь погрузиться в это, и я хотел услышать от любых разработчиков, которые перешли с Skype API на SkypeKit. Некоторые вопросы:
-
Что-то не хватало в SkypeKit, который предлагается через Skype API, что затрудняло преобразование вашего приложения, если не делало его невозможным?
-
Есть ли у вас какие-либо советы, как сделать переход как можно более плавным, особенно когда речь идет о том, чтобы избежать любых дизайнерских решений, которые действительно могут преследовать вас, когда вы далеко продвинетесь по пути SkypeKit?
-
Нашли ли вы какие-либо веб-ресурсы или документацию от других разработчиков, которые действительно помогли вам сэкономить время или сэкономить силы? (Пожалуйста, поделитесь ссылками, если так).
4
Я использую SkypeKit в своем Java-приложении, ориентированном на чат, поэтому я не имел дела с аудио / видео.
SkypeKit – это просто программа «черного ящика», которая самостоятельно взаимодействует с протоколом Skype. Это исполняемый файл, который запускает процесс, который прослушивает локальный порт. Процесс легкий, всего 20 МБ на моей машине разработчика на базе Windows. Он работает полностью в фоновом режиме, никаких уведомлений при запуске / отправке сообщений / завершении работы.
Ваша клиентская программа взаимодействует с ним, отправляя байтовые структуры через локальный туннель SSL. Эти структуры обернуты API для C ++, Java и Pyton. Java API – это просто. Вы запускаете процесс, создаете
new Skype()
объект и входите в систему с учетными данными своей учетной записи Skype и получаете выполнение обратных вызовов своей программы, когда происходят некоторые события.
Итак, @Whiler не совсем прав, вам всегда нужно хост-приложение, но в данном случае оно маленькое и быстрое.
Я не знаю, как работает аппаратный комплект, но я думаю, что это более низкоуровневый способ.
Вы можете прочитать Java API
здесь
, C ++ API (с примерами)
здесь
и Python (с примерами)
здесь
.
Да, и, по крайней мере, одно небольшое отличие между настольным API и API на основе набора: вы можете публиковать
XML-текст
в чате.
3 3
SkypeKit больше не поддерживается –
https://support.skype.com/en/faq/FA12322/is-skypekit-being-discontinued
Раскрытие информации: я использовал работу для Microsoft / Skype
1
Основное отличие SkypeKit от других решений (sendmessage, COM) заключается в том, что клиентское приложение Skype не требуется … вы можете напрямую взаимодействовать с сетью Skype …
Я не копался в этом решении, поскольку доступ не бесплатный (не дорого, но без реального проекта, это было
бесполезно
для меня …).
Так что это может быть очень полезно, если вы планируете заменить настоящий клиент Skype своим собственным программным обеспечением на конечном компьютере … но если вы просто хотите взаимодействовать с существующим, я не уверен.
C# , Microsoft Bot Framework , Блог , Лучшее , Статьи
Я давно хотел попробовать написать какого-нибудь простого бота, чтобы разобраться в этом процессе. Сейчас я в отпуске и у меня есть достаточно свободного времени, чтобы начать писать в своё удовольствие в этом направлении…
Я решил начать с простого бота, который может работать только с текстом. Бот будет на недавно анонсированной платформе для ботов от 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%DocumentsVisual Studio 2015TemplatesProjectTemplatesVisual 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[command].Run(commandText); } else { if (command == "help") { var returnString = new StringBuilder(); foreach (var tool in _tools) { returnString.Append(tool.Value.Description + "nr"); } 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» и приложение будет опубликовано.
Теперь идем на сайт https://dev.botframework.com авторизуемся и нажимаем «Register a bot»
Заполняем все необходимые поля
В поле Endpoint нужно указать адрес к опубликованному приложению. Сразу указывайте HTTPS адрес.
Теперь необходимо взять App Id и Primary app secret и вписать их в Web.config бота.
После этого бота нужно пере опубликовать с новыми ключами. Опубликованный бот можно протестировать в «Bot Framework Emulator», не забыв указать новые App Id и App Secret.
Получившегося бота можно связать с многими платформами.
В том числе использовать в web.
Ссылка на исходный код: https://github.com/flash2048/SkypeBot_DeveloperTools
Несомненно, боты очень перспективное направление. Платформа от Microsoft очень удобная и позволяет интегрироваться с другими сервисами, что, несомненно является огромным плюсом. Создаваемые боты, естественно, не ограничиваются только обработкой текста, они могут выполнять гораздо более сложные функции. В данной статье я показал, как можно сделать простого, но в тоже время полезного бота для Skype и опубликовать его. Созданный бот, ко всему прочему, может работать на множестве других платформ, таких как Telegram, Facebook Messenger, GroupMe, Slack.
Бот в Telegram
Бот в Skype
Приятного программирования.
P.S. Код бота изменялся под новую версия Bot Framework
ли со статьей или есть что добавить?