Create a new flow and add the "Order Created" trigger (You can also edit an existing flow which is triggered by the same trigger)
Add a condition block and using the trigger variable "Cart Product Names" filter out the products that don't need an image and products that need an image to be uploaded.
To the products that don't need an image, just send them the COD confirmation or normal confirmation message.
To the products that need an image, you send them towards another condition block
In this condition block, we'll check if the variable "Order Product Properties" exists or not. If it exists, that means the order already has the photo, and we can send the COD confirmation or normal confirmation message.
If it doesn't exist, that means we need to collect the photo, so first we send a template message with a quick reply button (because you can't send normal messages outside 24-hour window) and we ask them to click a button to open the 24-hour window.
After they click the button we ask them to upload the image for the product they ordered.
After they upload the image, the url of the image gets saved as a workflow variable, and we'll add this workflow variable to the Shopify Order Note, also add a tag "Photo Added Manually" to the order and finally create a ticket so that your team can look into such orders.
This is how the Order Note will look on Shopify after the execution -