Least cost routing

This page is a work in progress; it documents my efforts to hack up some sort of script-based Least Cost Routing arrangement on my N900.


Objective 1: pre-dialing

The first step is to get this working for regular PSTN access numbers over the GSM channel, so that I can use inclusive minutes rather than get charged through the nose for calling 0845, 0870 and suchlike.

In order to do that, I need to:

  1. intercept an outgoing GSM call, check dial string and see if we need to intervene
  2. if so, end the call, rewrite the number to suit, and autoredial before I the end user know or care about it

Looking at D-BUS, when we place a call via GSM we get:

=================================
Arg 1: :1.20
Arg 2: null
Arg 3: com.nokia.csd.Call
Arg 4: CreateRequested
Arg 5: +442081802828
=================================
Arg 1: :1.20
Arg 2: null
Arg 3: com.nokia.csd.Call
Arg 4: Created
Arg 5: +442081802828
=================================

so, we can hook a script onto that using the following in dbus-scripts-settings

#:GSM Call Requested
/opt/usr/bin/lcr * * com.nokia.csd.Call CreateRequested *

now, let's test that we can forcibly end the call before it happens:

#!/bin/sh
echo "Least Cost Routing script: detected outgoing call to $5";
echo "Ending call to $5"
dbus-send --system --print-reply --dest=com.nokia.csd.Call /com/nokia/csd/call com.nokia.csd.Call.Release