summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/app_voicemail.c45
-rw-r--r--configs/voicemail.conf.sample10
2 files changed, 29 insertions, 26 deletions
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 091cffebe..4c39dfa45 100644
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -2817,7 +2817,7 @@ static void run_externnotify(char *context, char *extension)
else
ast_copy_string(ext_context, extension, sizeof(ext_context));
- if (!strcasecmp(externnotify, "smdi")) {
+ if (smdi_iface) {
if (ast_app_has_voicemail(ext_context, NULL))
ast_smdi_mwi_set(smdi_iface, extension);
else
@@ -2835,7 +2835,9 @@ static void run_externnotify(char *context, char *extension)
if (option_debug)
ast_log(LOG_DEBUG, "Successfully executed SMDI MWI change for %s on %s\n", extension, smdi_iface->name);
}
- } else if (!ast_strlen_zero(externnotify)) {
+ }
+
+ if (!ast_strlen_zero(externnotify)) {
if (inboxcount(ext_context, &newvoicemails, &oldvoicemails)) {
ast_log(LOG_ERROR, "Problem in calculating number of voicemail messages available for extension %s\n", extension);
} else {
@@ -7294,34 +7296,33 @@ static int load_config(void)
}
#endif
/* External voicemail notify application */
-
if ((notifystr = ast_variable_retrieve(cfg, "general", "externnotify"))) {
ast_copy_string(externnotify, notifystr, sizeof(externnotify));
if (option_debug)
ast_log(LOG_DEBUG, "found externnotify: %s\n", externnotify);
- if (!strcasecmp(externnotify, "smdi")) {
- if (option_debug)
- ast_log(LOG_DEBUG, "Using SMDI for external voicemail notification\n");
- if ((smdistr = ast_variable_retrieve(cfg, "general", "smdiport"))) {
- smdi_iface = ast_smdi_interface_find(smdistr);
- } else {
- if (option_debug)
- ast_log(LOG_DEBUG, "No SMDI interface set, trying default (/dev/ttyS0)\n");
- smdi_iface = ast_smdi_interface_find("/dev/ttyS0");
- }
-
- if (!smdi_iface) {
- ast_log(LOG_ERROR, "No valid SMDI interface specfied, disabling external voicemail notification\n");
- externnotify[0] = '\0';
- } else {
- if (option_debug)
- ast_log(LOG_DEBUG, "Using SMDI port %s\n", smdi_iface->name);
- }
- }
} else {
externnotify[0] = '\0';
}
+ /* SMDI voicemail notification */
+ if ((s = ast_variable_retrieve(cfg, "general", "smdienable")) && ast_true(s)) {
+ if (option_debug)
+ ast_log(LOG_DEBUG, "Enabled SMDI voicemail notification\n");
+ if ((smdistr = ast_variable_retrieve(cfg, "general", "smdiport"))) {
+ smdi_iface = ast_smdi_interface_find(smdistr);
+ } else {
+ if (option_debug)
+ ast_log(LOG_DEBUG, "No SMDI interface set, trying default (/dev/ttyS0)\n");
+ smdi_iface = ast_smdi_interface_find("/dev/ttyS0");
+ }
+ if (!smdi_iface) {
+ ast_log(LOG_ERROR, "No valid SMDI interface specfied, disabling SMDI voicemail notification\n");
+ } else {
+ if (option_debug)
+ ast_log(LOG_DEBUG, "Using SMDI port %s\n", smdi_iface->name);
+ }
+ }
+
/* Silence treshold */
silencethreshold = 256;
if ((thresholdstr = ast_variable_retrieve(cfg, "general", "silencethreshold")))
diff --git a/configs/voicemail.conf.sample b/configs/voicemail.conf.sample
index 2b388d7d7..b292713ad 100644
--- a/configs/voicemail.conf.sample
+++ b/configs/voicemail.conf.sample
@@ -58,11 +58,13 @@ maxlogins=3
;
; If you need to have an external program, i.e. /usr/bin/myapp
; called when a voicemail is left, delivered, or your voicemailbox
-; is checked, uncomment this. It can also be set to 'smdi' to use
-; smdi for external notification. If it is 'smdi', smdiport should
-; be set to a valid port as specified in smdi.conf.
-
+; is checked, uncomment this.
;externnotify=/usr/bin/myapp
+
+; If you would also like to enable SMDI notification then set smdienable to yes.
+; You will also need to make sure smdiport is set to a valid port as specified in
+; smdi.conf.
+;smdienable=yes
;smdiport=/dev/ttyS0
; If you need to have an external program, i.e. /usr/bin/myapp