.. _balance_checker: =============== Balance Checker =============== .. contents:: :local: :depth: 3 Overview -------- This web service allows the app to check account credit balance and display it to the user. Balance is shown on the keypad screen. Parameters ---------- Parameter templates for Balance Checker can use any variables from :ref:`global-params` and :ref:`account-params` scopes. There are no service-specific parameters defined for balance checker. Configuration ------------- The following :ref:`account-xml` keys are relevant for balance checker configuration: ``genericBalanceCheckUrl`` ~~~~~~~~~~~~~~~~~~~~~~~~~~ Contains the URL, including URL scheme, of the web service, possibly also with query string. Example (with query-string): .. code-block:: xml https://example.com/balance/?username=%account[username]% Example (without query-string): .. code-block:: xml https://example.com/balance/%account[username]% ``genericBalanceCheckPostData`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If filled in, the app will use POST request to check the balance. Example ( for application/x-www-form-urlencoded): .. code-block:: xml username=%account[username]% Example ( for application/json ): .. code-block:: json { "username" : "%account[username]%" } ``genericBalanceCheckContentType`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Specifies the value of Content-Type header to be sent in the request. If not specified, the app will default to ``application/x-www-form-urlencoded`` ``balanceCheckIntervalInSeconds`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Specifies how often will the app check for balance updates. The default value is 300 (every 5 minutes). Example: .. code-block:: xml 180 ``balanceCheckDelayInSeconds`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The app also checks for new balance when the call ends, because it's expected that the balance changes at that time and it's desired to refresh it asap. Some providers may need to delay this check, because the new balance needs some time to propagate through their backend. The default is 5 seconds. Example: .. code-block:: xml 0 Response -------- The response will be considered successful if the HTTP response code is 2xx. Any responses which have other response code, or whose body can't be parsed, are silently ignored. ``Content-type`` header of the response specifies the format of the body. The following Content-Types are supported: - application/xml (**default**) - application/json - application/x-www-form-urlencoded The following fields in the response are recognized: ``balanceString`` ~~~~~~~~~~~~~~~~~ This is the string which will be displayed as-is as a balance. The server needs to format this string to make it look pretty and follow the conventions for the given country and currency. It's recommended to keep the balance string short (under 10 characters) This field is mandatory. ``balance`` ~~~~~~~~~~~ Numerical representation of the balance. Parsed as a floating-point number. Optional and currently not used in the app ``currency`` ~~~~~~~~~~~~ Code of the currency in which the balance is expressed. Optional and currently not used in the app Examples -------- GET method, XML ~~~~~~~~~~~~~~~ request: .. code-block:: http GET /balance/?username=johndow&password=12345678 HTTP/1.1 Host: example.com Connection: close Cache-Control: max-age=0 User-Agent: CloudSoftphone/1.5.6 response: .. code-block:: http HTTP/1.1 200 OK Date: Sun, 15 Mar 2015 00:46:17 GMT Server: Apache/2.4.7 (Ubuntu) Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 183 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/xml CHF 13.44 13.44 CHF GET method, JSON ~~~~~~~~~~~~~~~~ request: .. code-block:: http GET /balance/johndow/12345678 HTTP/1.1 Host: example.com Connection: close Cache-Control: max-age=0 User-Agent: CloudSoftphone/1.5.6 response: .. code-block:: http HTTP/1.1 200 OK Date: Sun, 15 Mar 2015 00:46:17 GMT Server: Apache/2.4.7 (Ubuntu) Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 183 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: application/json { "balanceString" : "CHF 13.44", "balance" : 13.44, "currency" : "CHF" }