]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-5178 --resolve
authorJeff Lenk <jeff@jefflenk.com>
Fri, 22 Mar 2013 02:35:54 +0000 (21:35 -0500)
committerJeff Lenk <jeff@jefflenk.com>
Fri, 22 Mar 2013 02:36:20 +0000 (21:36 -0500)
src/mod/endpoints/mod_skinny/mod_skinny.c
src/mod/endpoints/mod_skinny/mod_skinny.h
src/mod/endpoints/mod_skinny/skinny_api.c
src/mod/endpoints/mod_skinny/skinny_server.c

index 5325db6be02d73a56dad25d2802b2fd790d96025..b5dcbad1a66f18284d886d54e6f038593f0721bd 100644 (file)
@@ -131,7 +131,9 @@ switch_status_t skinny_profile_dump(const skinny_profile_t *profile, switch_stre
        stream->write_function(stream, "CALLS-OUT         \t%d\n", profile->ob_calls);
        stream->write_function(stream, "FAILED-CALLS-OUT  \t%d\n", profile->ob_failed_calls);
        /* listener */
-       stream->write_function(stream, "Listener-Threads \t%d\n", profile->listener_threads);
+       stream->write_function(stream, "Listener-Threads  \t%d\n", profile->listener_threads);
+       stream->write_function(stream, "Ext-Voicemail     \t%s\n", profile->ext_voicemail);
+       stream->write_function(stream, "Ext-Redial        \t%s\n", profile->ext_redial);
        stream->write_function(stream, "%s\n", line);
 
        return SWITCH_STATUS_SUCCESS;
@@ -1727,6 +1729,14 @@ switch_status_t skinny_profile_set(skinny_profile_t *profile, const char *var, c
                profile->debug = atoi(val);
        } else if (!strcasecmp(var, "auto-restart")) {
                profile->auto_restart = switch_true(val);
+       } else if (!strcasecmp(var, "ext-voicemail")) {
+               if (!profile->ext_voicemail || strcmp(val, profile->ext_voicemail)) {
+                       profile->ext_voicemail = switch_core_strdup(profile->pool, val);
+               }
+       } else if (!strcasecmp(var, "ext-redial")) {
+               if (!profile->ext_redial || strcmp(val, profile->ext_redial)) {
+                       profile->ext_redial = switch_core_strdup(profile->pool, val);
+               }
        } else {
                return SWITCH_STATUS_FALSE;
        }
@@ -1811,6 +1821,14 @@ static switch_status_t load_skinny_config(void)
                                        skinny_profile_set(profile, "patterns-context","skinny-patterns");
                                }
 
+                               if (!profile->ext_voicemail) {
+                                       skinny_profile_set(profile, "ext-voicemail", "vmain");
+                               }
+
+                               if (!profile->ext_redial) {
+                                       skinny_profile_set(profile, "ext-redial", "redial");
+                               }
+
                                if (profile->port == 0) {
                                        profile->port = 2000;
                                }
index 2e4ec1c30a63df7939d1c01875f3f774af632d2f..03e0ec0b62fc689dbb14e88a6505d1e715d4601f 100644 (file)
@@ -84,6 +84,9 @@ struct skinny_profile {
        int auto_restart;
        switch_hash_t *soft_key_set_sets_hash;
        switch_hash_t *device_type_params_hash;
+       /* extensions */
+       char *ext_voicemail;
+       char *ext_redial;
        /* db */
        char *dbname;
        char *odbc_dsn;
index 1b2c1413419c4804c6dc372321ab4ce215b6fd3a..299a5ff8331be2835e778fa2cf5501467b5beac1 100644 (file)
@@ -231,6 +231,8 @@ static switch_status_t skinny_api_list_settings(const char *line, const char *cu
        switch_console_push_match(&my_matches, "odbc-dsn");
        switch_console_push_match(&my_matches, "debug");
        switch_console_push_match(&my_matches, "auto-restart");
+       switch_console_push_match(&my_matches, "ext-voicemail");
+       switch_console_push_match(&my_matches, "ext-redial");
 
        if (my_matches) {
                *matches = my_matches;
index 1637d151a266acb4e9fbb6b58dc9ccd53c36bafd..0f0b18d7f23a9547473ad878a76c01d83bbb35d5 100644 (file)
@@ -1214,7 +1214,7 @@ switch_status_t skinny_handle_stimulus_message(listener_t *listener, skinny_mess
        switch(request->data.stimulus.instance_type) {
                case SKINNY_BUTTON_LAST_NUMBER_REDIAL:
                        skinny_create_incoming_session(listener, &line_instance, &session);
-                       skinny_session_process_dest(session, listener, line_instance, "redial", '\0', 0);
+                       skinny_session_process_dest(session, listener, line_instance, listener->profile->ext_redial, '\0', 0);
                        break;
                case SKINNY_BUTTON_SPEED_DIAL:
                        skinny_speed_dial_get(listener, request->data.stimulus.instance, &button_speed_dial);
@@ -1239,7 +1239,7 @@ switch_status_t skinny_handle_stimulus_message(listener_t *listener, skinny_mess
                        break;
                case SKINNY_BUTTON_VOICEMAIL:
                        skinny_create_incoming_session(listener, &line_instance, &session);
-                       skinny_session_process_dest(session, listener, line_instance, "vmain", '\0', 0);
+                       skinny_session_process_dest(session, listener, line_instance, listener->profile->ext_voicemail, '\0', 0);
                        break;
 
                case SKINNY_BUTTON_LINE:
@@ -1791,7 +1791,7 @@ switch_status_t skinny_handle_soft_key_event_message(listener_t *listener, skinn
        switch(request->data.soft_key_event.event) {
                case SOFTKEY_REDIAL:
                        status = skinny_create_incoming_session(listener, &line_instance, &session);
-                       skinny_session_process_dest(session, listener, line_instance, "redial", '\0', 0);
+                       skinny_session_process_dest(session, listener, line_instance, listener->profile->ext_redial, '\0', 0);
                        break;
                case SOFTKEY_NEWCALL:
                        status = skinny_create_incoming_session(listener, &line_instance, &session);