diff --git a/src/Symfony/Component/Notifier/Bridge/Telegram/CHANGELOG.md b/src/Symfony/Component/Notifier/Bridge/Telegram/CHANGELOG.md index 760d2bb44036..83ff40ef257b 100644 --- a/src/Symfony/Component/Notifier/Bridge/Telegram/CHANGELOG.md +++ b/src/Symfony/Component/Notifier/Bridge/Telegram/CHANGELOG.md @@ -1,6 +1,11 @@ CHANGELOG ========= +6.4 +--- + +* Add support for `sendLocation` API method + 6.3 --- diff --git a/src/Symfony/Component/Notifier/Bridge/Telegram/README.md b/src/Symfony/Component/Notifier/Bridge/Telegram/README.md index 333b536c454a..8e6b81904565 100644 --- a/src/Symfony/Component/Notifier/Bridge/Telegram/README.md +++ b/src/Symfony/Component/Notifier/Bridge/Telegram/README.md @@ -76,6 +76,32 @@ $chatMessage->options($telegramOptions); $chatter->send($chatMessage); ``` +Adding Location to a Message +---------------------------- + +With a Telegram message, you can use the `TelegramOptions` class to add +[message options](https://core.telegram.org/bots/api). + +```php +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') + ->location(48.8566, 2.3522); + +// Add the custom options to the chat message and send the message +$chatMessage->options($telegramOptions); + +$chatter->send($chatMessage); +``` + Updating Messages ----------------- diff --git a/src/Symfony/Component/Notifier/Bridge/Telegram/TelegramOptions.php b/src/Symfony/Component/Notifier/Bridge/Telegram/TelegramOptions.php index f794620de4a0..e40f4b2fd95e 100644 --- a/src/Symfony/Component/Notifier/Bridge/Telegram/TelegramOptions.php +++ b/src/Symfony/Component/Notifier/Bridge/Telegram/TelegramOptions.php @@ -156,4 +156,15 @@ public function answerCallbackQuery(string $callbackQueryId, bool $showAlert = f return $this; } + + /** + * @return $this + */ + public function location(float $latitude, float $longitude): static + { + $this->options['latitude'] = $latitude; + $this->options['longitude'] = $longitude; + + return $this; + } } diff --git a/src/Symfony/Component/Notifier/Bridge/Telegram/TelegramTransport.php b/src/Symfony/Component/Notifier/Bridge/Telegram/TelegramTransport.php index 9bb25bee5f58..bd21234a1b21 100644 --- a/src/Symfony/Component/Notifier/Bridge/Telegram/TelegramTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Telegram/TelegramTransport.php @@ -11,7 +11,6 @@ namespace Symfony\Component\Notifier\Bridge\Telegram; -use Symfony\Component\Notifier\Exception\LogicException; use Symfony\Component\Notifier\Exception\TransportException; use Symfony\Component\Notifier\Exception\UnsupportedMessageTypeException; use Symfony\Component\Notifier\Message\ChatMessage; @@ -116,6 +115,7 @@ private function getPath(array $options): string isset($options['message_id']) => 'editMessageText', isset($options['callback_query_id']) => 'answerCallbackQuery', isset($options['photo']) => 'sendPhoto', + (isset($options['longitude']) && isset($options['latitude'])) => 'sendLocation', default => 'sendMessage', }; } diff --git a/src/Symfony/Component/Notifier/Bridge/Telegram/Tests/TelegramTransportTest.php b/src/Symfony/Component/Notifier/Bridge/Telegram/Tests/TelegramTransportTest.php index 83251aa4f9c2..08ce8cc07d6f 100644 --- a/src/Symfony/Component/Notifier/Bridge/Telegram/Tests/TelegramTransportTest.php +++ b/src/Symfony/Component/Notifier/Bridge/Telegram/Tests/TelegramTransportTest.php @@ -411,4 +411,70 @@ public function testSendPhotoWithOptions() $this->assertEquals(1, $sentMessage->getMessageId()); $this->assertEquals('telegram://api.telegram.org?channel=testChannel', $sentMessage->getTransport()); } + + public function testSendLocationWithOptions() + { + $response = $this->createMock(ResponseInterface::class); + $response->expects($this->exactly(2)) + ->method('getStatusCode') + ->willReturn(200); + + $content = <<expects($this->once()) + ->method('getContent') + ->willReturn($content) + ; + + $expectedBody = [ + 'latitude' => 48.8566, + 'longitude' => 2.3522, + 'chat_id' => 'testChannel', + 'parse_mode' => 'MarkdownV2', + ]; + + $client = new MockHttpClient(function (string $method, string $url, array $options = []) use ($response, $expectedBody): ResponseInterface { + $this->assertStringEndsWith('/sendLocation', $url); + $this->assertSame($expectedBody, json_decode($options['body'], true)); + + return $response; + }); + + $transport = self::createTransport($client, 'testChannel'); + + $messageOptions = new TelegramOptions(); + $messageOptions + ->location(48.8566, 2.3522) + ; + + $sentMessage = $transport->send(new ChatMessage('', $messageOptions)); + + $this->assertEquals(1, $sentMessage->getMessageId()); + $this->assertEquals('telegram://api.telegram.org?channel=testChannel', $sentMessage->getTransport()); + } } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy