feat: Add liquid processing for SMS campaigns (#10981)
Liquid template processing for SMS campaigns fixes: https://github.com/chatwoot/chatwoot/issues/10980 Co-authored-by: Sojan Jose <sojan@pepalo.com>
This commit is contained in:
26
app/services/liquid/campaign_template_service.rb
Normal file
26
app/services/liquid/campaign_template_service.rb
Normal file
@@ -0,0 +1,26 @@
|
||||
class Liquid::CampaignTemplateService
|
||||
pattr_initialize [:campaign!, :contact!]
|
||||
|
||||
def call(message)
|
||||
process_liquid_in_content(message_drops, message)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def message_drops
|
||||
{
|
||||
'contact' => ContactDrop.new(contact),
|
||||
'agent' => UserDrop.new(campaign.sender),
|
||||
'inbox' => InboxDrop.new(campaign.inbox),
|
||||
'account' => AccountDrop.new(campaign.account)
|
||||
}
|
||||
end
|
||||
|
||||
def process_liquid_in_content(drops, message)
|
||||
message = message.gsub(/`(.*?)`/m, '{% raw %}`\\1`{% endraw %}')
|
||||
template = Liquid::Template.parse(message)
|
||||
template.render(drops)
|
||||
rescue Liquid::Error
|
||||
message
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user