[Freeswitch-dev] Getting DTMF from channel.

Anthony Minessale anthony.minessale at gmail.com
Fri Oct 22 14:47:59 PDT 2010


Ok let's work on that.
email consulting at freeswitch.org and ask for GIT commit to a dir for
that module and we can get you a dir.

Once its building on latest GIT, we can dig into it and get DTMF working.



2010/10/22 Paulo Rogério Panhoto <paulo at voicetechnology.com.br>:
>    I really want to post it as contribution but I don't know how the
> process works. So, in the meantine, it is already published on github
>
> git://github.com/ppanhoto/Freeswitch-mod_mp4.git
>
>    Regards,
>
>    Paulo.
>
> On 22/10/10 18:38, Anthony Minessale wrote:
>> maybe if you post the module for contribution we can add it to FS and
>> figure it out by looking in the code to make it do what you want.
>>
>>
>> 2010/10/22 Paulo Rogério Panhoto <paulo at voicetechnology.com.br>:
>>
>>>    Hi,
>>>
>>>    I'm writing a module that allows playback of MP4 video files (with
>>> libmp4v2). The playback itself is made by two functions ready to run on
>>> separate threads (though, audio runs on current thread and video runs on
>>> a separate one). At this point, I'm trying to implement dtmf cut-through.
>>>
>>>    After some research (I checked out mod_dptools.c and
>>> switch_ivr_play_say.c) and this code was my best guess -- it runs on the
>>> audio stream:
>>>
>>>        if(switch_channel_test_flag(pt->channel, CF_BREAK))
>>>        {
>>>            switch_channel_clear_flag(pt->channel, CF_BREAK);
>>>            break;
>>>        }
>>>
>>>        switch_ivr_parse_all_events(pt->session);
>>>
>>>        if(switch_channel_has_dtmf(pt->channel))
>>>        {
>>>            switch_channel_dequeue_dtmf(pt->channel, &dtmf);
>>>            const char * terminators =
>>> switch_channel_get_variable(pt->channel,
>>> SWITCH_PLAYBACK_TERMINATORS_VARIABLE);
>>>            if(terminators && !strcasecmp(terminators, "none"))
>>> terminators = NULL;
>>>            switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(pt->session),
>>> SWITCH_LOG_DEBUG, "Digit %c\n", dtmf.digit);
>>>            if(terminators && strchr(terminators, dtmf.digit))
>>>            {
>>>                std::string digit(&dtmf.digit, 0, 1);
>>>                switch_channel_set_variable(pt->channel,
>>> SWITCH_PLAYBACK_TERMINATOR_USED, digit.c_str());
>>>                break;
>>>            }
>>>        }
>>>
>>>    Which didn't work. I'm asking if anyone has any idea.
>>>
>>>    Any help is appreciated
>>>
>>>    Regards,
>>>
>>>    Paulo R. Panhoto
>>>
>>>
>>> _______________________________________________
>>> FreeSWITCH-dev mailing list
>>> FreeSWITCH-dev at lists.freeswitch.org
>>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
>>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev
>>> http://www.freeswitch.org
>>>
>>>
>>
>>
>>
>
>
> _______________________________________________
> FreeSWITCH-dev mailing list
> FreeSWITCH-dev at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev
> http://www.freeswitch.org
>



-- 
Anthony Minessale II

FreeSWITCH http://www.freeswitch.org/
ClueCon http://www.cluecon.com/
Twitter: http://twitter.com/FreeSWITCH_wire

AIM: anthm
MSN:anthony_minessale at hotmail.com
GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com
IRC: irc.freenode.net #freeswitch

FreeSWITCH Developer Conference
sip:888 at conference.freeswitch.org
googletalk:conf+888 at conference.freeswitch.org
pstn:+19193869900



More information about the FreeSWITCH-dev mailing list