Skypetelefonbuch ins Jitsi importieren

Heute widmen wir uns ganz dem Umstieg von Skype OUT ™  und Skype IN ™zu Jitsi.

Die erste Frage die sich stellt :“kann ich meine Rufnummer mitnehmen ?“ kann mit einem „Ja, aber..“ beantwortet werden. Das Aber sieht so aus: Man braucht einen SIP Dienst im Netz, z.b. sipgate.de oder eine konfigurierte Fritz!Box, die aus dem Netz erreichbar ist, dann kann man das auch über zu Hause machen.

Die zweite Frage: „Bekomme ich mein Telefonbuch importiert ?“ kann ich auch mit „Ja“ beantworten.
Ich habe da mal was vorbereitet, aber ACHTUNG: Eine Fritz!Box nimmt es einem derzeit übel , wenn man mehr als 22 Einträge in der Kontaktliste hat! Ich hab es mit meinen 160 versucht, das war wie ein DOS Angriff.

Das Problem wird bereits bei Jitsi und AVM untersucht, daß Ergebnis steht noch aus.

Vorbereitungen

Wir brauchen : PHP mit SQLite3 support

Als ersten stoppen wir Jitsi. Die Beispiele hier sind alle für Linux, aber die funktionieren mit anderen Pfaden auch für Windows. Das PHP Programm habe ich unter angefügt.

php skypetojitsi.php pfad_zur_main.db SIPID SIPSERVERIP Gruppenname

Für eine Fritz!Box wäre das ein typisches Beispiel:

Wenn „620@192.168.178.1“ die von der Fritz!Box vorgegebene ID ist, dann ist 620 die SIPID und die IPadresse der SIPServer.

php skypetojitsi.php ~/.Skype/skypeusername/ 620 192.168.178.1 Phonebook >/tmp/jitsi.xml

Das Programm gibt ein XML Fragment aus, daß man per Texteditor in die Datei „~/.jitsi/contactlist.xml“ einfügen muß. Der Inhalt muß zwischen die „child-contacts“ Tags :

           <group name="Phonebook" uid="1450110895594310563919">
                
                    "SIP:620@192.168.178.1" parent-proto-group-uid="RootGroup.uid" uid="Phonebook.uid"/>
                </proto-groups>
                <subgroups/>
                <child-contacts>
                       ----> INSERT XML HERE <----
                </child-contacts>
            </group>

Das wars dann auch schon. Abspeichern und Jitsi neustarten.

Hier der PHP Code

$tmpl = "\t\">\n                        \n                        @\" address=\"@\" parent-proto-group-uid=\".uid\">\n                            xcap.resolved=false;\n                        \n                    \n";


function sqlite_open($location,$mode)
{
    $handle = new SQLite3($location,$mode);
    return $handle;
} 

function generateRandomString($length = 10) {
    $characters = '0123456789';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}

if ( $argc < 4 ) { print "Usage: skype2jitsi path_to_main.db SIPID SIPSERVER Groupname\n"; exit; } if ( $stmt = sqlite_open( $argv[1]."/main.db",SQLITE3_OPEN_READONLY) ) { if ( $result = $stmt->query("select displayname,pstnnumber from Contacts where pstnnumber like '+%' and pstnnumber!=displayname order by displayname") ) {
			
		while ( $row = $result->fetchArray(SQLITE3_ASSOC) ) {
			
			$uuid = "1450".generateRandomString(19);

			print str_replace(array("","","","","",""),
					  array($uuid, $row["displayname"], $argv[2], $row["pstnnumber"], $argv[3], $argv[4]),
					  $tmpl);

						

		}
	}
}

WordPress läßt einen leider keine PHP Anfangs- und Endetags benutzen, bitte selbst hinzufügen.