User:Magick777/Adventures with D-Bus

This page started because I'm trying to figure out D-BUS, as a relative newbie to Python and Telepathy, and the documentation is, shall we say, "fragmented". All the D-BUS recipes on the Wiki don't seem to include a simple way to place a call via the sofiasip client. The Telepathy documentation speaks to a vague architecture, not to my N900's implementation of it, and seems better for someone who wants to write a whole new interface than someone who just wants to use an existing one. I've read more source code and more forum posts than you can shake a stick at and I'm still none the wiser.

So, this is a generic HOWTO for newbies (written by one) on how to track down an existing application's behaviour on D-BUS and replicate it. Work in progress September 2010.

Step 1: dbus-monitor
After some playing around with dbus-monitor, I've established that when I make a SIP call via the inbuilt Phone application, the first thing that happens on the session bus is:

method call sender=:1.121 -> dest=org.freedesktop.Telepathy.AccountManager serial=439 path=/org/freedesktop/Telepathy/Account/sofiasip/sip/_31030137_40sipgate_2eco_2euk0; interface=com.nokia.Account.Interface.ChannelRequests; member=Create array [ dict entry(         string "org.freedesktop.Telepathy.Channel.TargetHandleType"          variant             uint32 1       ) dict entry(         string "org.freedesktop.Telepathy.Channel.TargetID"          variant             string "sip:50000@sipgate.co.uk"       ) dict entry(         string "org.freedesktop.Telepathy.Channel.ChannelType"          variant             string "org.freedesktop.Telepathy.Channel.Type.StreamedMedia"       ) ]   uint64 14701758 string ""

and, for a call to a PSTN number, via a different SIP account:

method call sender=:1.191 -> dest=org.freedesktop.Telepathy.AccountManager serial=500 path=/org/freedesktop/Telepathy/Account/sofiasip/sip/_330147398_40sip_2evoipfone_2eco_2euk0; interface=com.nokia.Account.Interface.ChannelRequests; member=Create array [ dict entry(         string "org.freedesktop.Telepathy.Channel.TargetHandleType"          variant             uint32 1       ) dict entry(         string "org.freedesktop.Telepathy.Channel.ChannelType"          variant             string "org.freedesktop.Telepathy.Channel.Type.StreamedMedia"       ) dict entry(         string "org.freedesktop.Telepathy.Channel.TargetID"          variant             string "08081703703"       ) ]   uint64 1284595510 string ""