Master channels

Master channels are the interface that directly or indirectly interact with the user. Despite the first master channel of EFB (EFB Telegram Master) is written in a form of Telegram Bot, master channels can be written in many forms, such as:

  • A web app

  • A server that expose APIs to dedicated desktop and mobile clients

  • A chat bot on an existing IM

  • A server that compiles with a generic IM Protocol

  • A CLI client

  • Anything else you can think of…

Design guideline

When the master channel is implemented on an existing protocol or platform, as far as possible, while considering the user experience, a master channel SHOULD:

  • maintain one conversation thread per chat, indicating its name, source channel and type;

  • support all, if not most, types of messages defined in the framework, process and deliver messages between the user and slave channels;

  • support all, if not most, features of messages, including: targeted message reply, chat substitution in text (usually used in @ references), commands, etc. Master channel SHOULD be able to process incoming messages with such features, and send messages with such features to slave channels if applicable;

  • be able to invoke and process “additional features” offered by slave channels.

Optionally, a master channel can also support / identify vendor-specified information from certain slave channels.

../_images/master-channel-0.png

An example of an ideal design of a master channel, inspired by Telegram Desktop

Depends on your implementation, a master channel may probably needs to maintain a list of chats and messages, for presentation or other purposes.

Message delivery

Note that sometimes the User may send messages outside of this EFB session, so that slave channels MAY provide a message with its author in the “self” type.

Implementation details

See MasterChannel.