chore: Switch to Markdown instead of MarkdownV2 for telegram channel (#8720)
This commit is contained in:
@@ -150,17 +150,12 @@ class Channel::Telegram < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def convert_markdown_to_telegram(text)
|
def convert_markdown_to_telegram(text)
|
||||||
|
## supported characters : https://core.telegram.org/bots/api#markdown-style
|
||||||
|
## To implement MarkdownV2, we will need to do a lot of escaping
|
||||||
|
|
||||||
# Convert bold - double asterisks to single asterisk in Telegram
|
# Convert bold - double asterisks to single asterisk in Telegram
|
||||||
|
# Chatwoot uses double asterisks for bold, while telegram used single asterisk
|
||||||
text.gsub!(/\*\*(.*?)\*\*/, '*\1*')
|
text.gsub!(/\*\*(.*?)\*\*/, '*\1*')
|
||||||
|
|
||||||
# Convert italics - single underscore (same in both CommonMark and Telegram)
|
|
||||||
# No conversion needed for italics as both use _text_
|
|
||||||
|
|
||||||
# Convert underline - not typically used in CommonMark, so we'll leave it as is
|
|
||||||
|
|
||||||
# Convert strikethrough - double tilde to single tilde in Telegram
|
|
||||||
text.gsub!(/~~(.*?)~~/, '~\1~')
|
|
||||||
|
|
||||||
text
|
text
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -171,7 +166,7 @@ class Channel::Telegram < ApplicationRecord
|
|||||||
chat_id: chat_id,
|
chat_id: chat_id,
|
||||||
text: text_to_md,
|
text: text_to_md,
|
||||||
reply_markup: reply_markup,
|
reply_markup: reply_markup,
|
||||||
parse_mode: 'MarkdownV2',
|
parse_mode: 'Markdown',
|
||||||
reply_to_message_id: reply_to_message_id
|
reply_to_message_id: reply_to_message_id
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ RSpec.describe Channel::Telegram do
|
|||||||
|
|
||||||
stub_request(:post, "https://api.telegram.org/bot#{telegram_channel.bot_token}/sendMessage")
|
stub_request(:post, "https://api.telegram.org/bot#{telegram_channel.bot_token}/sendMessage")
|
||||||
.with(
|
.with(
|
||||||
body: 'chat_id=123&text=test&reply_markup=&parse_mode=MarkdownV2&reply_to_message_id='
|
body: 'chat_id=123&text=test&reply_markup=&parse_mode=Markdown&reply_to_message_id='
|
||||||
)
|
)
|
||||||
.to_return(
|
.to_return(
|
||||||
status: 200,
|
status: 200,
|
||||||
@@ -22,12 +22,12 @@ RSpec.describe Channel::Telegram do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it 'send message with markdown converted to telegram markdown' do
|
it 'send message with markdown converted to telegram markdown' do
|
||||||
message = create(:message, message_type: :outgoing, content: '**test** ~~test~~ *test* ~test~',
|
message = create(:message, message_type: :outgoing, content: '**test** *test* ~test~',
|
||||||
conversation: create(:conversation, inbox: telegram_channel.inbox, additional_attributes: { 'chat_id' => '123' }))
|
conversation: create(:conversation, inbox: telegram_channel.inbox, additional_attributes: { 'chat_id' => '123' }))
|
||||||
|
|
||||||
stub_request(:post, "https://api.telegram.org/bot#{telegram_channel.bot_token}/sendMessage")
|
stub_request(:post, "https://api.telegram.org/bot#{telegram_channel.bot_token}/sendMessage")
|
||||||
.with(
|
.with(
|
||||||
body: "chat_id=123&text=#{ERB::Util.url_encode('*test* ~test~ *test* ~test~')}&reply_markup=&parse_mode=MarkdownV2&reply_to_message_id="
|
body: "chat_id=123&text=#{ERB::Util.url_encode('*test* *test* ~test~')}&reply_markup=&parse_mode=Markdown&reply_to_message_id="
|
||||||
)
|
)
|
||||||
.to_return(
|
.to_return(
|
||||||
status: 200,
|
status: 200,
|
||||||
@@ -49,7 +49,7 @@ RSpec.describe Channel::Telegram do
|
|||||||
.with(
|
.with(
|
||||||
body: 'chat_id=123&text=test' \
|
body: 'chat_id=123&text=test' \
|
||||||
'&reply_markup=%7B%22one_time_keyboard%22%3Atrue%2C%22inline_keyboard%22%3A%5B%5B%7B%22text%22%3A%22test%22%2C%22' \
|
'&reply_markup=%7B%22one_time_keyboard%22%3Atrue%2C%22inline_keyboard%22%3A%5B%5B%7B%22text%22%3A%22test%22%2C%22' \
|
||||||
'callback_data%22%3A%22test%22%7D%5D%5D%7D&parse_mode=MarkdownV2&reply_to_message_id='
|
'callback_data%22%3A%22test%22%7D%5D%5D%7D&parse_mode=Markdown&reply_to_message_id='
|
||||||
)
|
)
|
||||||
.to_return(
|
.to_return(
|
||||||
status: 200,
|
status: 200,
|
||||||
@@ -66,7 +66,7 @@ RSpec.describe Channel::Telegram do
|
|||||||
|
|
||||||
stub_request(:post, "https://api.telegram.org/bot#{telegram_channel.bot_token}/sendMessage")
|
stub_request(:post, "https://api.telegram.org/bot#{telegram_channel.bot_token}/sendMessage")
|
||||||
.with(
|
.with(
|
||||||
body: 'chat_id=123&text=test&reply_markup=&parse_mode=MarkdownV2&reply_to_message_id='
|
body: 'chat_id=123&text=test&reply_markup=&parse_mode=Markdown&reply_to_message_id='
|
||||||
)
|
)
|
||||||
.to_return(
|
.to_return(
|
||||||
status: 403,
|
status: 403,
|
||||||
|
|||||||
Reference in New Issue
Block a user