Bot Connector for Skype for Business

Bot Connector for Skype for Business

Bot Framework is a tool introduced by Microsoft, that allows developers to create, display and administrate their Bots. A bot is a web service that interacts with users in a conversation format. Users can start conversations with their Bot from different channels, such as SMS, Skype, Slack, Facebook Messenger and other common services.

What is Microsoft Bot Framework?

This framework allows to develop bots that communicate with users and perform automatized actions such as answering questions, realize actions on a computerized system, register user requests, etc. In this conversation you can use simple message texts o something more complex, like cards, images and action buttons.

The framework has three main components: Bot Builder SDK, Bot Connector and Bot Directory.

  • Bot Builder SDK is an Open Source library hosted in GitHub, available in both Node.js and C # and integrated into the bot project. It is responsible for managing the whole conversation and dialogs and there is no need for it to be implemented by the developer. The logical part of a bot consists of the logic of the service to be offered and a logic of conversation. This conversation logic can be implemented by developers through Bot Builder SDK which provides features that make interactions between bots and users much easier.
  • Bot Connector is an online service that allows connecting our bot to different channels such as Skype, Slack, SMS, Facebook or Direct Line which can be used to integrate our bot into an application or website. Besides sending and receiving messages, Bot Connector is responsible for storing the state of the conversation and provides a space to store user data and conversations. In addition it can offer translation services.
  • Bot Directory is a public directory where developers can submit their bots. These are reviewed before appearing in that directory.

How to implement a new connector?

As part of a project, it emerged the need for a channel for Skype for Business. Although Bot Connector offers connection to different channels there was still no connection available for this technology so this connector had to be implemented.

The connector was implemented as a Windows Form application that redirects users’ messages to the bot and those of the bot to the corresponding user. To do this, two main libraries are used: Microsoft Lync 2013 SDK and API Direct Line – v3.0.

  • Lync 2013 SDK is an API that allows managing customer account Skype for Business logged on the machine. It includes drivers and classes that represent the objects administered by the application as “contacts”, “conversations” and “modalities” (representing the forms of communication between members of a conversation). It also includes event-oriented programming which allows subscriptions to events such as “ConversationAdded” or “InstantMessageReceived”.
  • Direct Line API is an API REST that allows direct connection to the bot from our application. In order to use this API you must register the bot at https://dev.botframework.com, enable Direct Line in the channel list and generate a secret key. This API allows to create conversations with the Bot, send messages to a conversation, get messages from a conversation, etc. Another important feature available is the ability to open a WebSocket channel where you can receive real-time messages in a conversation.

Bot1

When a message from a user is received in the Skype for Business connector account, that message is redirected to the bot. For this, a new conversation is created if it does not exist, the message is sent and a WebSocket connection is generated from the socket provided by Direct Line to receive the messages from the bot. The connector keeps the conversation information associated with each user.

On the other hand once it receives a message from the bot on one of the sockets, it is redirected to the corresponding Skype for Business user.

Another functionality that the connector includes is the possibility of redirecting a conversation in case the bot does not recognize the intention of the user. The connector maintains a list of contacts. When the bot sends an internal message to the connector notifying that it does not recognize the user’s intention, the connector disables the bot for that user and redirects the conversation to the first available contact. In case there is no contact available the user remains in a queue until a contact can assist him.

When a conversation is redirected, a message is sent to the contact that contains information about the dialog and the last messages between the user and the bot. From that moment on, user messages are redirected to the contact and vice versa until the latter sends a message informing the connector that the assistance has ended.

One advantage of this implementation is that users do not distinguish that someone else is answering to their messages instead of the BOT, but it has the disadvantage that each contact can only assist one user at a time.

More information:

  • Microsoft Bot Framework:

https://docs.microsoft.com/en-us/bot-framework/

  • Bot Connector – Direct Line API – v3.0

https://docs.botframework.com/en-us/restapi/directline3/

  • Lync 2013 SDK

https://msdn.microsoft.com/en-us/library/jj933180.aspx


Bot Framework es una herramienta presentada por Microsoft que permite a los desarrolladores crear, desplegar y administrar sus Bots. Un bot es un servicio web que interactúa con los usuarios en un formato de conversación. Los usuarios pueden iniciar conversaciones con su Bot de diferentes canales como SMS, Skype, Slack, Facebook Messenger y otros servicios populares.

¿Qué es Microsoft Bot Framework?

Este framework nos permite desarrollar bots que se comuniquen con los usuarios y realicen acciones automatizadas como responder a preguntas, realizar acciones en algún sistema informatizado, registrar peticiones de un usuario, etc. En esta conversación puede utilizar mensajes de texto simple o algo más complejo, como tarjetas, imágenes y botones de acción.

El framework tiene tres componentes principales:  Bot Builder SDK, Bot Connector y Bot Directory.

  • Bot Builder SDK es una librería Open Source alojada en GitHub disponible tanto en Node.js como en C# que se incorpora al proyecto del bot y se encarga de gestionar toda la conversación y los diálogos sin necesidad de que sea implementada por parte del desarrollador. La parte lógica de un bot está compuesta por la lógica del servicio que se quiere ofrecer y una lógica de conversación. Esta lógica de conversación puede ser implementada por los desarrolladores a través Bot Builder SDK que proporciona características que hacen que las interacciones entre bots y usuarios sean mucho más sencillas.
  • Bot Connector es un servicio online que permite conectar nuestro bot diferentes canales como Skype, Slack, SMS, Facebook o Direct Line que se puede utilizar para integrar nuestro bot a una aplicación o sitio web. Aparte del envío y recepción de mensajes el Bot Connector es el encargado de almacenar el estado de la conversación y ofrece un espacio para almacenar datos del usuario y de las conversaciones. Además puede ofrecer servicios de traducción.
  • Bot Directory es un directorio público donde los desarrolladores pueden presentar sus bots; estos son revisados antes de aparecer en dicho directorio.

¿Cómo implementar un nuevo conector?

En el marco de un proyecto, surgió la necesidad de contar un canal para Skype for Business. Si bien Bot Conector en dicho momento ofrecía conexión a diferentes canales no estaba disponible aún uno para esta tecnología por lo que se debió implementar dicho conector.

  • Lync 2013 SDK es una api que permite gestionar la cuenta del cliente de Skype for Business logueado en la máquina. Incluye controladores y clases que representan los objetos que administra la aplicación como “contacts”, conversations” y  “modalities” ( que representa las formas de comunicación entre los miembros de una conversación). Además presenta programación orientada a eventos lo cual permite suscribirse a eventos como ”ConversationAdded” o “InstantMessageReceived”.
  • Direct Line API es un API REST que permite conectar directamente al bot desde nuestra aplicación. Para poder utilizar esta api se debe registrar el bot en https://dev.botframework.com , habilitar Direct Line en la lista de canales y generar una secret key. Esta Api permite crear conversaciones con el Bot, enviar mensajes a una conversación, obtener mensajes de una conversación, etc. Otra funcionalidad importante que presenta es la posibilidad de abrir un canal Websocket donde se puede recibir en tiempo real los mensajes de una conversación.

Bot1

Cuando un mensaje de un usuario es recibido en la cuenta de Skype for Business del conector, se redirige dicho mensaje hacia el bot. Para esto se crea una nueva conversación si esta no existe, se envía el mensaje y se genera una conexión websocket a partir de la url socket brindada por Direct Line para recibir los mensajes del bot. El conector mantiene la información de la conversación asociada a cada usuario.

Por otro lado una vez que recibe un mensaje del bot en uno de los sockets se lo redirige al usuario de Skype for Business correspondiente.

Otra funcionalidad que presenta el conector es la posibilidad de redirigir una conversación en caso de que el bot no reconozca la intención del usuario. El conector mantiene una lista de contactos. Cuando el bot le envía un mensaje interno al conector informando que no reconoce la intención del usuario, el conector desactiva el bot para dicho usuario y redirige la conversación al primer contacto disponible. En caso de no existir ningún contacto disponible el usuario queda en una cola hasta que un contacto pueda atenderlo.

Cuando se redirige una conversación, se le envía un mensaje al contacto que contiene la información sobre el diálogo y los últimos mensajes entre el usuario y el bot. A partir de ese momento se redirigen los mensajes del usuario al contacto y viceversa hasta que este último envíe un mensaje informando al conector que culminó la atención.

Una de las ventajas de esta implementación es que los usuarios no perciben que es otra persona que está respondiendo sus mensajes en lugar del Bot pero posee la desventaja de que cada contacto puede atender solamente un usuario a la vez.

Más información:

  • Microsoft Bot Framework:

https://docs.microsoft.com/en-us/bot-framework/

  • Bot Connector – Direct Line API – v3.0

https://docs.botframework.com/en-us/restapi/directline3/

  • Lync 2013 SDK

https://msdn.microsoft.com/en-us/library/jj933180.aspx

Share This
Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn