1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Check out the 6 new Certified Incredible PBX Builds for Asterisk 11 and 13 featuring CentOS 6, Ubuntu 14, Raspberry Pi 2, and Asterisk-NOW.
    Dismiss Notice

A2Billing - An Adventure in PBX Billing - Part 1

Discussion in 'Add-On Install Instructions' started by tshif, Dec 18, 2008.

  1. sunish

    sunish New Member

    Yes that was it, I knew I had missed something :smile5:
  2. tshif

    tshif Guru

    Hi Sunish - nice to see you posting in the forums.
    I see you and Joe beat me to the fix - excellent! They key to your situation was the double prompt - and your solutions was exactly correct.

  3. nsukho

    nsukho New Member

    I just signed up for DID with Vitelity, also purchased their e911 service. How would I set the e911 service (dialplan, etc.) in my PIAF?
  4. jroper

    jroper Guru

    It would be best not to send calls out via A2Billling, just incase the caller had no credit,

    So create a trunk to vitelity e911 service, and set an outbound route in FreePBX which should be first in the list which has dial rules in it like


  5. tshif

    tshif Guru


    Neil - I think Joe is bang-on all the way. I also want to remind you that testing your e911 service should not be undertaken lightly.

    All calls that reach the 911 centers are handled as emergencies. If you just hang up, they sent the authorities to make sure your not under some sort of duress. When they find out the only duress your under is trying to test your e911 service - you will very likely be fined and chastised.

    Some providers provide means to test your e911 service. Check with your proivder and very carefully follow their exact directions for proper (and fine-free) testing of the service.

    Let us know how this all works out for you?
  6. jroper

    jroper Guru

  7. tshif

    tshif Guru

    The Further Adventures in A2Billing – To the ‘Ends of the Earth’ with FollowMe

    The Further Adventures in A2Billing – To the ‘Ends of the Earth’ with FollowMe

    When it comes to offering features that extend the usefulness of the telephone, PBXIAF truly stands alone in a crowd – thanks to the expert blending of FreePBX, Asterisk and operating system. As we’ve learned in this series of articles, when you add A2Billing to the mix – an amazing variety of needs can be met – and billed for – with a little configuration here and there.

    One of the coolest, most useful, and from my own experience most asked-for special functions is the FollowMe function – which has been a part of FreePBX for some time now.

    Because of some perceived technical limitations in the interactions between A2B and FreePBX – we have have been unable to use FollowMe (and have those calls properly billed) in our Family Phone System. Until Now.

    Previously – we counseled you to leave the extensions in your Family Phone System completely barren of follow me settings. By never initializing FollowMe for a particular extension, the VoiceMail Web Interface never allowed the end user to see the FollowMe settings – in other words “out of sight, out of mind”. Therefore, when we activate FollowMe for an extension in FreePBX, the VoiceMail Web Interface will automatically be enabled for your end users to manage and control their own FollowMe settings any time, 24/7.

    Preparing System Recordings
    When the system begins ringing the “Follow Me” numbers, I would like the system to let the caller know that this is occurring. There is a built in system recording perfect for this – so now we’ll make it available for use by FollowMe.

    In FeeePBX, under Setup, System Recordings, select Built in Recordings.
    In the drop down box, look for and select the recording called followme/status, and then click Go. From the next screen, Select SAVE.
    This puts that recording on the list on the right, making it available to us to use.

    Activating FollowMe for a Family Phone System Extension
    From in the FreePBX Web UI, Under Setup, Extensions, select the extension for which you want to enable FollowMe. Then, Select Add Follow Me Settings.

    Ring Strategy
    The FollowMe ring strategy can not be changed from the end–user Web interface – so you will want to determine the way you want to offer Follow Me to the user(s).
    Most likely, one of the RingAll strategies will be what you are looking for. Consider how the end user will be using this capability – and make the selection. We use Ringall-prim, which means the system will ring the primary number for the initial ring time, and then sequentially ring all the remaining numbers on the list, unless the primary phone is BUSY (already in use), in which case the remaining numbers will NOT be rung.

    The ring times can be changed in the end user web ui.

    The announcement is played to the caller at the point where the main line has not been answered, and FollowMe is beginning to ring the list of numbers. In the drop down box, select the recording we made available earlier, followme/status.

    Music On Hold
    You may select any MOH class, NONE for silence, or ring to just have the user listen to ringing while it tries to hunt you down. Make a selection appropriate for your PBX.

    CID Name Prefix
    Allows you to pre-pend data to the start of the inbound caller id. Some users like the characters “(FM)” – to let them see at a glance that the call is arriving as a FollowMe call.

    For the remainder of the setting, select choices that make sense for your PBX and users.

    Destination if no Answer
    Send it to the extension’s voice mail box – unless you have special circumstances.

    When you have all the settings as desired, SUBMIT CHANGES, Apply and confirm your changes.

    Special Provisions to Make A2B work correctly with FollowMe Calls
    I have discovered that Egg (on my face) and Crow (on my plate) go down much nicer with a little A-1 sauce for flavor. I point that out because I am having an “Egg and Crow” moment right now.

    Previously in this article thread – I told you that FollowMe didn’t work correctly with A2B, and that special changes would need to be made. After spending no small amount of time to “make it work” – I discovered, to steal a quote, that “reports of FollowMe/A2Billing issues have been greatly exaggerated”. In other words – the incompatibility was apparently fixed in a previous release of FreePBX – and there is no special code work around required.

    As always – I’m interested to hear how your version of the Family Phone Project is coming along - let us know how its working out for you!

    Until next time –
  8. snapvox

    snapvox New Member

    FollowMe Not working

    First off, thanks for the hard work you put in to make this possible. I am using the same features to start a phone system for the local churches in MI who are having a hard time these days.

    I thought followMe was working when I tried calling from extension to extension. It WORKED!!! I jumped for joy and called a friend.

    I then tried it from an IVR on an incoming line. It didn't work.

    I have figured out that it uses the callers (Not called user) account code.

    Is this what you have found, and this is something that may be worth looking into. I have upgraded to the latest version of FreePBX.
  9. tshif

    tshif Guru

    Tell us more about your present call flow, and what you would like to achieve. Tell things like the exact inbound call flow and routing, etc.
  10. jroper

    jroper Guru

    This was my worry, and possibly why I gave Tony the impression that it did not work, although the experiments were lost in the mists of time.

    The key is that A2Billing can either authenticate on either the account code, or the caller ID.

    Tony has described the method of authentication of account code.

    The accountcode needs to be set in the dialplan somewhere before passing the call onwards, so it may take some more investigation as to which circumstances it is set, and which circumstances it is not.

    The tests Tony and I did recently seemed to suggest that that a followme with a call from the outside world appear to work.

    Keep us updated with your findings.

  11. snapvox

    snapvox New Member

    Currently I am not routing incoming calls through a2, I bet that is how you are seing it working. the account code tied to that DID must be carried through the rest of the call.I am working on billing incoming, I will let you all know of the result when I get it working.
  12. wheel

    wheel New Member

    inbound DID call from FreePBX to A2B

    Hey tshif,
    Very nice tutorial, tones of useful info from one source.
    Thanks for your time.
    But there is always something to fight with.
    I'm trying to forward inbound DID call from FreePBX to A2B using Custom created Destination 'A2B-DID', but have no luck so far. Here is what I have from asterisk CLI:
    == Parsing '/etc/asterisk/asterisk.conf': Found
    Connected to Asterisk 1.4.22-3 RPM by vc-rpms@voipconsulting.nl currently running on trixbox1 (pid = 2563)
    Verbosity is at least 3
    -- Executing [XXXXXX2222@from-trunk:1] NoOp("SIP/1104269540-095fc4e0", "Catch-All DID Match - Found XXXXXX2222 - You probably want a DID for this.") in new stack
    -- Executing [XXXXXX2222@from-trunk:2] Goto("SIP/1104269540-095fc4e0", "ext-did|s|1") in new stack
    -- Goto (ext-did,s,1)
    -- Executing [s@ext-did:1] Set("SIP/1104269540-095fc4e0", "__FROM_DID=s") in new stack
    -- Executing [s@ext-did:2] Gosub("SIP/1104269540-095fc4e0", "app-blacklist-check|s|1") in new stack
    -- Executing [s@app-blacklist-check:1] LookupBlacklist("SIP/1104269540-095fc4e0", "") in new stack
    -- Executing [s@app-blacklist-check:2] GotoIf("SIP/1104269540-095fc4e0", "0?blacklisted") in new stack
    -- Executing [s@app-blacklist-check:3] Return("SIP/1104269540-095fc4e0", "") in new stack
    -- Executing [s@ext-did:3] ExecIf("SIP/1104269540-095fc4e0", "0 |Set|CALLERID(name)=XXXXXXXXXX") in new stack
    -- Executing [s@ext-did:4] Set("SIP/1104269540-095fc4e0", "__CALLINGPRES_SV=allowed_not_screened") in new stack
    -- Executing [s@ext-did:5] SetCallerPres("SIP/1104269540-095fc4e0", "allowed_not_screened") in new stack
    -- Executing [s@ext-did:6] Goto("SIP/1104269540-095fc4e0", "custom-a2billing-did|s|1") in new stack
    -- Goto (custom-a2billing-did,s,1)
  13. tshif

    tshif Guru

    Thanks for the very kind words. I'm fascinated to see you doing this on a trixbox. It will be most interesting to see how it turns out for you!

    Now, to your situation - To what context does custom destination 'A2B-DID' currently point? Please show us the context details -
  14. wheel

    wheel New Member

    sorry tshif, I was out on business trip.
    That's a good question regarding context details, because I'm not quit sure how exactly inbound calls get routed into A2B sip friend. If you can provide more detail on it, it definitely speed up process. So far I just followed steps described here:
    1. created did group 1
    2. added my DID number there
    3. assigned destination to that DID
    4. created Custom Destinations: A2B-DID and forwarded inbound call to it
    Magic did not happen, it's not sending call to DID. according to previously posted log, for some reason it show DID=s (not sure what it is), but it should be XXXXXX2222.
    I did NOT create inbound trunk, could it be a reason why it fails?
    Thank you
  15. tshif

    tshif Guru

    You do need an inbound route for your DID. Remember, the call comes in to FreePBX first, then FreePBX turns it over to A2B.

    Let us know if the inbound route resolves this for you.
  16. wheel

    wheel New Member

    for successfully terminate inbound call, should I have A2B customer card number created as a FreePBX extension as well?
    Looks like duplicated record.
  17. tshif

    tshif Guru

    No - make your extensions any pattern you like (3 digit, 4 digit, etc).

    It sounds like you need to create the Destination in A2B for the extension you are routing the call to.

    Simply, it works like this for inbound calls:
    Received by FreePBX => A2B/DID => A2B Rates Inbound Call => A2B routes call to the Destinationa extension for this DID.
  18. Phone_User

    Phone_User Guru

    Invoices and Email Invoices

    Excellent article. One thing I cant seem to figure out is how to change the defaults for the email that is sent out if you are emailing an invoice.

    They all say from info@call-labs.com. Also I would like to change the text in the email body.

    Can some one direct me to where I can change this.

  19. Phone_User

    Phone_User Guru

    Forget it. :banghead: Need to read better. I found it.
  20. tshif

    tshif Guru

    The Further Adventures in A2Billing – Conference Rooms - Part 1

    The Further Adventures in A2Billing – Conference Rooms

    Conference rooms might seem an odd thing to want in a home phone system, but if you think about it a bit more, it’s not so odd after all.

    With analog phones in the house, if you want to conference call, you just pick up another extension and start yakking. It’s not such an unusual thing to want to be able to do. To conference with VoIP, you need a conference room.

    If you suddenly decide you want to share your phone call with others in the house, you can transfer it to the Conference room, and then dial yourself into the conference. Other household member’s merely pickup their closest phone and dial into the conference room. Viola! Instant family wide participation in the same call.

    Of course, it doesn’t stop there. We will add a way for outside callers to access the Conference Room directly – so Auntie Matilda from Hoboken with nothing but a cell phone, and Cousin what’s his name living all the way in Saskatoon Saskatchewan with analog PTSN, can call into a DID, and join the rest of the family those monthly family round table chats.

    Of course, Aunt Matilda and our Saskatoon connections inbound calls have to be billed at our end.

    As I’m sure you’ve guessed by now, we are talking about using a combination of A2Billing, and FreePBX conferences for this task.

    Using the Conference
    Getting a local (I.E., extension) user into the conference is easy enough. Just transfer them to extension (or Feature Code) of the conference room. Make sure you give them the conference ID and user PIN before your transfer them or they won’t be able to get in! Local extensions using the conference room do so without charge – the same as extension to extension calls.

    Adding Outside Access – and a Security Warning
    Getting outside user into the conference requires a DID. A dedicated DID allow outside callers to reach the Conference room. They still need the user PIN to access the conference, but think about that for a moment, and your “Spidey senses” should start to tingle. The PINs would become known to casual attendees, who could then later come back and use the system without authorization.

    So keeping in mind all the family conference users are trusted, we might be able to get away with static conference rooms with static pins. But, where security is involved – ‘might’ just doesn’t get the job done for me.

    The good news is, there is a tool available that will allow us to create conference rooms that are only valid for a certain number of days or hours. Outside the specified life span of the conference, the pins are meaningless; nonfunctional. That tool of course is Web MeetMe.

    However – the current version of WebMeetMe available via script for PBXIAF is, to state it very nicely, in pretty ruff shape. Lots of the pages crash, or don’t work, and there are some security concerns over SQL injection that may be lurking in the current PBXIAF version. So before we begin using it as part of our solution, we need to fix a few things.

    Upgrading WebMeetme
    The good news is that forum friend and resident guru Joe Roper has created a script to do exactly that – expressly for us PBXIAF users! This not-compiled script (open source should mean open source, right?) installs the most current version of WebMeetMe, and includes many fixes and repairs over what’s currently in the svn. In addition, Joe and I worked to create a module “front end” for this impressive package that handles the creation of the dial plan – so there no conf file editing to be done at all. For a first time install, its as simple as
      • Run the installation script
      • Install the module
      • Start using WebMeetMe.
    If you have installed the standard PBXIAF WebMeetMe script as it exists today – that version should be removed to assure a straight forward install of this new upgraded version. If you don’t do this Web MeetMe will be crushed – and will not work any more. Removal is simple, and should take less than 5 minutes.

    This program and process were developed expressly for, and have been tested only with PBXIAF. On other distros, your mileage may vary.

    Removal of previous Web MeetMe
    1. From your PBXIAF, remove the entire folder:

    2. From inside /root/, delete all scripts with the characters “meetme3” in them. (install-meetme3.x, or if your trying to run this script again, also remove piaf-wmm.sh)

    3. Using the FreePBX Config Editor, in From inside extensions_custom.conf, remove the following contexts in their entirety:
    [mm-announce], [mm-end], and [custom-meetme3]

    4. Remove (or don’t) any FreePBX Custom Destinations you have created to use the Previous install of Web MeetMe. The custom destination code (custom-meetme3,s,1) is the same for both versions of Web Meetme, so you’ll very likely still need these – and would just end up creating them again) Either way, the new install will create a Custom Destination for use with Web MeetMe – which you may use or ignore.

    5. Remove any FreePBX Misc Applications you have created to use the previous install of Web MeetMe. This step is important – the new version creates its own Feature Code to replace the Miscellaneous Application. Because we have created a module for Web MeetMe, you will now have a feature code to dial – which can be configured from the FreePBX feature code page.

    6. Remove the KennonSoft menu Web-MeetMe Icon.
    From inside /Var/html/welcome/.htindex.cfg, locate and delete the line that looks something like this:
    [FONT=&quot]1,meetme,./web-meetme,Web MeetMe3,ico_meetme.png[/FONT]

    Don’t forget to save your changes!

    7. Remove Previous Web Security Settings
    The previous versions of Web MeetMe create entries in the web security control file, as does this new script. In order to prevent unnecessary build up in the file, the previous installs entries should be removed.

    In /etc/pbx/httpdconf/pbx.conf, locate and remove the block that looks like this:

    #Password protect /var/www/html/web-meetme
    <Directory /var/www/html/web-meetme>
    AuthType Basic
    AuthName "Restricted Area"
    AuthUserFile /usr/local/apache/passwd/wwwpasswd
    Require user wwwadmin maint meetme

    Don’t forget to save your changes.

    8. Optional: Remove Web MeetMe database.
    If you don’t want to keep any of your current Web MeetMe configurations or meeting schedule data (you want a “clean” install), you may use phpMyAdmin to drop the meetme database from the system. From inside phpMyAdmin, select the webmeetme database. Then, in the upper right hand corner, click DROP. Be careful, if you’ve selected the wrong database – there is no recovery.

    The database has not changed between the versions of Web Meetme – if you leave your existing Database, it will be adopted and used just fine by the new install.

    Now your ready to perform the new installation.

    [FONT=&quot]See The Further Adventures in A2Billing – Conference Rooms - Part 2

Share This Page