A library to bill telephone calls
npm install call_bill






``json`
"dependencies": {
"call_bill": "latest"
}
js
var call_bill = require('call_bill');
var result = call_bill.bill(callDurationInSeconds, rates);
`See below to know how the
rates variable should be formed. The result
variable is an object that contains the total cost, seconds, and effective
seconds billed, along with a full description of any rates used.Validating Input and Output
In the schema directory you will
find the JSON Schema definitions.$3
* CallBillRates
* LCRSort$3
* CallBillResult
* LCRResultRates Examples
The rate JSON Object is documented in the source code for
index.js.Below you will find a few examples for the most common usage. More examples can
be found in the tests.
$3
1. The total time will be billed at $0.015 with a billing increment of 6s.`js
var flatRate = [{
increment: 6,
costPerMinute: 0.015,
description: 'Standard flat rate for US calls'
}];
`$3
1. The first 15 seconds will be billed at $0.015 with a billing increment of 15s.
2. The remaining time will be billed at $0.017 with a billing increment of 6s.`js
var rates = [
{increment: 15, costPerMinute: 0.015, duration: 15},
{increment: 6, costPerMinute: 0.017}
];
`$3
1. The first 5 minutes for these calls will be free.
2. The next 10 minutes will be billed at $0.017/min with a billing increment of 6s.
3. The remaining time will be billed at $0.02/min with a billing increment of 6s.`js
var rates = [
{increment: 15, costPerMinute: 0, duration: 300},
{increment: 6, costPerMinute: 0.017, duration: 600},
{increment: 6, costPerMinute: 0.02},
];
`LCR (Least Cost Routing)
`js
var result = call_bill.lcrSort(averageCallDurationInSeconds, rates);
`
Where rates is an array of an array of rates, for example:`js
[
[{increment: 6, costPerMinute: 0.020}],
[{increment: 6, costPerMinute: 0.017}],
[{increment: 6, costPerMinute: 0.015}]
]
`
Essentially passing an array of the same rates argument passed to call_bill.billDevelopers
This project uses standard npm scripts. Current tasks include:
* test: Runs Mocha tests.
* jsdoc: Runs JSDoc3.
* eslint: Runs ESLint.
* coverage: Runs the tests and then Instanbul to get a coverage report.
* build: This is the default task, and will run all the other tasks.Running an npm task
To run a task, just do:`sh
npm run build
`Contributing
To contribute:
* Make sure you open a concise and short pull request.
* Throw in any needed unit tests to accomodate the new code or the
changes involved.
* Run npm run build` and make sure everything is ok before submitting the pullCheck LICENSE file for more information.