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.
Rocket.Chat Enterprise workspaces have the Telegram App packaged with many more functionalities and other Omnichannel features to use.
Note: This integration is not designed to work for Omnichannel Conversations. Please check out the Telegram App for serving your Omnichannel conversations with Telegram.
Make sure Your Rocket.Chat workspace URL is publicly available.
- 1.
- 2.
- 3.Click start.
- 4.Send
/newbot
to start creating a new bot. - 5.Follow the instructions to continue.
- Set the bot's username. Telegram successfully creates the bot and shows how to access it.
- 6.Copy the token provided, it is needed for the configuration.
Before configuring the Telegram integration, make sure you:
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
- 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.
- Copy the incoming webhook URL provided by Rocket.Chat after saving.
- Change the following URL with
yourTelegramBotToken
and IncomingwebhookURL
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 your incoming Webhook by sending a telegram message to the Telegram bot.
The message sent gets posted in
channel
by the user
you specified in the incoming webhook configuration page.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
RawDataBot
to 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:
- Choosing the bot you want to edit.
- Setting the status to
Disable.
The outgoing integration is used to relay messages back from Rocket.Chat to Telegram.
- Go to Administration > Workspace > Integrations in Rocket.Chat.
- 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.
Last modified 2mo ago