[Freeswitch-users] zapata.conf immediate=yes in Asterisk - Freeswitch equivalent - a solution of sorts.
Anthony Minessale
anthony.minessale at gmail.com
Thu Jan 15 14:31:56 PST 2009
open a jira and attach a svn diff and we'll have a look
thanks
On Thu, Jan 15, 2009 at 5:14 AM, Scott Ellis <scott.ellis at novatex.com.au>wrote:
> So I decided to hack the code to see if I could just get it to do what I
> wanted - assuming some kind of error in the options setting.
>
> First I changed the state change code to just skip straight to IDLE
>
> if (!event->channel->ring_count && (event->channel->state ==
> ZAP_CHANNEL_STATE_DOWN && !zap_test_flag(event->channel,
> ZAP_CHANNEL_INTHREAD))) {
> // if (zap_test_flag(analog_data,
> ZAP_ANALOG_CALLERID)) {
> // zap_set_state_locked(event->channel,
> ZAP_CHANNEL_STATE_GET_CALLERID);
> // } else {
> zap_set_state_locked(event->channel,
> ZAP_CHANNEL_STATE_IDLE);
> // }
> event->channel->ring_count = 1;
> zap_mutex_unlock(event->channel->mutex);
> locked = 0;
>
> zap_thread_create_detached(zap_analog_channel_run, event->channel);
> } else {
> event->channel->ring_count++;
> }
>
> So we skip the GET_CALLERID state altogether.
>
> This generated an illegal state change message cannot go from DOWN to IDLE
>
> So then changed the code to
>
> if (!event->channel->ring_count && (event->channel->state ==
> ZAP_CHANNEL_STATE_DOWN && !zap_test_flag(event->channel,
> ZAP_CHANNEL_INTHREAD))) {
> // if (zap_test_flag(analog_data,
> ZAP_ANALOG_CALLERID)) {
> zap_set_state_locked(event->channel,
> ZAP_CHANNEL_STATE_GET_CALLERID);
> // } else {
> zap_set_state_locked(event->channel,
> ZAP_CHANNEL_STATE_IDLE);
> // }
> event->channel->ring_count = 1;
> zap_mutex_unlock(event->channel->mutex);
> locked = 0;
>
> zap_thread_create_detached(zap_analog_channel_run, event->channel);
> } else {
> event->channel->ring_count++;
> }
>
> Allowing the state change to GET_CALLERID, then immediately to IDLE.
>
> This works perfectly - the call is answered straight away. At the moment
> I don't know enough about linux debugging to step through the parameter
> code to see why setting get caller ID to false in openzap.conf.xml does
> not get passed through, but even if it does the current code will still
> run into the illegal state change error.
>
> 2009-01-15 21:59:18 [DEBUG] ozmod_analog.c:744 process_event() EVENT
> [RING_START][1:1] STATE [DOWN]
> 2009-01-15 21:59:18 [DEBUG] ozmod_analog.c:760 process_event() Changing
> state on 1:1 from DOWN to GET_CALLERID
> 2009-01-15 21:59:18 [DEBUG] ozmod_analog.c:762 process_event() Changing
> state on 1:1 from GET_CALLERID to IDLE
> 2009-01-15 21:59:18 [DEBUG] ozmod_analog.c:239 zap_analog_channel_run()
> ANALOG CHANNEL thread starting.
> 2009-01-15 21:59:18 [DEBUG] ozmod_analog.c:410 zap_analog_channel_run()
> Executing state handler on 1:1 for IDLE
> 2009-01-15 21:59:18 [DEBUG] mod_openzap.c:1165 on_fxo_signal() got FXO
> sig 1:1 [START]
> 2009-01-15 21:59:18 [DEBUG] mod_openzap.c:340 tech_init() Set codec PCMU
> 20ms
> 2009-01-15 21:59:18 [DEBUG] mod_openzap.c:1137 zap_channel_from_event()
> Connect inbound channel OpenZAP/1:1/1
> 2009-01-15 21:59:18 [NOTICE] switch_channel.c:565
> switch_channel_set_name() New Channel OpenZAP/1:1/1
> [8e2a55c8-e2f3-11dd-adfd-6d934f226ffd]
>
> Will go and put this into JIRA in the next couple of days.
>
> Scott
>
> Scott Ellis wrote:
> > After poking around in the code, it looks like if I set <param
> > name="enable-callerid" value="false"/> in openzap.conf.xml, it should
> > skip the GET_CALLERID state, and I should get the call answered straight
> > away.
> >
> > mod_openzap.c
> >
> > } else if (!strcasecmp(var, "enable-callerid")) {
> > enable_callerid = val;
> >
> >
> > if (zap_configure_span("analog", span, on_analog_signal,
> > "tonemap", tonegroup,
> > "digit_timeout", &to,
> > "max_dialstr", &max,
> > "hotline", hotline,
> > "enable_callerid", enable_callerid,
> > TAG_END) != ZAP_SUCCESS) {
> > zap_log(ZAP_LOG_ERROR, "Error starting OpenZAP span
> > %d\n", span_id);
> > continue;
> > }
> >
> > ozmod_analog.c
> >
> > else if (!strcasecmp(var, "enable_callerid")) {
> > if (!(val = va_arg(ap, char *))) {
> > break;
> > }
> > if (zap_true(val)) {
> > flags |= ZAP_ANALOG_CALLERID;
> > } else {
> > flags &= ~ZAP_ANALOG_CALLERID;
> > }
> >
> > and
> >
> > case ZAP_OOB_RING_START:
> > {
> > if (event->channel->type != ZAP_CHAN_TYPE_FXO) {
> > zap_log(ZAP_LOG_ERROR, "Cannot get a RING_START event on
> > a non-fxo channel, please check your config.\n");
> > zap_set_state_locked(event->channel,
> > ZAP_CHANNEL_STATE_DOWN);
> > goto end;
> > }
> > if (!event->channel->ring_count && (event->channel->state ==
> > ZAP_CHANNEL_STATE_DOWN && !zap_test_flag(event->channel,
> > ZAP_CHANNEL_INTHREAD))) {
> > if (zap_test_flag(analog_data, ZAP_ANALOG_CALLERID)) {
> > zap_set_state_locked(event->channel,
> > ZAP_CHANNEL_STATE_GET_CALLERID);
> > } else {
> > zap_set_state_locked(event->channel,
> > ZAP_CHANNEL_STATE_IDLE);
> > }
> > event->channel->ring_count = 1;
> > zap_mutex_unlock(event->channel->mutex);
> > locked = 0;
> > zap_thread_create_detached(zap_analog_channel_run,
> > event->channel);
> > } else {
> > event->channel->ring_count++;
> > }
> > }
> > break;
> >
> > 2009-01-15 20:19:44 [DEBUG] ozmod_analog.c:744 process_event() EVENT
> > [RING_START][1:1] STATE [DOWN]
> > 2009-01-15 20:19:44 [DEBUG] ozmod_analog.c:760 process_event() Changing
> > state on 1:1 from DOWN to GET_CALLERID
> > 2009-01-15 20:19:44 [DEBUG] ozmod_analog.c:239 zap_analog_channel_run()
> > ANALOG CHANNEL thread starting.
> > 2009-01-15 20:19:44 [DEBUG] ozmod_analog.c:410 zap_analog_channel_run()
> > Executing state handler on 1:1 for GET_CALLERID
> > 2009-01-15 20:19:44 [DEBUG] ozmod_analog.c:744 process_event() EVENT
> > [RING_START][1:1] STATE [GET_CALLERID]
> > 2009-01-15 20:19:44 [DEBUG] ozmod_analog.c:744 process_event() EVENT
> > [RING_START][1:1] STATE [GET_CALLERID]
> > 2009-01-15 20:19:45 [DEBUG] ozmod_analog.c:744 process_event() EVENT
> > [RING_START][1:1] STATE [GET_CALLERID]
> > 2009-01-15 20:19:47 [DEBUG] ozmod_analog.c:744 process_event() EVENT
> > [RING_START][1:1] STATE [GET_CALLERID]
> > 2009-01-15 20:19:47 [DEBUG] ozmod_analog.c:744 process_event() EVENT
> > [RING_START][1:1] STATE [GET_CALLERID]
> > 2009-01-15 20:19:47 [DEBUG] ozmod_analog.c:744 process_event() EVENT
> > [RING_START][1:1] STATE [GET_CALLERID]
> > 2009-01-15 20:19:48 [DEBUG] ozmod_analog.c:744 process_event() EVENT
> > [RING_START][1:1] STATE [GET_CALLERID]
> > 2009-01-15 20:19:49 [DEBUG] ozmod_analog.c:292 zap_analog_channel_run()
> > Changing state on 1:1 from GET_CALLERID to IDLE
> > 2009-01-15 20:19:49 [DEBUG] ozmod_analog.c:410 zap_analog_channel_run()
> > Executing state handler on 1:1 for IDLE
> > 2009-01-15 20:19:49 [DEBUG] mod_openzap.c:1165 on_fxo_signal() got FXO
> > sig 1:1 [START]
> >
> > The code all looks right, but I am not getting what I think should
> > happen. Anyone with any ideas?
> >
> > Scott
> >
> > Scott Ellis wrote:
> >
> >> Searched the wiki and mailing lists as best I can, but with no luck.
> >>
> >> How do I get OpenZap to answer a call immediately? (I do not need caller
> id)
> >>
> >> Scott
> >>
> >>
> >>
> >> _______________________________________________
> >> Freeswitch-users mailing list
> >> Freeswitch-users at lists.freeswitch.org
> >> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> >> UNSUBSCRIBE:
> http://lists.freeswitch.org/mailman/options/freeswitch-users
> >> http://www.freeswitch.org
> >>
> >>
> >>
> >
> >
> > _______________________________________________
> > Freeswitch-users mailing list
> > Freeswitch-users at lists.freeswitch.org
> > http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> > UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> > http://www.freeswitch.org
> >
> >
>
>
> _______________________________________________
> Freeswitch-users mailing list
> Freeswitch-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
>
--
Anthony Minessale II
FreeSWITCH http://www.freeswitch.org/
ClueCon http://www.cluecon.com/
AIM: anthm
MSN:anthony_minessale at hotmail.com <MSN%3Aanthony_minessale at hotmail.com>
GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com<PAYPAL%3Aanthony.minessale at gmail.com>
IRC: irc.freenode.net #freeswitch
FreeSWITCH Developer Conference
sip:888 at conference.freeswitch.org <sip%3A888 at conference.freeswitch.org>
iax:guest at conference.freeswitch.org/888
googletalk:conf+888 at conference.freeswitch.org<googletalk%3Aconf%2B888 at conference.freeswitch.org>
pstn:213-799-1400
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20090115/f708b487/attachment-0001.html
More information about the Freeswitch-users
mailing list