API Use Cases

API Developers reference#

6. MindLink API Use-Cases#

The MindLink API is a server component that exposes a REST-like API web service with which applications for an underlying Skype Persistent Chat instance can be written.

It allows the following kinds of applications to be written with minimal code, and in any programming language capable of making HTTP requests:

  • Applications that post message data into a chat room or send as an instant-message to a user.

  • Applications that listen for message data posted to chat rooms or sent as instant-messages and then take a related action – including posting message data back into the chat system. In contrast, the level of abstraction and the programming paradigm offered by the web service API is not meant to be a platform on top of which full-client applications are written. The general rule here is:

  • Autonomous agent applications that pump message or presence data in and out of the chat system can and should be written against the MindLink API.

  • Applications that provide an interface to manage chat rooms - such as allowing users to invite other users to a channel using a command in a room, or provide a channel creation workflow service.

  • Applications that represent a human user on the system, or which offer any form of UI into which a human user can log on, cannot and should not be written against the MindLink API. Instead, these applications should leverage lower-level SDKs which MindLink Software’s consulting team can assist with. This is the case because:

    • We want to present a very simple API that makes accomplishing CEBP integration as simple as possible.

    • In our experience, most applications in an enterprise require only very simple functionality, and it is these applications are written by developers that do not have Skype SDK experience or the time to learn the Skype SDKs.

    • Our provisioning and application control model does not map to application behaviour required of an application that represents a human user.

    • Support for deployment against a topology without PChat (17.3). This can also include IM only or GC only modalities and if desired, both.

6.1 Provisioning and Control#

The MindLink API does not only offer web services to send and receive collaborative message data - we also offer a provisioning and control system, such that system administrators can control, throttle and reconfigure applications running against the web services in real-time in production.

This is an extremely important and powerful concept, since it eradicates many of the issues of ongoing application maintenance, security, and chat-system protection from rogue applications that have plagued large and small enterprises running CEBP applications against Skype in the past.

We introduce two roles in the development and production lifetime of an application:

  • The developer:

• Writes the application code.

• Architects the code to take all application configuration from calls to the API web service itself.

• Does not write application code to join or leave chat rooms or subscribe/unsubscribe to specific users, only to respond to and pump message data in and out of those chat rooms.

  • The administrator:

• Owns the MindLink API web service.

• Provisions and configures all agents on the MindLink API instance, including their credentials, what channels they are joined to, and any application-specific configuration.

• Does this by making calls to the MindLink Provisioning web service using custom tooling written in-house.

Image 1 Figure 1 : Administrator and Developer Roles This essentially inverts the traditional “bot” paradigm – whereby the application is driven and configured from the central web service, not via configuration local to its installation. Furthermore, if the application is written to respond to configuration changes correctly, the application can be dynamically reconfigured on demand by an administrator on the central web service.

Sample Code Repository#

Sample code can be downloaded from https://github.com/mindlink/api-samples