[asterisk-commits] branch bweschke/findme_followme r32477 -
/team/bweschke/findme_followme/apps/
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Mon Jun 5 20:28:10 MST 2006
Author: bweschke
Date: Mon Jun 5 22:28:10 2006
New Revision: 32477
URL: http://svn.digium.com/view/asterisk?rev=32477&view=rev
Log:
Getting there! Custom prompt filename code (part 1/2)
Modified:
team/bweschke/findme_followme/apps/app_followme.c
Modified: team/bweschke/findme_followme/apps/app_followme.c
URL: http://svn.digium.com/view/asterisk/team/bweschke/findme_followme/apps/app_followme.c?rev=32477&r1=32476&r2=32477&view=diff
==============================================================================
--- team/bweschke/findme_followme/apps/app_followme.c (original)
+++ team/bweschke/findme_followme/apps/app_followme.c Mon Jun 5 22:28:10 2006
@@ -91,6 +91,12 @@
unsigned int active; /*!< Profile is active (1), or disabled (0). */
char takecall[20]; /*!< Digit mapping to take a call */
char nextindp[20]; /*!< Digit mapping to decline a call */
+ char callfromprompt[AST_CONFIG_MAX_PATH];
+ char norecordingprompt[AST_CONFIG_MAX_PATH];
+ char optionsprompt[AST_CONFIG_MAX_PATH];
+ char plsholdprompt[AST_CONFIG_MAX_PATH];
+ char statusprompt[AST_CONFIG_MAX_PATH];
+ char sorryprompt[AST_CONFIG_MAX_PATH];
AST_LIST_HEAD_NOLOCK(numbers, number) numbers; /*!< Head of the list of follow-me numbers */
AST_LIST_HEAD_NOLOCK(blnumbers, number) blnumbers; /*!< Head of the list of black-listed numbers */
@@ -108,6 +114,12 @@
struct ast_channel *outbound;
char takecall[20]; /*!< Digit mapping to take a call */
char nextindp[20]; /*!< Digit mapping to decline a call */
+ char callfromprompt[AST_CONFIG_MAX_PATH];
+ char norecordingprompt[AST_CONFIG_MAX_PATH];
+ char optionsprompt[AST_CONFIG_MAX_PATH];
+ char plsholdprompt[AST_CONFIG_MAX_PATH];
+ char statusprompt[AST_CONFIG_MAX_PATH];
+ char sorryprompt[AST_CONFIG_MAX_PATH];
};
struct findme_user {
@@ -129,7 +141,14 @@
static int featuredigittimeout = 5000; /*!< Feature Digit Timeout */
static const char *defaultmoh = "default"; /*!< Default Music-On-Hold Class */
-static char takecall[20] = "1", nextindp[20] = "2", nextinfmfm[20] = "", blindxferexten[20] = "", atxferexten[20] = "";
+static char takecall[20] = "1", nextindp[20] = "2";
+static char callfromprompt[AST_CONFIG_MAX_PATH] = "followme/call-from";
+static char norecordingprompt[AST_CONFIG_MAX_PATH] = "followme/no-recording";
+static char optionsprompt[AST_CONFIG_MAX_PATH] = "followme/followme-options";
+static char plsholdprompt[AST_CONFIG_MAX_PATH] = "followme/pls-hold-while-try";
+static char statusprompt[AST_CONFIG_MAX_PATH] = "followme/followme-status";
+static char sorryprompt[AST_CONFIG_MAX_PATH] = "followme/followme-sorry";
+
static AST_LIST_HEAD_STATIC(followmes, ast_call_followme);
AST_LIST_HEAD_NOLOCK(findme_user_listptr, findme_user);
@@ -169,6 +188,12 @@
ast_copy_string(f->context, "", sizeof(f->context));
ast_copy_string(f->takecall, takecall, sizeof(f->takecall));
ast_copy_string(f->nextindp, nextindp, sizeof(f->nextindp));
+ ast_copy_string(f->callfromprompt, callfromprompt, sizeof(f->callfromprompt));
+ ast_copy_string(f->norecordingprompt, norecordingprompt, sizeof(f->norecordingprompt));
+ ast_copy_string(f->optionsprompt, optionsprompt, sizeof(f->optionsprompt));
+ ast_copy_string(f->plsholdprompt, plsholdprompt, sizeof(f->plsholdprompt));
+ ast_copy_string(f->statusprompt, statusprompt, sizeof(f->statusprompt));
+ ast_copy_string(f->sorryprompt, sorryprompt, sizeof(f->sorryprompt));
AST_LIST_HEAD_INIT_NOLOCK(&f->numbers);
AST_LIST_HEAD_INIT_NOLOCK(&f->blnumbers);
AST_LIST_HEAD_INIT_NOLOCK(&f->wlnumbers);
@@ -186,6 +211,7 @@
static void profile_set_param(struct ast_call_followme *f, const char *param, const char *val, int linenum, int failunknown)
{
+
if (!strcasecmp(param, "musicclass") || !strcasecmp(param, "musiconhold") || !strcasecmp(param, "music"))
ast_copy_string(f->moh, val, sizeof(f->moh));
else if (!strcasecmp(param, "context")) {
@@ -194,6 +220,18 @@
ast_copy_string(f->takecall, val, sizeof(f->takecall));
} else if (!strcasecmp(param, "declinecall")) {
ast_copy_string(f->nextindp, val, sizeof(f->nextindp));
+ } else if (!strcasecmp(param, "call-from-prompt")) {
+ ast_copy_string(f->callfromprompt, val, sizeof(f->callfromprompt));
+ } else if (!strcasecmp(param, "followme-recording-prompt")) {
+ ast_copy_string(f->norecordingprompt, val, sizeof(f->norecordingprompt));
+ } else if (!strcasecmp(param, "followme-options-prompt")) {
+ ast_copy_string(f->optionsprompt, val, sizeof(f->optionsprompt));
+ } else if (!strcasecmp(param, "followme-pls-hold-prompt")) {
+ ast_copy_string(f->plsholdprompt, val, sizeof(f->plsholdprompt));
+ } else if (!strcasecmp(param, "followme-status-prompt")) {
+ ast_copy_string(f->statusprompt, val, sizeof(f->statusprompt));
+ } else if (!strcasecmp(param, "followme-sorry-prompt")) {
+ ast_copy_string(f->sorryprompt, val, sizeof(f->sorryprompt));
} else if (failunknown) {
if (linenum >= 0)
ast_log(LOG_WARNING, "Unknown keyword in profile '%s': %s at line %d of followme.conf\n", f->name, param, linenum);
@@ -240,6 +278,7 @@
int numorder;
char *takecallstr;
char *declinecallstr;
+ char *tmpstr;
cfg = ast_config_load("followme.conf");
if (!cfg) {
@@ -269,6 +308,30 @@
declinecallstr = ast_variable_retrieve(cfg, "general", "declinecall");
if (!ast_strlen_zero(declinecallstr))
ast_copy_string(nextindp, declinecallstr, sizeof(nextindp));
+
+ tmpstr = ast_variable_retrieve(cfg, "general", "call-from-prompt");
+ if (!ast_strlen_zero(tmpstr))
+ ast_copy_string(callfromprompt, tmpstr, sizeof(callfromprompt));
+
+ tmpstr = ast_variable_retrieve(cfg, "general", "followme-norecording-prompt");
+ if (!ast_strlen_zero(tmpstr))
+ ast_copy_string(norecordingprompt, tmpstr, sizeof(norecordingprompt));
+
+ tmpstr = ast_variable_retrieve(cfg, "general", "followme-options-prompt");
+ if (!ast_strlen_zero(tmpstr))
+ ast_copy_string(optionsprompt, tmpstr, sizeof(optionsprompt));
+
+ tmpstr = ast_variable_retrieve(cfg, "general", "followme-pls-hold-prompt");
+ if (!ast_strlen_zero(tmpstr))
+ ast_copy_string(plsholdprompt, tmpstr, sizeof(plsholdprompt));
+
+ tmpstr = ast_variable_retrieve(cfg, "general", "followme-status-prompt");
+ if (!ast_strlen_zero(tmpstr))
+ ast_copy_string(statusprompt, tmpstr, sizeof(statusprompt));
+
+ tmpstr = ast_variable_retrieve(cfg, "general", "followme-sorry-prompt");
+ if (!ast_strlen_zero(tmpstr))
+ ast_copy_string(sorryprompt, tmpstr, sizeof(sorryprompt));
/* Chug through config file */
cat = ast_category_browse(cfg, NULL);
@@ -409,8 +472,8 @@
/* ------------ wait_for_winner_channel start --------------- */
- callfromname = ast_strdupa("call-from");
- pressbuttonname = ast_strdupa("press-1-to-be-connected-or");
+ callfromname = ast_strdupa(tpargs->callfromprompt);
+ pressbuttonname = ast_strdupa(tpargs->optionsprompt);
if (!AST_LIST_EMPTY(findme_user_list))
{
@@ -702,16 +765,10 @@
/* We're going to figure out what the longest possible string of digits to collect is */
ynlongest = 0;
- if (strlen(takecall) > ynlongest)
- ynlongest = strlen(takecall);
- if (strlen(nextindp) > ynlongest)
- ynlongest = strlen(nextindp);
- if (strlen(nextinfmfm) > ynlongest)
- ynlongest = strlen(nextinfmfm);
- if (strlen(blindxferexten) > ynlongest)
- ynlongest = strlen(blindxferexten);
- if (strlen(atxferexten) > ynlongest)
- ynlongest = strlen(atxferexten);
+ if (strlen(tpargs->takecall) > ynlongest)
+ ynlongest = strlen(tpargs->takecall);
+ if (strlen(tpargs->nextindp) > ynlongest)
+ ynlongest = strlen(tpargs->nextindp);
idx = 1;
caller = tpargs->chan;
@@ -889,6 +946,14 @@
ast_mutex_lock(&f->lock);
targs.mohclass = ast_strdupa(f->moh);
ast_copy_string(targs.context, f->context, sizeof(targs.context));
+ ast_copy_string(targs.takecall, f->takecall, sizeof(targs.takecall));
+ ast_copy_string(targs.nextindp, f->nextindp, sizeof(targs.nextindp));
+ ast_copy_string(targs.callfromprompt, f->callfromprompt, sizeof(targs.callfromprompt));
+ ast_copy_string(targs.norecordingprompt, f->norecordingprompt, sizeof(targs.norecordingprompt));
+ ast_copy_string(targs.optionsprompt, f->optionsprompt, sizeof(targs.optionsprompt));
+ ast_copy_string(targs.plsholdprompt, f->plsholdprompt, sizeof(targs.plsholdprompt));
+ ast_copy_string(targs.statusprompt, f->statusprompt, sizeof(targs.statusprompt));
+ ast_copy_string(targs.sorryprompt, f->sorryprompt, sizeof(targs.sorryprompt));
/* Copy the numbers we're going to use into another list in case the master list should get modified
(and locked) while we're trying to do a follow-me */
AST_LIST_HEAD_INIT_NOLOCK(&targs.cnumbers);
@@ -902,7 +967,7 @@
duration = 5;
if (ast_play_and_record(chan, "vm-rec-name", namerecloc, 5, "sln", &duration, 128, 0, NULL) < 0)
goto outrun;
- if (ast_streamfile(chan, "pls-hold-while-try", chan->language))
+ if (ast_streamfile(chan, targs.plsholdprompt, chan->language))
goto outrun;
if (ast_waitstream(chan, "") < 0)
goto outrun;
More information about the asterisk-commits
mailing list