Quantcast
Channel: Dialogic PowerMedia HMP GlobalCall and R4 API - Recent Threads
Viewing all articles
Browse latest Browse all 1151

Not receiving GCEV_EXTENSIO events for incoming DTMF (HMP)

$
0
0

Hello everyone,

for the last days I am trying to receive extension events for incoming DTMF using SIP. I have read the global call for IP documentation, specifically section 4.16.

My code is roughly based on the SIP sample code from the forum here. When I receive the line device reset event, I do the following:

 // set DTMF support
GC_PARM_BLKP parmblkp = nullptr;

gc_util_insert_parm_val(&parmblkp, IPSET_DTMF, IPPARM_SUPPORT_DTMF_BITMASK, sizeof(char), IP_DTMF_TYPE_INBAND_RTP | IP_DTMF_TYPE_RFC_2833);
gc_util_insert_parm_val(&parmblkp, IPSET_CALLINFO, IPPARM_CONNECTIONMETHOD, sizeof(char), IP_CONNECTIONMETHOD_FASTSTART);

if(gc_SetUserInfo(GCTGT_GCLIB_CHAN, pLine->hDevice, parmblkp, GC_ALLCALLS) != GC_SUCCESS)
{
    LogGCError(...);
    return;
}
gc_util_delete_parm_blk(parmblkp);

// wait for incoming call on line device
if(gc_WaitCall(pLine->hDevice, NULL, 0, -1, EV_ASYNC) != GC_SUCCESS)
{
    LogGCError(static_cast<CHMPBase *>(pLine), _T("Wait for call"));
    return;
}


When the IP board becomes unblocked after opening it, I try to enable events for DTMF. The dcoumenation is a bit shady here, but I found some code here on the forum, which lead me to this:

    GC_PARM_BLK *pParm = NULL;
    long lMask = EXTENSIONEVT_DTMF_USERINPUT_SIGNAL | EXTENSIONEVT_DTMF_RFC2833 | EXTENSIONEVT_DTMF_ALPHANUMERIC;
    long lReqId = 0;

    gc_util_insert_parm_ref(&pParm, IPSET_EXTENSIONEVT_MSK, GCACT_ADDMSK, sizeof(long), (void *)&lMask);
    if(gc_SetConfigData(GCTGT_CCLIB_NETIF, pBoard->hDevice, pParm, 3, GCUPDATE_IMMEDIATE, &lReqId, EV_ASYNC) == -1)
        LogGCError(static_cast<CHMPBase *>(pBoard), _T("Set Config Data"));
    gc_util_delete_parm_blk(pParm);

Apparently EXTENSIONEVT_DTMF_ALPHANUMERIC is not supported by SIP, I tried basically all combinations of the three DTMF related bitmasks I found here and in the documentation.

I can take calls and play wave files to the user, but whatever I do, I do not receive GCEV_EXTENSION events when DTMF tones are sent to me. I do receive a GCEV_CALLINFO for the very first DTMF tone coming in, but no more events after that.

I also tried a different approach using dx_getdig(), but that doesn't allow me to listen for DTMF while I am playing a file to the caller ("Device is busy").

What am I doing wrong?


Viewing all articles
Browse latest Browse all 1151

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>