There can be some multiple device confusion if you or your friend have a MacBook sitting at home that has iMessage activated and signed-in while you are outdoors using the iPhone. If your iPhone is not using Wi-Fi (while the MacBook is simultaneously using WiFi) then iMessages won't need to revert to SMS because it sees your account is using WiFi somewhere and thus messages can end up being received at the laptop at home and not your iPhone.
That happened to me. I found the missing iMessages from my friend at home on the MacBook which was turned on/ signed-in to Messages app and near WiFi. iMessages were marked as delivered on my friends iPhone even though the messages never came to my waiting iPhone which was outdoors and not near WiFi. iMessages are apparently marked "delivered" if messages makes it through to ANY device that you have activated with your email address. iMessage certainly won't check to see if ALL your devices received the messages before marking them delivered.
So, I signed-out of iMessage on the MacBook, (but kept the account activated). This is just another potential piece of the puzzle of confusion which can develop and may not solve all iMessage problems.
Another issue is that Apple seems to automatically add a few email addresses such was joe.mac and .me addresses to your iMessage account when you're activating. If you don't remove those and they are not in your friend's contact information for you then iMessages appear to come from an unknown email addresses.