Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@sergiov85/skype-http

SergioV8528MIT1.1.2TypeScript support: included

Unofficial Skype API for Node.js via HTTP. Forked from ocilo/skype-http and Sorunome/skype-http

Skype, Skype-Web, Skype-HTTP

readme

Skype-Http

npm GitHub repository Snyk Vulnerabilities

Maintainability Rating Bugs Code Smells Coverage

Unofficial Skype API for Node.js via HTTP. This relies on the Skype Web Application and requires the credentials of the account you want to use: use it with care.

Installation

  • Stable version:

    npm install --save @sergiov85/skype-http

Import for Typescript or Javascript ES6:

import { Api }  from "skype-http";

Import for Javascript ES5:

var skypeHttp = require("skype-http");

Quick start

The code below sends Hello, World! to all of bob's contacts. If bob's skype account was an MSA account(rather than older skype login) he would login with "bob@bobsdomain.com".

import { Api, connect } from "skype-http";

async function run() {
  const api: Api = await connect({credentials: {username: "bob", password: "hunter2"}});
  for (const contact of await api.getContacts()) {
    await api.sendMessage({textContent: "Hello, World!"}, contact.mri);
  }
}

run();

Running example

The demo will prompt you your username and password: you should use your Skype account or MSA.

git clone https://github.com/demurgos/skype-http
cd skype-http
# Ensure that you have the latest versions of the global dependencies
sudo npm install -g gulp-cli
npm install
npm start

This will perform a verbose connection (it should log the acquisition of various tokens), display the list of contacts, set the status to "Online" and start to respond to messages.

Documentation

Old API documentation for the version 0.0.13

At the moment, documentation generation no longer works (we're waiting for Typedoc 0.10). So I recommend to look at the example in src/example and library source code in src/lib, especially the api.ts file and types directory.

Help is greatly appreciated if you want to help with documentation.

For Typescript, you should import types using import { Contact } from "skype-http/types/contact", etc. (src/lib is the root of the published package).

Resources

If you just want to create a bot, take a look at https://github.com/Microsoft/BotBuilder first.

You can find the decompiled source code of the Skype Web Application on the skype-web-reversed repository.

What's not working and probably never will.

Project Background

This project started as a fork of the https://github.com/ShyykoSerhiy/skyweb after slow progress from 3rd party patches. The goal is to provide stronger guarantees about the objects returned by the API (through checks and normalization) and better error management, because scrapping/unofficial API calls are unreliable so the library should be resilient.

Disclaimer

This project relies on SkypeWeb Skype implementation. If Microsoft Corporation decides to remove Skype implementation (or change it in any) skype-http might not be in working state. Therefore it's not recommended to use it in any critical part of production code. In fact it's not recommended to use it in production at all.

MIT License.

changelog

1.1.0 (2021-01-19)

  • [Feature] Restore functionality of getMessages(conversationId: string)

1.0.1 (2021-01-18)

  • [Fix] Change attribute order of addMemberToConversation method to (memberId: string, conversationId: string, role: 'Admin' | 'User])

0.0.15 (2018-02-14)

  • [Feature] Add setConversationTopic(conversationId: string, topic: string)
  • [Feature] Add getJoinUrl(conversationId: string)
  • [Feature] Add addMemberToConversation(conversationId: string, memberId: string)
  • [Feature] Add createConversation(allUsers: AllUsers)
  • [Fix] Do not throw on unexpected extra keys when reading responses.
  • [Fix] Fix message host resolution (API change).
  • [Fix] Mark isFavorite in ContactGroup as optional.
  • [Fix] Mark name in ContactProfile as optional.
  • [Fix] Move .ts sources to a different directory than .d.ts and .js in dist build
  • [Internal] Run tests and coverage on .mjs files.

0.0.14 (2018-01-12)

  • [Breaking change] Use contacts API v2: the new types are in lib/types, the old types remain in lib/interfaces. The main difference is that the MRI key (8:user_id) is no longer parsed and most of the contact details are now in a Profile object. It is no longer possible to get a single contact.
  • [Feature] Expose detailed errors for endpoint registration.
  • [Feature] Support ES modules (ESM)
  • [Fix] Add support email login (#58)
  • [Internal] Update project tools to turbo-gulp
  • [Internal] Enable integration with Codecov
  • [Internal] Enable integration with Greenkeeper
  • [Internal] Use runtime representation of the types with Kryo

0.0.13 (2017-07-16)

  • [Breaking] Allow Contact.name.first and Contact.surname.first to be null. This matches the Skype API.
  • [Feature] Send images with the new sendImage method
  • [Feature] Add support for state serialization. This allows you to export the state and then restore it.
  • [Internal] Add background information about the project and update the commands available to contributors.
  • [Internal] Add TypeDoc generation.

0.0.12 (2017-05-10)

  • [Breaking] Require ES2015 (ES6) objects. If you use it an a browser, include a shim
  • [Feature] Strongly typed login errors. You can now receive a errors.microsoftAccount.MicrosoftLoginError when trying to login. This error contains a cause that explains the issue (take a look at the src/errors directory). Some of the errors that are detected include invalid credentials and login limits.
  • [Patch] Drop dependency on typings. Solves some installation issues.
  • [Patch] Fix missing dependency on incident in package.json.
  • [Internal] Update tslint to version 8 (enforce trailing comma for multiline objects).
  • [Internal] Require successful gulp :lint to commit.
  • [Internal] Rename the main module to index in src/lib.

0.0.11 (2017-05-09)

  • [Patch] Use Microsoft accounts for connection
  • [Patch] Update main in package.json to point to the correct file.
  • [Internal] Update dependencies. Drop dependency on bluebird in favor of native promises and async/await.

0.0.10

  • [Internal] Create CHANGELOG.md