? anthmdiff.txt ? big.wav ? muted ? mydiff.txt ? test.ps ? sounds/conf-thereare.gsm Index: apps/app_meetme.c =================================================================== RCS file: /usr/cvsroot/asterisk/apps/app_meetme.c,v retrieving revision 1.74 diff -u -r1.74 app_meetme.c --- apps/app_meetme.c 25 Jan 2005 06:10:19 -0000 1.74 +++ apps/app_meetme.c 29 Jan 2005 23:08:38 -0000 @@ -74,6 +74,7 @@ " using format ${MEETME_RECORDINGFORMAT}). Default filename is\n" " meetme-conf-rec-${CONFNO}-${UNIQUEID} and the default format is wav.\n" " 'q' -- quiet mode (don't play enter/leave sounds)\n" +" 'c' -- announce user(s) count on joining a conference\n" " 'M' -- enable music on hold when the conference has a single caller\n" " 'x' -- close the conference when last marked user exits\n" " 'w' -- wait until the marked user enters the conference\n" @@ -177,6 +178,7 @@ #define CONFFLAG_MARKEDUSER (1 << 13) /* If set, the user will be marked */ #define CONFFLAG_INTROUSER (1 << 14) /* If set, user will be ask record name on entry of conference */ #define CONFFLAG_RECORDCONF (1<< 15) /* If set, the MeetMe will be recorded */ +#define CONFFLAG_ANNOUNCEUSERCOUNT (1 << 16) /* If set, when user joins the conference, they will be told the number of users that are already in */ static int careful_write(int fd, unsigned char *data, int len) { @@ -623,7 +625,7 @@ else strncpy(exitcontext, chan->context, sizeof(exitcontext) - 1); } - snprintf(user->namerecloc,sizeof(user->namerecloc),"%s/meetme-username-%s-%d",AST_SPOOL_DIR,conf->confno,user->user_no); + snprintf(user->namerecloc,sizeof(user->namerecloc),"%s/meetme-username-%s-%d",AST_SPOOL_DIR,conf->confno,user->user_no); if (!(confflags & CONFFLAG_QUIET) && (confflags & CONFFLAG_INTROUSER)) ast_record_review(chan,"vm-rec-name",user->namerecloc, 10,"sln", &duration, NULL); @@ -659,6 +661,42 @@ goto outrun; } + if (!(confflags & CONFFLAG_QUIET) && (confflags & CONFFLAG_ANNOUNCEUSERCOUNT) && conf->users > 1) { + int keepplaying=1; + + if (conf->users == 2) { + if (!ast_streamfile(chan,"conf-onlyone",chan->language)) { + res = ast_waitstream(chan, AST_DIGIT_ANY); + if (res > 0) + keepplaying=0; + else if (res == -1) + goto outrun; + } + } else { + if (!ast_streamfile(chan, "conf-thereare", chan->language)) { + res = ast_waitstream(chan, AST_DIGIT_ANY); + if (res > 0) + keepplaying=0; + else if (res == -1) + goto outrun; + } + if (keepplaying) { + res = ast_say_number(chan, conf->users - 1, AST_DIGIT_ANY, chan->language, (char *) NULL); + if (res > 0) + keepplaying=0; + else if (res == -1) + goto outrun; + } + if (keepplaying && !ast_streamfile(chan, "conf-otherinparty", chan->language)) { + res = ast_waitstream(chan, AST_DIGIT_ANY); + if (res > 0) + keepplaying=0; + else if (res == -1) + goto outrun; + } + } + } + /* Set it into linear mode (write) */ if (ast_set_write_format(chan, AST_FORMAT_SLINEAR) < 0) { ast_log(LOG_WARNING, "Unable to set '%s' to write linear mode\n", chan->name); @@ -1320,6 +1358,8 @@ confflags |= CONFFLAG_QUIET; if (strchr(inflags, 'M')) confflags |= CONFFLAG_MOH; + if (strchr(inflags, 'c')) + confflags |= CONFFLAG_ANNOUNCEUSERCOUNT; if (strchr(inflags, 'x')) confflags |= CONFFLAG_MARKEDEXIT; if (strchr(inflags, 'X'))