Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@sava.team/broid-telegram

xakep-sava5AGPL-3.0+2.1.6

Convert Telegram messages into Activity Streams 2 with Broid Integration

telegram, broid, sava, activity, strams, activity streams 2, messaging, chat, bot

readme

npm node deps tests nsp-checked

Build

Broid Telegram Integration

Integrations is an open source project providing a suite of Activity Streams 2 libraries for unified communications among a vast number of communication platforms.

Connect your App to Multiple Messaging Channels with One OpenSource Language.

gitter site

Message types supported

Simple Image Video Buttons Location Phone number Audio Document
|

Location, Phone number are platform limitations.

Getting started

Install

npm install --save @sava.team/broid-telegram

Connect to Telegram

const BroidTelegram = require('@sava.team/broid-telegram');

const telegram = new BroidTelegram({
  token: "<api_key>",
  webhookURL: "http://127.0.0.1",
  http: {
    host: "127.0.0.1",
    port: 8080
  }
});

telegram.connect()
  .subscribe({
    next: data => console.log(data),
    error: err => console.error(`Something went wrong: ${err.message}`),
    complete: () => console.log('complete'),
  });

Telegram can also be used with your existing express setup.

const BroidTelegram = require('@sava.team/broid-telegram');
const express = require("express");

const telegram = new BroidTelegram({
  token: "<api_key>",
  webhookURL: "http://127.0.0.1"
});

const app = express();
app.use("/telegram", telegram.getRouter());

telegram.connect()
  .subscribe({
    next: data => console.log(data),
    error: err => console.error(`Something went wrong: ${err.message}`),
    complete: () => console.log('complete'),
  });

app.listen(8080);

Options available

name Type default Description
serviceID string random Arbitrary identifier of the running instance
logLevel string info Can be : fatal, error, warn, info, debug, trace
token string | Your API Key
http object { "port": 8080, "http": "0.0.0.0", "webhookURL": "127.0.0.1" } WebServer options (host, port, webhookURL)

Receive a message

telegram.listen()
  .subscribe({
    next: data => console.log(`Received message: ${data}`),
    error: err => console.error(`Something went wrong: ${err.message}`),
    complete: () => console.log('complete'),
  });

Buttons supported

mediaType Action types Content of value property
text/html redirect URL to be opened in the built-in browser.
| postback Text of message which client will sent back as ordinary chat message.

Post a message

To send a message, the format should use the broid-schemas.

const formatted_message = {
  "@context": "https://www.w3.org/ns/activitystreams",
  "type": "Create",
  "generator": {
    "id": "f6e92eb6-f69e-4eae-8158-06613461cf3a",
    "type": "Service",
    "name": "telegram"
  },
  "object": {
    "type": "Note",
    "content": "hello world"
  },
  "to": {
    "type": "Person",
    "id": "43418004"
  }
};

telegram.send(formatted_message)
  .then(() => console.log("ok"))
  .catch(err => console.error(err));

Examples of messages

You can find examples of sent and received messages at Broid-Schemas.

Contributing to Broid

See CONTRIBUTE.md

Copyright (c) 2020 SaVa.Team

This project is licensed under the AGPL 3, which can be found here.