mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	Add Matt's option to call an external application when a voicemail is
left git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2643 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -200,6 +200,7 @@ static int maxsilence; | ||||
| static int silencethreshold = 128; | ||||
| static char serveremail[80]; | ||||
| static char mailcmd[160];	/* Configurable mail cmd */ | ||||
| static char externnotify[160];  | ||||
|  | ||||
| static char vmfmts[80]; | ||||
| static int vmminmessage; | ||||
| @@ -1564,6 +1565,18 @@ leave_vm_out: | ||||
| 	} | ||||
| 	/* Leave voicemail for someone */ | ||||
| 	manager_event(EVENT_FLAG_CALL, "MessageWaiting", "Mailbox: %s\r\nWaiting: %d\r\n", ext, ast_app_has_voicemail(ext)); | ||||
|  | ||||
| 	/* If an external program is specified to be run after leaving a voicemail */ | ||||
| 	if (externnotify[0]) { | ||||
| 		char arguments[255]; | ||||
| 		ast_log(LOG_DEBUG, "App voicemail ran the external notify program\n"); | ||||
| 		strncpy(tmp, externnotify, sizeof(tmp)); | ||||
| 		snprintf(arguments, sizeof(arguments)-1, " %s %s %d&", chan->context, ext, ast_app_has_voicemail(ext)); | ||||
| 		strncat(tmp, arguments, sizeof(tmp) - strlen(arguments)); | ||||
| 		tmp[sizeof(tmp) - 1] = '\0'; | ||||
| 		ast_safe_system(tmp); | ||||
| 	} | ||||
|  | ||||
| 	return res; | ||||
| } | ||||
|  | ||||
| @@ -2361,6 +2374,15 @@ static int forward_message(struct ast_channel *chan, char *context, char *dir, i | ||||
| 		} | ||||
| 		/* Leave voicemail for someone */ | ||||
| 		manager_event(EVENT_FLAG_CALL, "MessageWaiting", "Mailbox: %s\r\nWaiting: %d\r\n", vmtmp->mailbox, ast_app_has_voicemail(vmtmp->mailbox)); | ||||
| 		if (externnotify[0]) { | ||||
| 			char arguments[255]; | ||||
| 			ast_log(LOG_DEBUG, "Running external notify program from vm_execmain\n"); | ||||
| 			strncpy(tmp, externnotify, sizeof(tmp)); | ||||
| 			snprintf(arguments, sizeof(arguments)-1, " %s %s %d&", chan->context, vmtmp->mailbox, ast_app_has_voicemail(vmtmp->mailbox)); | ||||
| 			strncat(tmp, arguments, sizeof(tmp) - strlen(arguments)); | ||||
| 			tmp[sizeof(tmp) - 1] = '\0'; | ||||
| 			ast_safe_system(tmp); | ||||
| 		} | ||||
|  | ||||
| 		saved_messages++; | ||||
| 		vmfree = vmtmp; | ||||
| @@ -3012,8 +3034,18 @@ out: | ||||
| 		free_user(vmu); | ||||
| 	if (valid) { | ||||
| 		manager_event(EVENT_FLAG_CALL, "MessageWaiting", "Mailbox: %s\r\nWaiting: %d\r\n", vms.username, ast_app_has_voicemail(vms.username)); | ||||
| 		if (externnotify[0]) { | ||||
| 			char arguments[255]; | ||||
| 			ast_log(LOG_DEBUG, "Running external notify program from vm_execmain\n"); | ||||
| 			strncpy(tmp, externnotify, sizeof(tmp)); | ||||
| 			snprintf(arguments, sizeof(arguments)-1, " %s %s %d&", chan->context, vms.username, ast_app_has_voicemail(vms.username)); | ||||
| 			strncat(tmp, arguments, sizeof(tmp) - strlen(arguments)); | ||||
| 			tmp[sizeof(tmp) - 1] = '\0'; | ||||
| 			ast_safe_system(tmp); | ||||
| 		} | ||||
| 	} | ||||
| 	LOCAL_USER_REMOVE(u); | ||||
|  | ||||
| 	return res; | ||||
|  | ||||
| } | ||||
| @@ -3263,6 +3295,7 @@ static int load_config(void) | ||||
| 	struct ast_config *cfg; | ||||
| 	char *cat; | ||||
| 	struct ast_variable *var; | ||||
| 	char *notifystr = NULL; | ||||
| 	char *astattach; | ||||
| 	char *silencestr; | ||||
| 	char *thresholdstr; | ||||
| @@ -3270,6 +3303,7 @@ static int load_config(void) | ||||
| 	char *astemail; | ||||
|  	char *astmailcmd = SENDMAIL; | ||||
| 	char *s; | ||||
|  | ||||
| 	int x; | ||||
|  | ||||
| 	cfg = ast_load(VOICEMAIL_CONFIG); | ||||
| @@ -3312,6 +3346,13 @@ static int load_config(void) | ||||
| 				maxsilence *= 1000; | ||||
| 		} | ||||
| 		 | ||||
| 		/* External voicemail notify application */ | ||||
| 		 | ||||
| 		if ((notifystr = ast_variable_retrieve(cfg, "general", "externnotify"))) { | ||||
| 			strncpy(externnotify, notifystr, sizeof(externnotify) - 1); | ||||
| 		} else { | ||||
| 			externnotify[0] = '\0'; | ||||
| 		} | ||||
|  | ||||
| 		/* Silence treshold */ | ||||
| 		silencethreshold = 256; | ||||
|   | ||||
| @@ -24,6 +24,11 @@ maxsilence=10 | ||||
| silencethreshold=128 | ||||
| ; Max number of failed login attempts | ||||
| 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  | ||||
| ; changes, uncomment this: | ||||
| ;externnotify=/usr/bin/myapp | ||||
|  | ||||
|  | ||||
| ; Skip the "[PBX]:" string from the message title | ||||
| ;pbxskip=yes | ||||
|   | ||||
		Reference in New Issue
	
	Block a user