add the ability to turn off the feature that allows agents to end calls
authorRussell Bryant <russell@russellbryant.com>
Sat, 15 Apr 2006 22:32:23 +0000 (22:32 +0000)
committerRussell Bryant <russell@russellbryant.com>
Sat, 15 Apr 2006 22:32:23 +0000 (22:32 +0000)
by pressing '*'.  This is still on by default. (issue #6897)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@20328 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_agent.c
configs/agents.conf.sample

index 46cce1f..c36be2d 100644 (file)
@@ -156,6 +156,7 @@ static ast_group_t group;
 static int autologoff;
 static int wrapuptime;
 static int ackcall;
+static int endcall;
 static int multiplelogin = 1;
 static int autologoffunavail = 0;
 
@@ -498,7 +499,7 @@ static struct ast_frame *agent_read(struct ast_channel *ast)
                                p->acknowledged = 1;
                                ast_frfree(f);
                                f = &answer_frame;
-                       } else if (f->subclass == '*') {
+                       } else if (f->subclass == '*' && endcall) {
                                /* terminates call */
                                ast_frfree(f);
                                f = NULL;
@@ -988,6 +989,7 @@ static int read_agent_config(void)
        autologoff = 0;
        wrapuptime = 0;
        ackcall = 0;
+       endcall = 1;
        cfg = ast_config_load(config);
        if (!cfg) {
                ast_log(LOG_NOTICE, "No agent configuration found -- agent support disabled\n");
@@ -1032,6 +1034,8 @@ static int read_agent_config(void)
                                ackcall = 1;
                        else
                                ackcall = 0;
+               } else if (!strcasecmp(v->name, "endcall")) {
+                       endcall = ast_true(v->value);
                } else if (!strcasecmp(v->name, "wrapuptime")) {
                        wrapuptime = atoi(v->value);
                        if (wrapuptime < 0)
index 4eca6bf..4145d70 100644 (file)
@@ -41,6 +41,11 @@ persistentagents=yes
 ;
 ;ackcall=no
 ;
+; Define endcall to allow an agent to hangup a call by '*'.
+; Default is "yes". Set this to "no" to ignore '*'. 
+;
+;endcall=yes
+;
 ; Define wrapuptime.  This is the minimum amount of time when
 ; after disconnecting before the caller can receive a new call
 ; note this is in milliseconds.