When a client writes in Telegram and the operator is busy — response time grows
Let me illustrate: a client wants to know order status, but the operator is already talking to someone else. While switching, the client waits minutes. If this repeats dozens of times a day — both time and nerves are lost. We automate such scenarios using a bot integrated with Bitrix24 via REST API. The bot handles standard requests in seconds: checks status, books services, sends notifications. The operator handles only complex questions.
This approach reduces call center load and speeds up service without extra staff. Integration via REST API allows the bot to work directly with CRM, tasks, and calendar — no intermediaries.
How the bot integrates with Bitrix24?
There are two approaches. First — via Bitrix24 Open Lines: the bot connects in the Contact Center → Open Lines → Connect channels → Telegram section. Messages go to the operator queue. Simple setup, but the bot is a relay. Second — a standalone bot on a separate server: it receives messages via Telegram Bot API (webhook), processes scenarios itself, and calls Bitrix24's REST API. Full control over logic.
| Criteria |
Open Lines |
Standalone bot |
| Scenario flexibility |
Minimal |
Maximum |
| CRM integration |
Chat only |
Full REST API |
| Processing speed |
Depends on operator (slower) |
Instant (10x faster) |
| Implementation cost |
Free |
Custom |
Why a standalone bot is more reliable than Open Lines?
Open Lines lack flexibility when automation is needed (creating leads, checking statuses, booking services). A standalone bot opens access to CRM, tasks, and calendar via REST API. We use Python + aiogram 3, Redis for states, PostgreSQL for logs. Webhooks are secured with a secret token.
According to Telegram Bot API documentation, webhooks are the preferred method for real-time updates.
Architecture of the standalone bot
Client in Telegram
↓
Telegram Bot API (webhook)
↓
Bot server (Python aiogram / Node.js telegraf)
↓ ↓ ↓
Logic Bitrix24 REST API External services
bot (crm.*, im.*, tasks.*) (1C, warehouse, etc.)
The server receives an update from Telegram, determines user intent (FSM or NLP), executes required actions in Bitrix24, returns a response to Telegram.
Key integration points with Bitrix24
Client identification
On first contact, the bot requests a phone number via KeyboardButton(request_contact=True). The obtained number is used to search for a contact in CRM: crm.contact.list with filter PHONE. If found — links telegram_id to UF_CRM_TELEGRAM_ID. If not — creates a new contact.
Creating leads and deals
Each new inquiry creates a lead: crm.lead.add with SOURCE_ID = 'MESSENGER' and UTM_SOURCE = 'telegram'. All messages are written to the lead comment via crm.timeline.comment.add.
Order status
The bot takes an order number → makes a request crm.deal.list by UF_ORDER_NUMBER → returns the stage and expected date. The client gets a response in 2-3 seconds without an operator.
Service booking
The bot shows available slots from Bitrix24's Schedule module via calendar.accessibility.get → client selects time → creates an appointment calendar.event.add linked to the contact.
Transferring complex requests to an operator
If the bot cannot process a request, it transfers to an operator. Correct implementation:
- The bot saves dialog history (last N messages) in Redis.
- Creates an Open Lines conversation via
imopenlines.crm.chat.getLink or direct chat creation via im.chat.add.
- Sends history as the first message so the operator sees context.
- The client continues in Telegram, the operator replies from Bitrix24.
Case Study: Car Service Chain
From our practice: a chain of 12 car service centers, clients want to book maintenance via Telegram, check car readiness, receive invoices.
Bot scenarios:
- Book maintenance → select location (inline buttons) → select service → select date/time from Bitrix24 schedule → confirm → SMS reminder one day before.
- Repair status → enter car plate → request to
crm.deal.list by UF_CAR_NUMBER → current stage from deal stage.
- Car ready → automatic notification when stage changes to "Ready for pickup" (trigger via
crm.deal.onUpdate → webhook to bot server → bot.send_message).
Tech stack: Python + aiogram 3 + Redis (FSM) + PostgreSQL (logging) + Bitrix24 REST.
Problem: Telegram limits send frequency — no more than 30 messages per second across different chats. For mass notifications, a queue with delays is needed. Solved via Redis queue with throttling.
Result: Client booking time reduced from 5 minutes to 30 seconds — that's 10 times faster than manual handling. Call center load dropped by 70%. Operator savings exceed $50,000 per year for a 12-location chain.
What's included in the work
- Architecture and scenario design (FSM, integration points).
- Server-side development (Python/Node.js) using Telegram Bot API and Bitrix24's REST API.
- Webhook setup, deployment (Docker, Nginx, SSL).
- Testing all scenarios: identification, booking, status, operator transfer.
- Monitoring and error logging (Sentinel, Prometheus).
- Operations documentation and team training.
Estimated timelines
| Stage |
Time |
| Design |
4–8 h |
| Basic bot development + webhook |
8–16 h |
| CRM integration (identification, leads) |
8–16 h |
| FSM scenarios (booking, status) |
16–32 h |
| Bitrix24 Schedule integration |
8–16 h |
| Outgoing notifications + queue |
8–16 h |
| Deployment, SSL, monitoring |
4–8 h |
| Total |
56–112 h |
Development investment for such a bot typically ranges from $3,000 to $6,000, depending on complexity.
Our team's experience is backed by dozens of successful projects. We guarantee stable 24/7 bot operation. Contact us to discuss details. Request a consultation — we'll evaluate your project in one day. Get a consultation and start automating today.
Open Lines: Where It All Begins and Breaks
The Open Lines module (imopenlines) is the standard Bitrix24 mechanism for omnichannel communications. It connects an external channel to an internal chat via the Im\Model\ChatTable entity. The problem is that out-of-the-box routing settings are primitive: "in turn" or "all at once." For a real sales department with 15+ managers, VIP clients, and SLA response times, this is not enough. We enhance routing via event handlers OnImOpenLinesChatStart and the REST API.
A manager switching between five windows loses messages, forgets to reply—the client leaves for a competitor who responded in 30 seconds. Bitrix24 messenger configuration gathers all channels into one interface, and CRM records every touch. Experience shows that after setup, average first response time drops by 40% within the first week.
How we implement messenger integration
We connect Telegram, WhatsApp, Viber, VK, online chat, email, and other channels via standard connectors or REST API. Each channel requires its own configuration, but the result is unified—all messages end up in open lines, and from there into the client card. We guarantee no message gets lost: we use tagged caching and agents to check queues.
How to connect WhatsApp to Bitrix24?
WhatsApp is the main business channel. Integration via WhatsApp Business API with a verified account. We configure sending and receiving messages from the Bitrix24 interface—they fall into an open line. We create HSM templates for initiating dialog (abandoned cart reminders, order status). Templates go through Meta moderation—allow 2-3 days. We ensure file, image, and document transfer. We link conversations to contacts and deals via CRM_ENTITY_TYPE and CRM_ENTITY_ID.
| Method |
Nuances |
Payment Model |
| WhatsApp Business API (Cloud) |
Verification via Meta Business, templates, bulk messaging |
Per conversation window (24h) |
| Provider (Edna, Wazzup, Chat2Desk) |
Quick start, intermediary service, own limits |
Subscription fee |
| Bitrix24 CRM Marketing |
Built-in integration, minimal setup |
Included in Professional+ tariff |
Telegram: Free Channel with High Reach
Telegram Bot API is free and well-documented—a pleasant rarity among messengers. Integration into Bitrix24 is done via the imopenlines connector. Setup: connect the bot to open lines, configure the connector to Telegram. Receiving messages, photos, videos, documents—all mapped to the Bitrix24 chat. Inline buttons and reply keyboards for navigation. Webhook on https://yourdomain/rest/imconnector.register—register the connector. CRM integration: incoming message creates a lead via crm.lead.add or an activity in the deal.
Telegram is indispensable for:
- Support via bot—standard questions resolved without an operator (up to 70% of inquiries).
- Notifications: orders, delivery, payment—via Telegram Bot API sendMessage.
- Lead collection: bot asks qualifying questions → creates a lead.
Viber and VK: Audience 35+ and Social Network
Viber maintains positions in regions. We connect a business account via the open lines connector. We use Viber Business Messages—bulk messaging with action buttons and rich content. Receiving and sending from CRM works immediately.
VK (Vkontakte) is the largest social network in Russia. Integration via the imopenlines community messages connector. Process messages and comments from a single interface. Auto-creation of a lead—handler OnImOpenLinesCrmCreate. Integration with VK Ads for tracking sources via UTM. Bot for auto-replies—VK Bot API + Callback API.
Why is proper routing of inquiries important?
Distribution of inquiries among operators is organized through queue mechanisms. By default: "who is free." In reality, more complexity is needed:
- Determining responsible person by number or email from CRM—
im.chat.get + search via crm.contact.list.
- Distribution by departments based on keywords (NLP classifier or simple regex on first message).
- Priority queue for VIP—by segment in CRM.
- Escalation on 5-minute timeout—auto-switch to next.
- Transition to call directly from chat—
telephony.externalcall.register.
We use custom event handlers OnImOpenLinesChatStart and REST API to implement such scenarios. Additionally, we connect Bizproc for complex approval chains and integration with HL blocks for storing custom queue parameters. Result: client does not wait, operator is not overloaded.
What is included in messenger integration work
| Component |
Description |
| Audit of current CRM structure |
Analysis of inquiry types, channels, operator load |
| Connecting channels |
Configuration of WhatsApp, Telegram, Viber, VK, email, online chat connectors |
| Routing setup |
Queues, distribution by competence, escalations, SLA |
| Chatbot development |
Script-based or with NLP, integration with CRM and external APIs |
| Operator training |
Documentation, video instruction recording, webinar |
| Testing and support |
Running all scenarios, 2-week monitoring after launch |
| 6-month warranty |
Free bug fixes, consultations |
Chatbots: Script-Based and with NLP
Types
Script-based (rule-based): button menu, decision tree. "How to pay" → "Where is my order" → "Business hours." Transfer to operator at intent == 'unknown' → transfer_to_queue. Reliable, predictable, covers 60-70% of typical inquiries.
With NLP: free text in Russian. Intent detection (buy, complain, inquire about delivery), entity extraction (name, date, order number). Contextual dialog—remembers what was discussed. Implemented on Rasa or Dialogflow, integrated with Bitrix24 via REST.
Example handler code for a script-based bot (PHP)
use Bitrix\Main\Loader;
use Bitrix\Imopenlines\Model\SessionTable;
Loader::includeModule('imopenlines');
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('imopenlines', 'OnImOpenLinesMessageReceive', function($event) {
$message = $event->getParameter('message');
$chatId = $event->getParameter('chatId');
if (preg_match('/order status (\d+)/i', $message, $matches)) {
$orderId = $matches[1];
// Get order status via API
$order = \Bitrix\Sale\Order::load($orderId);
if ($order) {
$status = $order->getField('STATUS_ID');
\Bitrix\ImOpenLines\Chat::sendMessage($chatId, 'Your order #' . $orderId . ' status: ' . $status);
}
}
});
Scenarios and Real Impact
| Scenario |
Action |
Operator Relief |
| FAQ |
Answers from knowledge base based on intent match |
30-50% |
| Order status |
Request sale.order.get by number |
15-25% |
| Booking |
Date/specialist selection, creation via API |
20-30% |
| Calculation |
Preliminary estimate based on parameters |
10-20% |
| Lead qualification |
Data collection → crm.lead.add |
3x funnel acceleration |
| NPS/CSAT |
Rating after service |
100% automatic collection |
Comparison: a script-based bot processes requests 5 times faster than an operator, and an NLP bot reduces fallback rate to 15% after training on real dialogs. Average savings on operator salary when implementing a chatbot amount to substantial monthly savings.
How can chatbots transform your customer support?
Development Process
- Inquiry analysis—export history from open lines, cluster by topic. Identify 80% of typical requests.
- Dialog design—map on miro/figma. Each branch ends either with an answer or transfer to operator.
- Development—logic, integration with CRM and external APIs. For script-based: finite state machine. For NLP: pipeline: tokenizer → featurizer → classifier → response selector.
- NLP training—on real dialogs (at least 500 examples). Set confidence threshold.
- Testing—run all branches, edge cases (empty message, sticker, voice).
- Optimization—monitor fallback rate, retrain on new dialogs every 2 weeks.
Timeline
| Task |
Duration |
| Single messenger connection |
1-2 days |
| Open lines setup |
2-3 days |
| Script-based bot (basic) |
1-2 weeks |
| Bot with NLP |
3-6 weeks |
| Comprehensive omnichannel system |
4-8 weeks |
Result: all communications in one window, routine automated, no message lost. Managers sell, not search for the right chat. Evaluate which channels you need—contact us, we'll select for your niche. Get a personalized timeline and cost estimate for your project.