Skip to content

ppati000/tele_notify

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TeleNotify

TeleNotify by ppati000 enables your Rails app to send notifications/messages to your users via Telegram's Bot API. Forget email newsletters!

A working demo can be tested here. For the source, see the TeleTest repository

Installation

Note: For any news, questions, suggestions or anything else, contact and/or follow me on Twitter or send me a mail

Prerequisites

Needless to say, you need a Telegram bot account first. To generate a new Telegram bot, message @botfather on Telegram. For more information, see the official guide. During this process, you will obtain a token which you will need in the following steps.

Your app must have HTTPS enabled.

Install

Just add the following to your Gemfile.

#Gemfile
gem 'tele_notify', '~> 0.1.1'

And follow that up with a bundle install.

Setup and Database Migrations

TeleNotify uses a telegram_users table to store all users. To generate and run the migration just use.

rails generate tele_notify:migration

This will also generate a config file in config/initializers/tele_notify.rb. Make sure to set your Telegram token and application URLs here. It should look something like this:

#Set your home URL, so Telegram callbacks work
#For production, just use your URL (e.g. https://myapp.com)
#You MUST NOT include a trailing slash and it MUST be https!
#INVALID URLS: e.g. http://myapp.com or https://myapp.com/
TeleNotify::TelegramUser.configure_home_url("YOUR PRODUCTION URL")

#For development, download ngrok from https://ngrok.com/.
#Extract it and run "./ngrok http 3000"
#Then copy the URL you get from the console window.
#Remember to use the HTTPS URL!
TeleNotify::TelegramUser.configure_dev_url("YOUR NGROK DEVELOPMENT URL")

#Set your Telegram Bot API token here
#Don't have your token yet? Create your bot using https://telegram.me/botfather
TeleNotify::TelegramUser.configure_token("YOUR TOKEN")

Set webhook, so bot will know where to send user data:

https://api.telegram.org/bot<TOKEN>/setWebHook?url=https://<EXAMPLE.COM>/<TOKEN>
{"ok":true,"result":true,"description":"Webhook was set"}

Next, add two lines of code to make your ApplicationController look like this:

#app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception

  #IMPORTANT! THESE TWO LINES MUST COME AFTER protect_from_forgery!
  skip_before_filter :verify_authenticity_token, :only => :webhook
  include TeleNotify::Controller

  #other code...
end

Last but not least, add a callback URL for Telegram in config/routes.rb, which must be the same as your token.

#config/routes.rb
Rails.application.routes.draw do
  post '/<your token>' => 'application#webhook'
end

Now that everything is done, you can finally run bundle exec rake db:migrate and restart server. Congratulations! You successfully installed TeleNotify!

Using TeleNotify

To give users the ability to sign up for your Telegram Notifications, put a link to your telegram bot somewhere in your app. This can be as simple as

<a href="https://telegram.me/YOUR_BOT_USERNAME">Send us a message to receive Push Notifications via Telegram!"</a>

Any user that sends a message to your bot will be stored in the database with their telegram_id and their first_name.

Send messages to those users like this: (e.g. from some controller in your app)

#in some controller action

#sends message to a user
TeleNotify::TelegramUser.find(1).send_message("How Obama won the internet: Read more at http://example.com")

#finds a user by his Telegram ID and sends him a message
TeleNotify::TelegramUser.find_by(telegram_id: 12345678).send_message("Some other notification")

#sends a message to everyone who signed up
TeleNotify::TelegramUser.send_message_to_all("Check out our new stuff!")

Testing

All testing is currently here: TeleTest repository

Changes

0.1.1

  • Initial release

Contributing

Fork it. Commit your changes. Make a pull request :)

License

TeleNotify was initially forked from Acts as votable by ryanto. It is released under the MIT License.

About

Send notifications in Rails via Telegram

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 100.0%