---
title: Chat with employees from IM
description: Connect Feishu, Lark (Feishu international), Telegram or Slack to Teloa to chat in direct messages, assign work in groups and approve from cards.
lastVerified: 2026-10-18
---

# 3.14 Chat with employees from IM

IM channels let you talk to the main assistant or a specific employee from Feishu, Lark (Feishu international), Telegram or Slack without opening the workbench. You can mention employees in a bound IM group to hand over work and approve or reject approval cards directly. Conversations, group messages and approvals all go through Teloa's own services, so the workbench shows the same records. Before connecting a real workspace, check direct messages, group mentions and approval cards once with a test bot.

## Enable IM channels

IM channels are built into Teloa. There is nothing to install or enable in the Marketplace. Add and enable each channel in **Settings > IM channels**, and disable or remove a channel there when you no longer need it. The IM channels capability itself cannot be turned off.

## Before you start

- Teloa runs on Node.js 22 or later, and this computer must be able to reach the chosen IM platform.
- Create your own bot on the platform (a Telegram bot, an internal Slack app, or a Feishu or Lark custom app) and get its keys.
- Each channel binds exactly one personal account. Messages from other people in IM are never executed as instructions.

Keys per platform:

| Channel | Keys | Platform requirements |
| --- | --- | --- |
| Telegram | Bot token | Create the bot with BotFather |
| Slack | Bot token (`xoxb-`) and app token (`xapp-`) | Enable Socket Mode; grant `connections:write`, `chat:write`, `app_mentions:read`, `im:history`, `channels:history` |
| Feishu | App ID and app secret; encrypt key optional | Use long-connection event subscription; enable `im:message`, `im:message.group_at_msg` and card callbacks |
| Lark (Feishu international) | App ID and app secret; encrypt key optional | Create the app in the Lark Developer Console; same requirements as Feishu, see below |

## Add a channel and bind your account

1. Open **Settings > IM channels**, pick the channel type under "Add channel", enter the keys and save. The page only shows "Keys saved" and never displays the values again.
2. Turn the channel on. When the status shows "Connected", click "Generate pairing code".
3. In IM, send `/pair <code>` to the bot in a **direct message**. The code is valid for 10 minutes, works once, and is rejected in groups.
4. After the bot confirms the binding, refresh the settings page and your account appears under "Linked accounts". You can change the default contact from the main assistant to an employee there.

The first time you save a Feishu or Lark channel, Teloa downloads and verifies a locked version of the Feishu SDK (both channels share one copy, so it is only downloaded once), which may take about a minute.

Channel keys can only be saved in Settings. Setting `SLACK_BOT_TOKEN`, `FEISHU_APP_SECRET`, `LARK_APP_SECRET` and the like as environment variables has no effect, and neither does the `_FILE` form; the launcher drops such variables from the environment it starts in and notes it once in the startup log (names only).

## Setting up Lark (Feishu international)

Lark and Feishu are separate platforms: developer consoles, accounts and organizations (tenants) do not overlap. An app created on the Feishu open platform cannot be installed in a Lark organization and vice versa, so Lark needs its own app and is a separate "Lark (Feishu international)" channel in Teloa. Both channels can be on at the same time without affecting each other; existing Feishu channels need no changes.

1. Sign in to the [Lark Developer Console](https://open.larksuite.com/app) with your Lark organization account and create a **custom app**.
2. Under "Add features", turn on **Bot**.
3. Under "Permissions & Scopes", add `im:message` and `im:message.group_at_msg`.
4. Under "Events & callbacks", set the event subscription mode to **receive events through persistent connection** and add the "Receive message" event (`im.message.receive_v1`); set the callback subscription mode to persistent connection as well and add "Card action" (`card.action.trigger`). Persistent connections are only available to custom apps.
5. Create a version and publish it, then wait for your organization admin to approve it.
6. Under "Credentials & Basic Info", copy the App ID (starts with `cli_`) and the App Secret, plus the Encrypt Key if you set one.
7. Back in Teloa, open **Settings > IM channels**, choose "Lark (Feishu international)" as the channel type, enter the values and save, then turn the channel on and pair as described above.

A Lark channel only connects to Lark's official open platform address `open.larksuite.com`. The address follows from the channel type and cannot be entered by hand. The machine running Teloa must be able to reach it.

## Direct messages and commands

Plain text in a direct message goes to a conversation with your default partner; the finished reply is sent back to the same chat. Available commands:

| Command | Effect |
| --- | --- |
| `/new` | Start a new conversation |
| `/status` | Show the current partner |
| `/stop` | Stop the current reply |
| `/colleague name` | Switch to an employee; `/colleague assistant` switches back |
| `/tasks` | Show recent tasks |
| `/attention` | Show items waiting for you |
| `/help` | Command help |

Keys, payments, accounts and security settings can only be handled in the workbench; IM replies with a link instead.

## Assign work in groups

Under "Group links" in settings, link an IM group to a Teloa team group. When you then mention the bot or an employee by name in that IM group, your message is sent to the team group together with up to 10 earlier messages from others (as reference material, not instructions), and the employee's reply is posted back to the IM group. Messages without a mention are only buffered in memory and never stored.

## Approvals

When an employee needs permission for an action, an approval card appears in both the workbench and your IM direct message. Whichever side answers first wins; when you answer in the workbench first, the IM card is edited to say so and its buttons are removed. Only the bound account can answer in IM; unanswered cards expire after 30 minutes and must then be handled in the workbench. IM can only approve or reject the single call and cannot change permission rules.

## Known limitations

- After you answer in IM, the same card in the workbench stays visible until the turn ends; clicking it has no effect.
- After Teloa restarts, IM approval cards sent before the restart expire; clicking them only reports that the card was handled or has expired.
- Only one Teloa on the same computer can connect a given set of IM channels; the other one shows the error "Another Teloa is connected to this channel".
- Sending files and streaming replies are not supported. Mentions inside an IM thread go to the team group's main stream, and replies return to that thread.

For network and data-location notes during deployment, see [Configuration and data locations](https://docs.teloa.ai/v/0.2.4/markdown/en/deploy/configuration.md).
