feat: Add support for shared post and story attachment types in Instagram messages (#12997)

When users share Instagram posts or stories via DM, Instagram sends
webhooks with type `ig_post` and `ig_story` attachments. The system was
failing on these types because they weren't defined in the file_types.
This PR fixes the issue by handling all shared types and rendering them
on the front end.

**Shared post**

<img width="2154" height="1828" alt="CleanShot 2025-12-03 at 16 29
14@2x"
src="https://github.com/user-attachments/assets/7e731171-4904-43a6-abeb-b1db2c262742"
/>

**Shared status**
<img width="1702" height="1676" alt="CleanShot 2025-12-03 at 16 10
25@2x"
src="https://github.com/user-attachments/assets/6a151233-ce47-429d-b7c2-061514b20e05"
/>


Fixes
https://linear.app/chatwoot/issue/CW-5441/argumenterror-ig-story-is-not-a-valid-file-type-argumenterror
This commit is contained in:
Muhsin Keloth
2025-12-04 05:20:47 +05:30
committed by GitHub
parent e6a7e836a0
commit 5c3b85334b
7 changed files with 201 additions and 6 deletions

View File

@@ -348,6 +348,85 @@ FactoryBot.define do
initialize_with { attributes }
end
factory :instagram_ig_story_event, class: Hash do
transient do
ig_entry_id { SecureRandom.uuid }
sender_id { "Sender-id-#{SecureRandom.hex(4)}" }
end
entry do
[
{
'id': ig_entry_id,
'time': '2021-09-08T06:34:04+0000',
'messaging': [
{
'sender': {
'id': sender_id
},
'recipient': {
'id': 'chatwoot-app-user-id-1'
},
'timestamp': '2021-09-08T06:34:04+0000',
'message': {
'mid': 'ig-story-message-id-1',
'attachments': [
{
'type': 'ig_story',
'payload': {
'story_media_id': '17949487764033669',
'story_media_url': 'https://lookaside.fbsbx.com/ig_messaging_cdn/?asset_id=17949487764033669&signature=test'
}
}
]
}
}
]
}
]
end
initialize_with { attributes }
end
factory :instagram_ig_post_event, class: Hash do
transient do
ig_entry_id { SecureRandom.uuid }
sender_id { "Sender-id-#{SecureRandom.hex(4)}" }
end
entry do
[
{
'id': ig_entry_id,
'time': '2021-09-08T06:34:04+0000',
'messaging': [
{
'sender': {
'id': sender_id
},
'recipient': {
'id': 'chatwoot-app-user-id-1'
},
'timestamp': '2021-09-08T06:34:04+0000',
'message': {
'mid': 'ig-post-message-id-1',
'attachments': [
{
'type': 'ig_post',
'payload': {
'ig_post_media_id': '18091626484740369',
'title': 'Shared Instagram post',
'url': 'https://lookaside.fbsbx.com/ig_messaging_cdn/?asset_id=18091626484740369&signature=test'
}
}
]
}
}
]
}
]
end
initialize_with { attributes }
end
factory :instagram_message_unsupported_event, class: Hash do
transient do
ig_entry_id { SecureRandom.uuid }