static int __agent_start_monitoring(struct ast_channel *ast, struct agent_pvt *p, int needlock) { char tmp[AST_MAX_BUF],tmp2[AST_MAX_BUF], *pointer; char filename[AST_MAX_BUF]; char agent_campaign[AST_MAX_BUF]; char agent_leadid[AST_MAX_BUF]; char agent_phonenum[AST_MAX_BUF]; int res = -1; if (!p) return -1; if (!ast->monitor) { if (pbx_builtin_getvar_helper(ast, "CAMPAIGN") && !ast_strlen_zero(pbx_builtin_getvar_helper(ast, "CAMPAIGN"))) { strcpy(agent_campaign, !pbx_builtin_getvar_helper(chan, "CAMPAIGN")); if (option_verbose > 2) ast_verbose(VERBOSE_PREFIX_3 "Saw variable CAMPAIGN=%s, on Channel '%s'.\n",agent_campaign,ast->name); } if (pbx_builtin_getvar_helper(ast, "LEADID") && !ast_strlen_zero(pbx_builtin_getvar_helper(ast, "LEADID"))) { strcpy(agent_leadid, pbx_builtin_getvar_helper(chan, "LEADID")); if (option_verbose > 2) ast_verbose(VERBOSE_PREFIX_3 "Saw variable LEADID=%s, on Channel '%s'.\n",agent_leadid,ast->name); } if (pbx_builtin_getvar_helper(ast, "PHONENUM") && !ast_strlen_zero(pbx_builtin_getvar_helper(ast, "PHONENUM"))) { strcpy(agent_phonenum, pbx_builtin_getvar_helper(chan, "PHONENUM")); if (option_verbose > 2) ast_verbose(VERBOSE_PREFIX_3 "Saw variable PHONENUM=%s, on Channel '%s'.\n",agent_phonenum,ast->name); } /* snprintf(filename, sizeof(filename), "agent-%s-%s",p->agent, ast->uniqueid); */ snprintf(filename, sizeof(filename), "agent-%s-%s-%s-%s-%s",p->agent,agent_campaign,agent_leadid,agent_phonenum,ast->uniqueid); /* substitute . for - */ if ((pointer = strchr(filename, '.'))) *pointer = '-'; snprintf(tmp, sizeof(tmp), "%s%s",savecallsin ? savecallsin : "", filename); ast_monitor_start(ast, recordformat, tmp, needlock); ast_monitor_setjoinfiles(ast, 1); snprintf(tmp2, sizeof(tmp2), "%s%s.%s", urlprefix ? urlprefix : "", filename, recordformatext); #if 0 ast_verbose("name is %s, link is %s\n",tmp, tmp2); #endif if (!ast->cdr) ast->cdr = ast_cdr_alloc(); ast_cdr_setuserfield(ast, tmp2); res = 0; } else ast_log(LOG_ERROR, "Recording already started on that call.\n"); return res; }