[asterisk-bugs] [JIRA] (ASTERISK-29793) adsi: CAS is malformed

N A (JIRA) noreply at issues.asterisk.org
Mon Dec 6 13:34:34 CST 2021


     [ https://issues.asterisk.org/jira/browse/ASTERISK-29793?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

N A updated ASTERISK-29793:
---------------------------

    Attachment: native.png
                log.txt
                dialplan.png
                audacity.png

4 attachments:

Audacity plot:
Not shown is the first DTMF ACK from the CPE, for some reason. It's there, and it's in the CLI trace as DTMF debug, but for some reason it doesn't show up in the recording. Probably because it's RFC4833 and not in-band, but not sure why the second one DOES show up in that case...

Plot spectrums of native Asterisk (which fails) and PlayTones (which succeeds)

log.txt: dialplan output. Basically:

1. manually use PlayTones.
2. Successfully ACK from the CPE.
3. manually use PlayTones IMMEDIATELY followed by invoking GetCPEID()
4. Successful ACK from CPE.
5. GetCPEID() proceeds to the next data message and sends another CAS to the CPE.
6. No response from the CPE, because the CAS isn't quite right. As such, there is no response from the CPE.
7. GetCPEID() exits.

This is reproducible in any order. PlayTones by itself will work, and PlayTones followed by GetCPEID will make the first CAS work. GetCPEID on its own does not work.


> adsi: CAS is malformed
> ----------------------
>
>                 Key: ASTERISK-29793
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-29793
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Resources/res_adsi
>    Affects Versions: 18.8.0
>         Environment: PJSIP + Confbridge
>            Reporter: N A
>            Severity: Major
>         Attachments: audacity.png, dialplan.png, log.txt, native.png
>
>
> The CAS that res_adsi is generating seems to be malformed or non-compliant in some way. When I manually use PlayTones to produce a CAS in the dialplan, my CPE correctly responds to it with the DTMF "A" ACK. However, when using the native CAS in __adsi_transmit_messages, it does not work and my CPE does not recognize the CAS. As a result, GetCPEID() exits.
> I can trick GetCPEID() by generating my own CAS before calling GetCPEID(), which makes the first CAS and response work, but subsequent CAS's generated by the application internally cannot be "propped up" in this manner.
> As such, GetCPEID() will always fail and exit.
> I have analyzed a few properties of the waveform and have concluded that the issue does not seem related to duration. A CAS of 80ms and 110ms both seem to work fine. The CAS generated by Asterisk seems to be about 100ms. The audio captured using MixMonitor doesn't seem to reflect volume adjustments, but the CAS generated by Asterisk is noticeably quieter than ones generated manually. 
> FWIW, I cannot get the CAS to be recognized at all unless the endpoint is joined to it in a ConfBridge. I have dtmf_passthrough = yes, silence drop set to no, to maximize audio quality.
> When analyzing the recordings using the Plot Spectrum feature in Audacity, the CAS generated by Asterisk internally seems a lot noisier than the purer CAS generated by PlayTones in the dialplan. Perhaps this is causing the CPE to not recognize it.



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list