Storm D. J. Petersen
2004-Jun-10 19:19 UTC
[Asterisk-Users] RE: question about prepaid app_prepaid
Hi, As you asked, I have included my diff to what I did for the DIAL command. I probably didn't stick to some * pre-agreed standard of coding or something, so if these things offend you then I suggest that you close your eyes. :) The biggest thing to consider when you are doing a prepaid system is, what if the person with the same account in/out calls twice? I chose, for now, just to keep track in a database if an account is in use or not. Only allowing calls to be placed/answered when the account was not engaged with another call. It was that fastest way to implement my credit system. This way is too limited for my liking and wanted to look into more on a way to check in the scheduler to track credits used in real-time to allow multiple calls out on the same account. I haven't had time to look into this in much detail, but I am certain I can hack it into the Asterisk system - if not it could always be done with an external daemon. Let me know if anyone has thoughts about this. Hope this helps people. Storm. *** app_dial.c 2004-03-18 16:09:14.000000000 -0800 --- ../../app_dial.c 2004-06-10 17:41:14.044176497 -0700 *************** *** 67,72 **** --- 67,73 ---- " 'P[(x)]' -- privacy mode, using 'x' as database if provided.\n" " 'g' -- goes on in context if the destination channel hangs up\n" " 'A(x)' -- play an announcement to the called party, using x as file\n" + " 'B(x)' -- Timeout in 'x' seconds after call was bridged.\n" /* CHANGE: Storm Petersen */ " In addition to transferring the call, a call may be parked and then picked\n" "up by another user.\n" " The optional URL will be sent to the called party if the channel supports\n" *************** *** 360,365 **** --- 361,367 ---- struct localuser *u; char info[256], *peers, *timeout, *tech, *number, *rest, *cur; char privdb[256] = "", *s; + char szBrdgTO[256] = "", *s2; // CHANGE: buffer to store Bridging Time out. Storm Petersen */ char announcemsg[256] = "", *ann; struct localuser *outgoing=NULL, *tmp; struct ast_channel *peer; *************** *** 380,385 **** --- 382,390 ---- struct varshead *headp, *newheadp; struct ast_var_t *newvar; int go_on=0; + time_t myt; + int iBrdgTO=0; /* CHANGE: Time out after call bridged. Storm Petersen */ + if (!data) { ast_log(LOG_WARNING, "Dial requires an argument (technology1/number1&technology2/number2...|optional timeout)\n"); *************** *** 416,422 **** ast_log(LOG_WARNING, "Dial argument takes format (technology1/number1&technology2/number2...|optional timeout)\n"); goto out; } ! if (transfer) { /* XXX ANNOUNCE SUPPORT */ --- 421,449 ---- ast_log(LOG_WARNING, "Dial argument takes format (technology1/number1&technology2/number2...|optional timeout)\n"); goto out; } ! ! /* ! ** CHANGE: Added by Storm Petersen ! ** TIME OUT AFTER CALL WAS BRIDGED. ! */ ! if ((s = strstr(data, "B("))) { ! /* Timeout after Bridging */ ! strncpy(szBrdgTO, s + 2, sizeof(szBrdgTO) - 1); ! s2 = szBrdgTO; ! /* Copy the timeout string */ ! while(*s2 && (*s2 != ')')) ! s2++; ! if (*s2 == ')') ! { ! *s2 = '\0'; ! iBrdgTO = atoi(szBrdgTO) + 1; ! } ! else { ! ast_log(LOG_WARNING, "Bridge timeout lacking ')'\n"); ! iBrdgTO = 0; ! } ! } ! if (transfer) { /* XXX ANNOUNCE SUPPORT */ *************** *** 703,708 **** --- 730,746 ---- // Ok, done. stop autoservice res2 = ast_autoservice_stop(chan); } + + /* + ** CHANGE: Added by Storm Petersen + ** Set TimeOut After call was Bridged. + */ + if(iBrdgTO) + { + time(&myt); + chan->whentohangup = myt + iBrdgTO; + } + res = ast_bridge_call(chan, peer, allowredir_in, allowredir_out, allowdisconnect); if (res != AST_PBX_NO_HANGUP_PEER) -----Original Message----- From: asterisk-users-admin@lists.digium.com [mailto:asterisk-users-admin@lists.digium.com]On Behalf Of usedcanon Sent: Thursday, June 10, 2004 5:08 PM To: asterisk-users@lists.digium.com Subject: RE: [Asterisk-Users] FW: question about prepaid app_prepaid I would be interested to share ideas, if you have guidence to offer I would be greatful Umar. -----Original Message----- From: asterisk-users-admin@lists.digium.com [mailto:asterisk-users-admin@lists.digium.com]On Behalf Of Storm D. J. Petersen Sent: 11 June 2004 00:48 To: asterisk-users@lists.digium.com Subject: RE: [Asterisk-Users] FW: question about prepaid app_prepaid Hi, I found that the PREPAID system didn't disconnect proper and tracked time from when you dialed not when your phone made connection. I ended up making my own system and had to modify the Dial app. S. -----Original Message----- From: asterisk-users-admin@lists.digium.com [mailto:asterisk-users-admin@lists.digium.com]On Behalf Of Umar Sear Sent: Thursday, June 10, 2004 9:02 AM To: asterisk-users@lists.digium.com Subject: Re: [Asterisk-Users] FW: question about prepaid app_prepaid Thanks to the lack of documentation, I decided to write my own AGI script (working but no where near complete) Look forward to replies and guidence on this topic. Umar. --- Yang Tao <yang@er21.com> wrote: >> > > > Hi, > > I have compiled and installed app_prepaid module. > But have problem when > connect to postgres database. I guess so because > after key in card number, > it always play prepaid-no-aaa voice file. > > Anyone succeeded in configuring the app_prepaid for > prepaid calling service > for asterisk? Please help. > > > > Ps: where can I view the log file for this module. > > > > Thanks. > > > > Tom
steve@daviesfam.org
2004-Jun-11 09:43 UTC
[Asterisk-Users] RE: question about prepaid app_prepaid
On Thu, 10 Jun 2004, Storm D. J. Petersen wrote:> The biggest thing to consider when you are doing a prepaid system is, what > if the person with the same account in/out calls twice?A simple check for this is included in the standard app_prepaid. Steve