From 9b6bd35ed347e16417c0f93711a8f0292bccab10 Mon Sep 17 00:00:00 2001
From: Mark Spencer <markster@digium.com>
Date: Mon, 28 Jun 2004 18:40:41 +0000
Subject: [PATCH] Allow custom beep to be specified for agents (bug #1938)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3330 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_agent.c      | 9 ++++++---
 configs/agents.conf.sample | 4 ++++
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/channels/chan_agent.c b/channels/chan_agent.c
index 0e469fb85f..ffe87c2bba 100755
--- a/channels/chan_agent.c
+++ b/channels/chan_agent.c
@@ -102,6 +102,7 @@ static int createlink = 0;
 static char urlprefix[AST_MAX_BUF];
 static char savecallsin[AST_MAX_BUF];
 static int updatecdr = 0;
+static char beep[AST_MAX_BUF] = "beep";
 
 #define GETAGENTBYCALLERID	"AGENTBYCALLERID"
 
@@ -459,7 +460,7 @@ static int agent_call(struct ast_channel *ast, char *dest, int timeout)
 	}
 	ast_verbose( VERBOSE_PREFIX_3 "agent_call, call to agent '%s' call on '%s'\n", p->agent, p->chan->name);
 	ast_log( LOG_DEBUG, "Playing beep, lang '%s'\n", p->chan->language);
-	res = ast_streamfile(p->chan, "beep", p->chan->language);
+	res = ast_streamfile(p->chan, beep, p->chan->language);
 	ast_log( LOG_DEBUG, "Played beep, result '%d'\n", res);
 	if (!res) {
 		res = ast_waitstream(p->chan, "");
@@ -832,6 +833,8 @@ static int read_agent_config(void)
 				snprintf(savecallsin, sizeof(savecallsin) - 2, "/%s", v->value);
 			if (savecallsin[strlen(savecallsin) - 1] != '/')
 				strcat(savecallsin, "/");
+		} else if (!strcasecmp(v->name, "custom_beep")) {
+			strncpy(beep, v->value, sizeof(beep) - 1);
 		}
 		v = v->next;
 	}
@@ -900,7 +903,7 @@ static int check_availability(struct agent_pvt *newlyavailable, int needlock)
 			res = 0;
 		} else {
 			ast_log( LOG_DEBUG, "Playing beep, lang '%s'\n", newlyavailable->chan->language);
-			res = ast_streamfile(newlyavailable->chan, "beep", newlyavailable->chan->language);
+			res = ast_streamfile(newlyavailable->chan, beep, newlyavailable->chan->language);
 			ast_log( LOG_DEBUG, "Played beep, result '%d'\n", res);
 			if (!res) {
 				res = ast_waitstream(newlyavailable->chan, "");
@@ -960,7 +963,7 @@ static int check_beep(struct agent_pvt *newlyavailable, int needlock)
 	if (p) {
 		ast_mutex_unlock(&newlyavailable->lock);
 		ast_log( LOG_DEBUG, "Playing beep, lang '%s'\n", newlyavailable->chan->language);
-		res = ast_streamfile(newlyavailable->chan, "beep", newlyavailable->chan->language);
+		res = ast_streamfile(newlyavailable->chan, beep, newlyavailable->chan->language);
 		ast_log( LOG_DEBUG, "Played beep, result '%d'\n", res);
 		if (!res) {
 			res = ast_waitstream(newlyavailable->chan, "");
diff --git a/configs/agents.conf.sample b/configs/agents.conf.sample
index 61a8dc93f8..bde3081342 100755
--- a/configs/agents.conf.sample
+++ b/configs/agents.conf.sample
@@ -59,6 +59,10 @@
 ; The optional directory to save the conversations in. The default is
 ; /var/spool/asterisk/monitor
 ;savecallsin=/var/calls
+;
+; An optional custom beep sound file to play to always-connected agents. 
+;custom_beep=beep
+;
 ; --------------------------------------------------
 ;
 ; This section contains the agent definitions, in the form:
-- 
GitLab