lestvitsa.ru

Как сделать своего бота для скайпа

Как сделать своего бота для скайпа 557
Как сделать своего бота для скайпа 641
Как сделать своего бота для скайпа 336
Как создать своего бота для Skype. Что не написано в документации

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


Для начала стоит понять, что есть Bot Framework, который позволяет создавать ботов для многих мессенджеров, в т.ч. и для Skype, а есть Skype Bot API, который позволяет создавать ботов именно для Skype. У каждого своя документация, свой каталог ботов (?) и своя регистрация ботов. Вроде очевидно, что это разные вещи, но я потратил довольно много времени пытаясь разобраться в документации Bot Framework'a и в регистрации бота в нем, когда ожидал, что создаю бота без фрейворка. Далее речь будет идти именно про Skype Bot API, Bot Framework нам не нужен, регистрировать там тоже ничего не надо. Есть Skype SDK для Node.js и для C#. Их я тоже не использовал, т.к. писал бота на Python.
Для начала небольшой набор полезных ссылок (все ссылки — на английском языке):
В принципе, из документации понятно как работает бот и как он взаимодействует со 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 довольно просто.

Источник: Хабрахабр


Как сделать своего бота для скайпа 376
Как сделать своего бота для скайпа 36
Как сделать своего бота для скайпа 660
Как сделать своего бота для скайпа 488
Как сделать своего бота для скайпа 222
Как сделать своего бота для скайпа 51
Как сделать своего бота для скайпа 800
Как сделать своего бота для скайпа 510
Как сделать своего бота для скайпа 442
Как сделать своего бота для скайпа 989
Как сделать своего бота для скайпа 323
Как сделать своего бота для скайпа 259
Как сделать своего бота для скайпа 275
Как сделать своего бота для скайпа 865
Как сделать своего бота для скайпа 359
Как сделать своего бота для скайпа 823

Советуем почитать

  • Чем склеить пластик намертво в домашних условиях
  • Что помогает от боли в глазах в домашних условиях
  • С днем рождения поздравления цветоводу
  • Что можно подарит родителям на годовщину свадьбы своими руками
  • Как сделать таблицу в excel расходов