Chatbots are more than you thought, and here's why
An argument for treating chatbots as full applications rather than trivial programming exercises, covering their advantages, limitations, interface challenges, and business uses.
Translated by ChatGPT GPT-6.1 Sol
Original publication details
Чат-боты — это больше, чем вы думали, и вот почему
Archived publication. Roles, figures, and technical instructions reflect the original publication date.
In this article, I want to share some points about creating chatbots and developing solutions like them. I work as a Python Software Engineer at Grid Dynamics. One of the things that prompted this article was my participation in an internal project that, over six months, essentially grew into a mini-department for bot development. The aim of this piece is to look at chatbots from a different angle: not as something even a programming beginner can build, but as a functional and commercially worthwhile solution.
In my experience, I most often encounter negative or dismissive attitudes toward bot development among engineers. That is precisely why I wrote this article. Of course, perhaps you personally have never thought that way; in that case, I am ready to analyze and discuss the points below. If you do hold that view, I would be happy to hear your reaction after reading.
What is a chatbot?
First, we need to understand one fundamental thing: a chatbot is, above all, an application, no less capable than a native application or a website. All the solutions mentioned above usually rest on a user interface (UI, Front-End) and a set of server-side actions that handle user requests (Server, Back-End), as well as interactions with a database and other services needed to meet the product’s requirements. This is the standard classification; the modern internet has nothing else to offer us.
Essentially, a chatbot is a product just like a website, but with one important distinction: work on the user interface is handed over to a third party. In other words, we implement the application’s logic, while display and interaction happen through a chat interface—naturally, in today’s terms, some kind of messenger. At this stage, let us set aside the question of building that interface to make it convenient to use through a third-party application—the much-discussed UX—as well as the process of adapting your application’s presentation to the chat application’s interface and capabilities.
What is distinctive about the tasks a chatbot solves?
Given our answer to what a chatbot is, we can conclude that it can solve the same range of tasks as any other product. Naturally, with certain considerations:
-
often minimal access to the user’s file system and operating system, unlike a native application;
-
an interface limited by the chosen chat application;
-
dependence on an external product’s availability, which has been particularly relevant lately;
-
extremely difficult automated testing.
Advantages of choosing a chatbot to implement a product
The main advantage of a chatbot is that the user stays in a familiar, understandable interface and interacts with our application without losing focus on communication. This is especially important for bots that solve tasks within a company or team.
Accordingly, we can afford not to spend separate time developing a user interface, instead adapting our inputs to the messenger’s capabilities. The same applies to testing that interface. All that remains is to test your own functionality.
Of course, the greatest benefit of a ready-made interface is that, with a sound and logical architecture, the end result will look the same and be as predictable as possible for everyone using your application. Another small benefit is the possibility of scaling by launching new identical bots, on a single server if the architecture supports it.
What makes creating chatbots difficult?
The main difficulty in creating an application for messengers is designing a convenient, functional interface based on the features available to us inside the messenger. Accordingly, when creating particular user flows, we face difficulties we have to accept, and sometimes—as with Slack—enormous opportunities based on the “blocks” we are allowed to use.
If we need to create a complex sequence of actions and implement a reasonably clear way of supporting a complex user scenario, in many messengers we will encounter major problems in conveniently constructing the relevant interface. For example, this could be a complex form where the sequence of entries or choices affects the next step and/or actions within your application.
Chatbots in real life
Let’s try to understand the place bots already occupy in our lives. Of course, the first things to mention are bots for cryptocurrency and working with it, and for buying airline and railway tickets. There are many examples with such functionality. For example, the state railway company Ukrzaliznytsia has ticket-selling bots in Telegram and Viber.
A large segment of bots handles interaction within the messenger. These include both official accounts and chats for communicating with well-known people or companies, and additional functionality for moderating all kinds of chats and communities. Next, we can identify a group of bots that act as assistants in users’ everyday activities. These range from financial tracking bots to various supporting tools for monitoring and managing resources without leaving your favorite messenger.
Big business is also gradually entering this niche. Many companies organize their technical support through bots while allowing cross-platform interaction. This means people can message such a bot from different messengers and still receive similar or identical handling of a particular request.
It is also worth mentioning that many bots you can find in Telegram, for example, which have relatively large numbers of users, offer additional functionality in exchange for a donation, either as a subscription or as a one-time payment. Such bots are often commercially successful because maintaining a server for a bot costs several times less than for a website with a similar load, thanks to distributing the resources requested by users, including to the messenger’s servers.
What about the idea that this is just playing around?
Still, what if someone sees all this as a useless waste of time and resources? My answer is simple: try solving a routine task through your favorite messenger.
Everyone knows there are bots to suit every taste now, and spending time writing your own is not always convenient or worthwhile. Yet the result can bring us far more benefit and fulfillment of our routine needs than the resources we spend on it. Spoiler: if your favorite messenger is Telegram, your efforts will often be minimal and the results delightful.
Finally, it is important to remember that developing a bot is exactly the same kind of process as developing an application. Do not forget all the basic and “golden” rules you have learned while working in your field and with your favorite language. Right now, all the most popular programming languages have a wealth of ready-made solutions and frameworks among their open-source libraries for building bots for almost any platform. Python and JavaScript are the favorites here. Ultimately, after reading the documentation, you can implement such a library yourself if you cannot find a popular ready-made one, since the primary means of interaction between messenger servers and your application is still HTTP/Socket requests.
As always, I am ready to dive into a reasoned, rational discussion in the comments. I would also be happy to talk about creating complex applications based on messengers.