I suspect you’re encountering behavior that is working as intended.
Normally, when Asterisk plays back a file, it scans the file system for all files with the provided sound file name. For each file that it finds with a given file extension, it picks the best media file (where best is given by transcoding cost) that matches the channel capabilities. That works great when you have a file system that can be scanned quickly.
You can probably guess why that approach isn’t used with a remote HTTP server: making a lot of HEAD/GET requests to ‘scan’ the remote server for available file types is not a good idea for a multitude of reasons.
As such, the remote playback determines the type of file it is playing back from the extension of the resource it downloads from the remote server. If the remote resource doesn’t have an extension, then Asterisk is going to complain that it does not know what type of media it just downloaded.
That is: if your remote resource was named “sounds/prompts/nine.wav” you’d probably be okay.
Now, it would be nice if there was a way for Asterisk to be told to expect the remote resource to be in a particular file format, but to my knowledge, that feature hasn’t been added.
(As an aside, I use this functionality through AGI, so I know it isn’t “completely broken”.)