Страницы

Поиск по вопросам

понедельник, 16 декабря 2019 г.

Послать сообщение в skype чат используя python

#python #skype #python_27


Необходимо написать программу на Python для отправления сообщений в чат Skype. Skype4Py
не подходит из-за того, что стоит 64-битный Python.

Существуют ли какие-либо альтернативы для работы со Skype, помимо Skype4Py, и есть
ли Skype API для отправки сообщений?
    


Ответы

Ответ 1



Скайп-бот может послать сообщение, используя REST API: POST /v2/conversations/8:alice/activities HTTP/1.1 Host: apis.skype.com Authorization: Bearer { "message": {"content" : "Hi! (wave)"} } например чтобы послать message строку skypeid пользователю на Питоне: #!/usr/bin/env python2 import json from urllib2 import urlopen, Request def send_message(message, skypeid, token, host='apis.skype.com'): url = 'https://{host}/v2/conversations/8:{skypeid}/activities'.format(**vars()) headers = dict(Authorization='Bearer ' + token) data = json.dumps(dict(message=dict(content=message))).encode() urlopen(Request(url, data, headers)).close() где token можно получить с помощью другого http POST запроса: from urllib import urlencode def get_access_token(client_id, client_secret): # from messaging/auth-service.js in skype-sdk # NOTE: unlike the documented way in /skype/bots/docs/; # this approach works for me url = 'https://login.microsoftonline.com/common/oauth2/v2.0/token' data = urlencode(dict(client_id=client_id, scope='https://graph.microsoft.com/.default', grant_type='client_credentials', client_secret=client_secret)).encode() return json.loads(urlopen(url, data).read().decode())['access_token'] access_token можно кэшировать expires_in секунд. Чтобы получить client_id, client_secret необходимо зарегистрировать приложение со своей microsoft учётной записью и создать пароль. Затем сам Skype бот нужно также зарегистрировать, чтобы получить ссылку, по которой можно добавить бота в Skype-контакты (до публикации бота, по этой ссылке его можно найти). Чтобы получить ответные сообщения нужно указать при создании Skype бота https webhook. Для теста, можно ngrok http 8000 использовать, который напечает url, который можно как публичный webhook указать. При этом достаточно локально http (не https) сервер запустить, который json может принимать, на указанном 8000 порту, например: #!/usr/bin/env python3 from aiohttp import web # $ pip install aiohttp async def handle(request): messages = await request.json() for message in messages: print(message) return web.HTTPCreated() # 201 app = web.Application() app.router.add_route('POST', '/v1/chat', handle) web.run_app(app, host='localhost', port=8000, ssl_context=None) В тему статья на Хабрахабр: Как создать своего бота для Skype. Что не написано в документации.

Комментариев нет:

Отправить комментарий