Quantcast
Channel: Developer Group
Viewing all articles
Browse latest Browse all 1888

Forum Post: 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 1888

Trending Articles