Dialer returns some records with QSAMP=306 status code which sends records to qdead
When analyzing the call.log files for a few weeks, out of the 125360 calls, 229 calls (0.18%) received status=306:
-19 calls (0.015%) with hangup=isdn, cause=28 "Invalid or incomplete number", dial=300-1300 ms (average dial=453 ms). Each record was dialed once only, so it is not possible to tell whether these phone numbers were good or bad. And even if the numbers are good today, we cannot tell whether the database "dip" for some reason failed on these days (e.g., number portability; maybe the numbers were in-transit from one provider to another).
-1 call (0.0008%) with hangup=local, cause=16 "Normal call clearing", dial=30.0 seconds, no ring. Probably a race condition; normally calls cleared by the dialer (hangup=local) should not have a cause value. This call was cleared by dialer and network simultaneously.
-209 calls (0.17%) with hangup=local, no cause, dial=30.0 seconds, no ring. These are calls that were dialed but never resulted in an answer from the network, neither a cause value (in a PROGRESS or DISCONNECT message) nor ALERTING nor CONNECT. mrDialer clears such calls after 30 seconds, this is configurable in "dialer.ini":
Some records that were returned with QSAMP status=306, and therefore sent to qdead, were manually dialled and showed that they were ringing as expected
This seems to be a Provider issue. The dialer sent SETUP correctly, but the network never responded.
This behaviour is symptomatic for a VoIP-provider. Presumably the ISDN lines from mrDialer are connected to an ISDN-to-VoIP gateway.
Resolving the problem
If this really is a VoIP-provider, you might be able to suppress those status=306 (QSAMP_INCOMPLETE) by increasing DialWaitIntv to 40 seconds:
-Remove the semicolon in front of DialWaitIntv, change the value to 40000 (=40 seconds) and save the file.
If the line starting with "0c18" contains the disposition "normal", change it to "congested" and save the file.
-Run the "setup" program.
In the Main Menu, select Save/generate (with default options).
In the Main Menu, select Quit (with default options to restart services).
If the provider uses an RFC 3398-compliant ISDN-to-SIP gateway, the new behaviour should be like this:
-The dialer no longer terminates the call prematurely after DialWaitIntv = 30 seconds.
-Consequently the SIP INVITE method times out after 32 seconds (RFC 3261 timer B).
-Therefore the ISDN-to-VoIP gateway sends RELEASE with cause=18 "No user responding" (RFC 3398 section 8.1.3).
-The dialer maps cause=18 to status=357 QSAMP_CONGESTED ("causes.cfg", entry "0c18").
-The dialer interface maps status=357 to tipcode=201 AT_BUSYNUMBER (unless overridden in "qts-sms.ini" section "[qsamp map]").
-SMS re-maps this to tipcode=201 d_busy "Dialer - number busy" (function dialermap() in "dialer.alg").
Getting tipcode=201 d_busy "Dialer - number busy" is better than tipcode=208 d_incomp "Dialer - incomplete number"; the number will be dialed again.