Currently Channel_Text_Send_Error_Unknown is always used, with the text parameter containing the error message from libpurple. The correct Send_Error should be emitted, and the text parameter should be the text of the message that was not delivered.
In <http://git.collabora.co.uk/?p=user/wjt/telepathy-haze;a=shortlog;h=refs/heads/send-error> (which I hope will be merged for 0.3.0) the error message from libpurple is placed into the delivery report's "delivery-error-message" header, and as the delivery report's body (which is supposed to be human-readable localized errors from the server, so this is not too far away from the spec). A side-effect is that SendError will now have an empty string as the text parameter. Protocols don't in general tell you which message failed; even for those that do, libpurple doesn't expose that information in any meaningful way.
Fixed as best we can for now in 0.3.0.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.