Hi Rashed,
just a quick footnote to your query thread, in case it might be helpful.
To clarify,
- is this a new setup, which you are building out from scratch / or an old setup where things worked and you are trying to make config changes ?
- did you refer to any 3cx setup hints about how to configure Grandstream FXS devices? For example >
https://www.3cx.com/voip-gateways/grandstream-ht-fxs/
- is your 3cx local instance, the handytone is in same lan? or do you have cloud-offsite 3cx? if so are you using an SBC to facilitate the FXS<>3cx communication?
and
You mention in your initial question, "We are still limited to use PSTN Lines" but - It might be this is a limitation you have conceptually more than 'strictly speaking 3cx operationally possible'
for example, if you wanted to move forward debug of the outbound calls,
- get a SIP Trunk DID in your callerID-DID-region from a 3cx-supported SIP trunk vendor. You can purchase such a SIP trunk for a very modest monthly cost.
- link the SIP trunk to your 3cx instance, then configure a basic call flow for this sip trunk (ie, inbound call to DID on this trunk routes to IVR / or a specific handset-phone-EXT in the 3cx system).
- validate that test calls inbound work as expected.
- then do a test outbound call flow test; configure temporary outbound flow to route your outbound calls via this SIP Trunk
- make sure they go OK.
- note that there is the scenario possible, depending on your SIP trunk provider and how they enforce or validate CID - you can optionally use a setup where the inbound and outbound calls in 3cx are *not* routed via same actual service provider.
ie, if you have actual DID bound to a copper landline service, and this routes inbound calls via Carrier -> Copper Line -> Grandstream > 3cx.
You can config your outbound calls to flow via 3cx > SIP trunk > Connect to outside world
and if your SIP trunk carrier is configured to accept (outbound call DID not match actual DID I have provisioned on this carrier, but rather "my landline DID CID") - then the calls you place outbound to world will still have proper CID / callers won't know you are not really calling from the 'correct' analog landline phone service carrier.
Note typically to make this config work, the SIP trunk provider will have normally some method to validate that you are legit / entitled to do this kind of CID_Masquerade, ie, when you make setup on their service you will need to be able to answer an inbound test call to REAL_DID and 'punch in the challenge MFA Code provided by your SIP carrier" to validate "yes, that is me, I control both the legacy DID phone# as well as the new sip trunk service, and I want to use one to impersonate the other, and this is legit, not a scammer trying to impersonate phone number of someone else in a non-valid manner".
different sip trunk carriers will do this in different methods (more or less, if they support it at all)
as a simple illustrative reference because I know this works - with "Voip MS" Sip trunk carrier, they have docs here >
https://wiki.voip.ms/article/Caller_ID -> which give hints on "how to setup a verified-CID-number / if you wish to use that CID on outbound calls and this DID# is not a number hosted with the VoipMS-Service you are using". (This is just one illustrative example to provide context.)
hope this is possibly helpful
good luck with the debug work
Tim