Links

Simple Telegram Bot

A simple relay communication between Rocket.Chat and Telegram is possible by configuring a basic bot. The guide below shows a community example of how this can be achieved with webhooks.
This gives you the possibility of relaying messages between Telegram and Rocket.Chat in a specified room of your choice.
This integration is not suitable for Omnichannel Conversations. Consult the Telegram App for managing your Omnichannel conversations with Telegram. Workspaces subscribed to any of Rocket.Chat's premium plans can install the Telegram App, which comes with additional functionalities and Omnichannel features.

Getting Started

Make sure Your Rocket.Chat workspace URL is publicly available.
  1. 1.
    Log in to your Telegram account on your mobile or using a browser.
  2. 2.
    Add and open a conversation with the user BotFather.
  3. 3.
    Click start.
  4. 4.
    Send /newbot to start creating a new bot.
  5. 5.
    Follow the instructions to continue.
    • Set the bot's username. Telegram successfully creates the bot and shows how to access it.
  6. 6.
    Copy the token provided, it is needed for the configuration.

Configuration

Before configuring the Telegram integration, make sure you:

Creating an Incoming Telegram webhook in Rocket.Chat

The incoming webhook is responsible for relaying messages from Telegram into Rocket.Chat into a specific Channel.
To create an incoming webhook:
  • Go to Administration > Workspace > Integrations in Rocket.Chat
  • Create a new Incoming Webhook following the guide Create a new incoming webhook
    • Enable the integration
    • Set the webhook integration name.
    • Set the Post to Channel as the channel created above.
    • Set Post as, as the user created above.
    • Enable the script and paste the following code.
class Script {
addQuotePrefix(str) {
let tmp = str.split('\n'),
res = [];
for (const frag of tmp) {
res.push(`> ${frag}`);
}
return res.join('\n');
}
process_incoming_request({ request }) {
// UNCOMMENT THE BELOW LINE TO DEBUG IF NEEDED.
// console.log(request.content);
if ('edited_message' in request.content) {
request.content.message = request.content.edited_message;
}
let from = request.content.message.from;
let who = from.username
let icon_url = '/avatar/' + from.username + '.jpg'
if(!who) {
if (from.first_name && from.last_name) {
who = `${from.first_name} ${from.last_name}`
} else if (from.first_name) {
who = from.first_name
} else {
who = from.last_name
}
icon_url = `/avatar/${request.content.message.from.first_name}.jpg`
}
let body = request.content.message.text
if(!body) {
if(request.content.message.hasOwnProperty("sticker") && request.content.message.sticker.emoji) {
// It's a sticker
body = request.content.message.sticker.emoji
} else {
return {}
}
}
if(request.content.message.reply_to_message) {
var quotedMessage =
"*" +
request.content.message.reply_to_message.from.username +
"*\n" +
request.content.message.reply_to_message.text;
quotedMessage = this.addQuotePrefix(quotedMessage);
body = quotedMessage + '\n' + body;
}
return {
content: {
username: who,
icon_url: icon_url,
text: body
}
};
}
}
  • Save the integration.
This creates a new incoming integration with a webhook URL and token provided.

Setting Telegram webhook

  • Copy the incoming webhook URL provided by Rocket.Chat after saving.
  • Change the following URL with yourTelegramBotToken and Incoming webhookURL and open it on your browser.
https://api.telegram.org/bot<my-telegram-authorization-token>/setwebhook?url=<Incoming_Webhook_Link_from_Rocket.Chat>
  • A response indicating success is sent which looks like this:
{
"ok": true,
"result": true,
"description": "Webhook was set"
}

Test Telegram Incoming Integration

Test your incoming Webhook by sending a telegram message to the Telegram bot.
The message sent gets posted in channel by the useryou specified in the incoming webhook configuration page.

Creating a Telegram Group with Bot access

A Telegram group can be configured to send and receive messages to and from Rocket.Chat.
Create a Telegram group and grant bot access.
  • Create a new Telegram group.
  • Get the group chat id. This can be gotten by:
    • Adding the user RawDataBotto the group
    • On joining, a response like below is seen with the chat id
Your chat id is -873457731, your id is 1140377161
Also you can send me username or joinchat link in a private message
Kisses, your bot
  • Change the bot group privacy settings so it can listen to all messages by:
    • Sending the message /setprivacy to BotFather.
    • Choosing the bot you want to edit.
    • Setting the status to Disable.

Creating an Outgoing Telegram webhook in Rocket.Chat

The outgoing integration is used to relay messages back from Rocket.Chat to Telegram.
  • Go to Administration > Workspace > Integrations in Rocket.Chat.
  • Create an outgoing webhook following this guide Create a new outgoing webhook.
    • Select the Message sent as the Event Trigger.
    • Enable the integration.
    • Set any Trigger Words which messages must have before they get relayed if needed.
    • Specify the channel to listen to.
    • Set the URL following this format:
https://api.telegram.org/bot<my-telegram-authorization-token>/sendMessage?chat_id=<chat-id>
  • Enable Script and paste the following code
class Script {
prepare_outgoing_request({ request }) {
if (request.data.bot) {
//Don't repost messages from the bot.
return { };
} else {
return {
url: request.url + '&parse_mode=HTML' + '&text=' + encodeURIComponent('<b>' + request.data.user_name+ '</b>: ' + request.data.text),
method: 'GET'
};
}
}
}
  • Save the integration.
  • Add your bot to the telegram group and enjoy cross-platform communication between Rocket.Chat and Telegram.
  • Multiple Outgoing Triggers can be configured to cover all use cases.
  • The scripts can be customized as needed. Learn more here Script details
Last modified 3mo ago
Rocket.Chat versions receive support for six months after release.