src/Symfony/Component/Notifier/Bridge/Telegram/README.md
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 idWith 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: WARNING In one message you can send only one file
Telegram supports 3 ways for passing files:
$telegramOptions = (new TelegramOptions())
->photo('https://localhost/photo.mp4');
$telegramOptions = (new TelegramOptions())
->video('https://localhost/video.mp4');
$telegramOptions = (new TelegramOptions())
->animation('https://localhost/animation.gif');
$telegramOptions = (new TelegramOptions())
->audio('https://localhost/audio.ogg');
$telegramOptions = (new TelegramOptions())
->document('https://localhost/document.odt');
$telegramOptions = (new TelegramOptions())
->sticker('https://localhost/sticker.webp', '🤖');
$telegramOptions = (new TelegramOptions())
->uploadPhoto('files/photo.png');
$telegramOptions = (new TelegramOptions())
->uploadVideo('files/video.mp4');
$telegramOptions = (new TelegramOptions())
->uploadAnimation('files/animation.gif');
$telegramOptions = (new TelegramOptions())
->uploadAudio('files/audio.ogg');
$telegramOptions = (new TelegramOptions())
->uploadDocument('files/document.odt');
$telegramOptions = (new TelegramOptions())
->uploadSticker('files/sticker.webp', '🤖');
$telegramOptions = (new TelegramOptions())
->photo('ABCDEF');
$telegramOptions = (new TelegramOptions())
->video('ABCDEF');
$telegramOptions = (new TelegramOptions())
->animation('ABCDEF');
$telegramOptions = (new TelegramOptions())
->audio('ABCDEF');
$telegramOptions = (new TelegramOptions())
->document('ABCDEF');
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,
);