A bot to interact with users showing the agenda of your conference

Idea

The main idea of this project it to have a Telegram’s Bot to show the agenda of your conference plus information about speakers, sponsors and so on.

You can clone this project and configure it with the schedule of your conference (plus speakers, etc) and, after following these instructions, you’ll configure and deploy your custom bot in a server with Internet connection and the bot will give all the information to the attendants

It doesn’t matter if your conference has not close the agenda until the last moment because the bot can do a hot reload of it.

You’ll need a public address (URL) where Telegram will send messages to your bot
in case you don’t have a way to deploy the bot or want support in all the process, please contact with administracion@puravida-software.com for assistent

Example

This is an example your users will see when they start a new conversation with the Bot

welcome example

When the user send the command '/agenda' the bot will show a similar screen to this:

agenda example

The user can navigate across the agenda using the bottom buttons '<<' and '>>'

agenda example2

Touching in a 'talk' button, the bot will show more information about it

agenda example3

First steps

The first thing you are going to need is a Telegram account (create it via the app installed into your mobile phone).

Once created the account you can validate your browser and navigate across the application using the browser

Search the bot @BotFather and start a conversation with it.

After the welcome screen you can send commands to this bot in order to be able to create your bots, configure them , etc, so first thing is create a bot using the /newbot command

After providing a name and an identification (a name ended in bot) you will obtain a Token. Keep it secret and DON’T STORE it into your git repository. You’ll need to inject it into the application

Build

Requirements

This project requires Java 8 (min) and you can build it executing the following command:

./gradlew build

if everything is ok you’ll have a runnable jar at build/libs/tlg-conf-VERSION-all.jar that you need to deploy in a server accessible via Internet (see deploy section)

In case you want to dockerize the bot, this project also provides a Dockerfile file:

docker build -t jagedn/tlg-conf .

Also we have a k8s.yml file as template to deploy it in a Kubernetes cluster.

kubectl apply -f k8s.yml

Flow

diag e47904e7290f143e42265fc4610a1d5a

Deploy

You will need to tell to Telegram where is located your boot via a public https URL (i.e. https://my-organization.org/tlg-conf/bot/) so you need to deploy it in a server accessible by Internet.

You have, at least, these options:

  • Deploy in a server with java and an Internet connection (tested)

  • Dockerize and deploy in a serverless cloud provider, Google Run for example (not tested)

  • Dockerize and deploy in a Kubernetes cluster cloud provider as provide by Okteto (tested)

In any case the application will search an environment variable called TELEGRAM_TOKEN you must to provide with the token value obtained from the BotFather

Configuration

You need to provide following configuration:

Environment Property Required Description

TELEGRAM_TOKEN

telegram.token

true

the token from @Botfather

REMOTE_AGENDA

remote.agenda

false

a URL if you want to externalize your agenda

TEMPLATE_WELCOME

template.welcome

false

a URL if you want to externalize the welcome message

Customization

By the moment you need to change some files of the project to customize the bot with your information. The idea is to externalize this kind of information in order you don’t need to change nor build the bot, but only use it

Conference

The conference is configured in a yml file into the conference section:

name: Test
ini: 2020-01-30
end: 2020-01-31
url: http://example.org
days:
- day: 0
  tracks:
    - code: Room 1
      sessions:
        - title: titulo1
          description: A talk about something new
          speakers: name1, name2
          from: 9:00
          to: 10:00
          url: http://example.org

        - title: titulo2
          description: Another talk talking about talks
          from: 12:00
          to: 13:00
          url: http://example.org

    - code: Room 2
      sessions:
        - title: titulo1
          description: Start your day healthy
          from: 12:00
          to: 13:00
          url: http://example.org

        - title: titulo2
          description: A so boring talk
          from: 13:00
          to: 14:30
          url: http://example.org

        - title: titulo3
          description: Closing the event
          from: 17:00
          to: 18:00
          url: http://example.org

- day: 1
  tracks:
    - code: Room 1
      sessions:
        - title: titulo11
          description: a workshop
          from: 10:00
          to: 12:00
          url: http://example.org

        - title: titulo21
          description: Another workshop
          from: 13:00
          to: 15:00
          url: http://example.org

    - code: Room 2
      sessions:
        - title: titulo123
          description: Start your day healthy
          from: 11:00
          to: 12:00
          url: http://example.org
Table 1. Conference attributes
Attribute Description

name

the name of the conference

ini

when the conference start, yyyy-MM-dd

end

when the conference end, yyyy-MM-dd

url

a url

days

a list of DayS

Table 2. Day attributes
Attribute Description

day

a zero index date (to increase at conference.ini)

tracks

a list of TrackS

Table 3. Track attributes
Attribute Description

code

a short code, i.e. Room 1, Salon,

sessions

a list of SessionS

Table 4. Session attributes
Attribute Description

title

the title of the session

description

a description of the session

from

the start time 'HH:mm'

to

the end time 'HH:mm'

url

an url to the session

Welcome

The welcome message is a short Markdown file you can provide with the information you want. It will be sent to the user at the start of the chat or when the user request it via /start command

Telegram support only a subset of Markdown. Bold, italic, and so on, see Telegram documentation to check what you can use

Welcome can be a good place, for example, to promote your sponsors including link to their websites and so on.

This is an exampleo of a welcome.md

__*Welcome to TestConference*__
The most awesonic conference about Tech

__*When:*__ 23-26 April 2020

__*Where:*__ Here, in *Madrid*

This event can't happend with the support of:

[Company 1](https://example.org) as Gold sponsor
[Company 2](https://example.org) as Platinum sponsor

Buy your ticket at https://example.org