Provides Telegram integration for Symfony Notifier.
TELEGRAM_DSN=telegram://TOKEN@default?channel=CHAT_ID
where:
TOKEN
is your Telegram tokenCHAT_ID
is your Telegram chat id
With a Telegram message, you can use the TelegramOptions
class to add
message options.
use Symfony\Component\Notifier\Bridge\Telegram\Reply\Markup\Button\InlineKeyboardButton;
use Symfony\Component\Notifier\Bridge\Telegram\Reply\Markup\InlineKeyboardMarkup;
use Symfony\Component\Notifier\Bridge\Telegram\TelegramOptions;
use Symfony\Component\Notifier\Message\ChatMessage;
$chatMessage = new ChatMessage('');
// Create Telegram options
$telegramOptions = (new TelegramOptions())
->chatId('@symfonynotifierdev')
->parseMode('MarkdownV2')
->disableWebPagePreview(true)
->disableNotification(true)
->replyMarkup((new InlineKeyboardMarkup())
->inlineKeyboard([
(new InlineKeyboardButton('Visit symfony.com'))
->url('https://symfony.com/'),
])
);
// Add the custom options to the chat message and send the message
$chatMessage->options($telegramOptions);
$chatter->send($chatMessage);
With a Telegram message, you can use the TelegramOptions
class to add
message options.
⚠️ WARNING In one message you can send only one file
Telegram supports 3 ways for passing files:
- You can send files by passing public http url to option:
- Photo
$telegramOptions = (new TelegramOptions()) ->photo('https://localhost/photo.mp4');
- Video
$telegramOptions = (new TelegramOptions()) ->video('https://localhost/video.mp4');
- Animation
$telegramOptions = (new TelegramOptions()) ->animation('https://localhost/animation.gif');
- Audio
$telegramOptions = (new TelegramOptions()) ->audio('https://localhost/audio.ogg');
- Document
$telegramOptions = (new TelegramOptions()) ->document('https://localhost/document.odt');
- Sticker
$telegramOptions = (new TelegramOptions()) ->sticker('https://localhost/sticker.webp', '🤖');
- Photo
- You can send files by passing local path to option, in this case file will be sent via multipart/form-data:
- Photo
$telegramOptions = (new TelegramOptions()) ->uploadPhoto('files/photo.png');
- Video
$telegramOptions = (new TelegramOptions()) ->uploadVideo('files/video.mp4');
- Animation
$telegramOptions = (new TelegramOptions()) ->uploadAnimation('files/animation.gif');
- Audio
$telegramOptions = (new TelegramOptions()) ->uploadAudio('files/audio.ogg');
- Document
$telegramOptions = (new TelegramOptions()) ->uploadDocument('files/document.odt');
- Sticker
$telegramOptions = (new TelegramOptions()) ->uploadSticker('files/sticker.webp', '🤖');
- Photo
- You can send files by passing file_id to option:
- Photo
$telegramOptions = (new TelegramOptions()) ->photo('ABCDEF');
- Video
$telegramOptions = (new TelegramOptions()) ->video('ABCDEF');
- Animation
$telegramOptions = (new TelegramOptions()) ->animation('ABCDEF');
- Audio
$telegramOptions = (new TelegramOptions()) ->audio('ABCDEF');
- Document
$telegramOptions = (new TelegramOptions()) ->document('ABCDEF');
- Sticker - Can't be sent using file_id
- Photo
Full example:
use Symfony\Component\Notifier\Bridge\Telegram\TelegramOptions;
use Symfony\Component\Notifier\Message\ChatMessage;
$chatMessage = new ChatMessage('Photo Caption');
// Create Telegram options
$telegramOptions = (new TelegramOptions())
->chatId('@symfonynotifierdev')
->parseMode('MarkdownV2')
->disableWebPagePreview(true)
->hasSpoiler(true)
->protectContent(true)
->photo('https://symfony.com/favicons/android-chrome-192x192.png');
// Add the custom options to the chat message and send the message
$chatMessage->options($telegramOptions);
$chatter->send($chatMessage);
With a Telegram message, you can use the TelegramOptions
class to add
message options.
use Symfony\Component\Notifier\Bridge\Telegram\TelegramOptions;
use Symfony\Component\Notifier\Message\ChatMessage;
$chatMessage = new ChatMessage('');
// Create Telegram options
$telegramOptions = (new TelegramOptions())
->chatId('@symfonynotifierdev')
->parseMode('MarkdownV2')
->location(48.8566, 2.3522);
// Add the custom options to the chat message and send the message
$chatMessage->options($telegramOptions);
$chatter->send($chatMessage);
With a Telegram message, you can use the TelegramOptions
class to add
message options.
use Symfony\Component\Notifier\Bridge\Telegram\TelegramOptions;
use Symfony\Component\Notifier\Message\ChatMessage;
$chatMessage = new ChatMessage('');
// Create Telegram options
$telegramOptions = (new TelegramOptions())
->chatId('@symfonynotifierdev')
->parseMode('MarkdownV2')
->venue(48.8566, 2.3522, 'Center of Paris', 'France, Paris');
// Add the custom options to the chat message and send the message
$chatMessage->options($telegramOptions);
$chatter->send($chatMessage);
With a Telegram message, you can use the TelegramOptions
class to add
message options.
use Symfony\Component\Notifier\Bridge\Telegram\TelegramOptions;
use Symfony\Component\Notifier\Message\ChatMessage;
$chatMessage = new ChatMessage('');
$vCard = 'BEGIN:VCARD
VERSION:3.0
N:Doe;John;;;
FN:John Doe
EMAIL;type=INTERNET;type=WORK;type=pref:[email protected]
TEL;type=WORK;type=pref:+330186657200
END:VCARD';
// Create Telegram options
$telegramOptions = (new TelegramOptions())
->chatId('@symfonynotifierdev')
->parseMode('MarkdownV2')
->contact('+330186657200', 'John', 'Doe', $vCard);
// Add the custom options to the chat message and send the message
$chatMessage->options($telegramOptions);
$chatter->send($chatMessage);
The TelegramOptions::edit()
method was introduced in Symfony 6.2.
When working with interactive callback buttons, you can use the TelegramOptions
to reference a previous message to edit.
use Symfony\Component\Notifier\Bridge\Telegram\Reply\Markup\Button\InlineKeyboardButton;
use Symfony\Component\Notifier\Bridge\Telegram\Reply\Markup\InlineKeyboardMarkup;
use Symfony\Component\Notifier\Bridge\Telegram\TelegramOptions;
use Symfony\Component\Notifier\Message\ChatMessage;
$chatMessage = new ChatMessage('Are you really sure?');
$telegramOptions = (new TelegramOptions())
->chatId($chatId)
->edit($messageId) // extracted from callback payload or SentMessage
->replyMarkup((new InlineKeyboardMarkup())
->inlineKeyboard([
(new InlineKeyboardButton('Absolutely'))->callbackData('yes'),
])
);
The TelegramOptions::answerCallbackQuery()
method was introduced in Symfony 6.3.
When sending message with inline keyboard buttons with callback data, you can use
TelegramOptions
to answer callback queries.
use Symfony\Component\Notifier\Bridge\Telegram\TelegramOptions;
use Symfony\Component\Notifier\Message\ChatMessage;
$chatMessage = new ChatMessage('Thank you!');
$telegramOptions = (new TelegramOptions())
->chatId($chatId)
->answerCallbackQuery(
callbackQueryId: '12345', // extracted from callback
showAlert: true,
cacheTime: 1,
);