I have a very old unused account with DryVoip** from back when they first launched. Recently I became aware that DryVoip (annoyingly!) doesn’t include the DID in a conventional format in the INVITE, so I did a quick and dirty test to see what you need to make inbound routes work.
[from-pstn-dryvoip]
exten => _.,1,NoOp(Attempting to extract DID from PJSIP X-DryVoIP-DNID header)
exten => _.,n,Goto(from-pstn,${PJSIP_HEADER(read,X-DryVoIP-DNID)},1)
; ---- end from-pstn-dryvoip
Create a pjsip trunk in the usual way and set the context to from-pstn-dryvoip
** Notwithstanding the existence of this account, I really don’t use this provider and can make no recommendations either for or against.