Adressbuchsync über die API

111 views
Skip to first unread message

Kai Thormann

unread,
Nov 9, 2014, 7:22:25 AM11/9/14
to sipga...@googlegroups.com
Da Sipgate ja bisher keinerlei sync Möglichkeiten für das Adressbuch anbietet, habe ich über legt, ob man das über die API selber herstellen koennnte.

Idee war, das Adressbuch über einen cronejob regelmäßig zu leeren und mit der Datenquelle (Google oder office 365) neun zu beschreiben. Also kein richtiges sync, aber die Änderungen würden in das Sipgate Adressbuch übernommen.

Wenn ich richtig lese, ist ueber die API aber nur ein auslesen des Adressbuch möglich, kein löschen/befüllen....

??

Michael Rotmanov

unread,
Nov 12, 2014, 4:29:43 AM11/12/14
to sipga...@googlegroups.com
Guten Morgen,

für das Produkt sipgate team kann die entsprechende XMLRPC-API Kontakte holen, setzen und löschen.
Die Methoden dazu lauten samurai.PhonebookEntryGet, samurai.PhonebookEntrySet und samurai.PhonebookEntryDelete
Eine umfassende Dokumentation befindet sich unter http://www.sipgate.de/static/sipgate.de/downloads/api/sipgate_API.pdf

Für sipgate basic und plus stehen diese Methoden leider nicht zur Verfügung.

Wenn Sie lieber mit REST arbeiten, empfehle ich Ihnen den XMLRPC-Proxy, den ich unter https://groups.google.com/d/msg/sipgate-api/XQPsR7dOAMs/ZEffFeIsmtEJ näher beschrieben habe.

Ich würde mich sehr freuen, wenn Sie Ihren Adressbuchsync mit uns hier teilen würden.

Beste Grüße
Michael Rotmanov
-
sipgate GmbH - Gladbacher Str. 74 - 40219 Düsseldorf
HRB Düsseldorf 39841 - Geschäftsführer: Thilo Salmon, Tim Mois
Steuernummer: 106/5713/2881, Umsatzsteuer-ID: DE219349391

rootuser

unread,
Sep 29, 2016, 2:26:31 PM9/29/16
to sipgate API, rotm...@sipgate.de
Hallo,

der Thread ist zwar uralt, aber ich habe dazu eine Frage:

Ich versuche verzweifelt, die o.g. Funktionalität herzustellen. Ich kann die Funktionen samurai.PhonebookEntryGet und samurai.PhonebookEntryDelete auch problemlos benutzen, jedoch scheitert es bei samurai.PhonebookEntrySet.
Es will mir einfach nicht gelingen, einen Kontakt zu schreiben. Zwar liefert mein Aufruf die Rückmeldung '200 /  Method success', aber der Kontakt taucht nie im Adressbuch auf.
Mittlerweile ist mir aufgefallen, dass ich im Prinzip beliebige Strings senden kann, und trotzdem kommt immer die Erfolgsmeldung.

Kann vielleicht jemand ein funktionierendes Beispiel liefern (Quellcode, am liebsten PHP)? 

Vielen Dank!
Gruß, Tom

Ramón Janßen

unread,
Sep 30, 2016, 4:28:26 AM9/30/16
to sipgate API, rotm...@sipgate.de
Hallo Tom,

ich mache das so:
<?php
/* Festlegen von vorgegebenen Werten */
 define ('SIPGATE_SERVER',  'samurai.sipgate.net');
 define ('SIPGATE_PATH',  '/RPC2');

 define ('SIPGATE_USER',  'Benutzer');
 define ('SIPGATE_PASS',  'passwort');


 /* Server Verbindung öffnen, SSL auf Port 443 */
 if(($f = fsockopen('ssl://' . SIPGATE_SERVER, 443, $errno, $errstr, 5)) === FALSE) echo 'Fehler '. $errno . ': ' . $errstr;
 else {
  $xml_data =
    '<?xml version ="1.0" encoding="UTF-8"?>
    <methodCall>
    <methodName>samurai.PhonebookEntrySet</methodName>
    <params>
    <param>
    <value><struct>
    <member>
    <name>EntryList</name>
    <value>
    <array><data>
    <value><struct>
<member><name>Entry</name><value><string>BEGIN:VCARD
VERSION:2.1
N:Mustermann;Erika;;Dr.;
FN:Dr. Erika Mustermann
TEL;WORK;VOICE:(0221) 9999123
END:VCARD</string></value></member>
    </struct></value>
    </data></array>
    </value>
    </member>
    </struct></value>
    </param>
    </params>
    </methodCall>';

   /* Sende POST Request */
   fputs($f,  'POST ' . SIPGATE_PATH . ' HTTP/1.0' . "\r\n" .
    'Authorization: Basic ' . base64_encode(SIPGATE_USER . ':' . SIPGATE_PASS) . "\r\n" .
    'Host: sipgate.net' . "\r\n" .
    'User-Agent: PHPxmlParser' . "\r\n" .
    'Content-type: text/xml' . "\r\n" .
    'Content-Length: '. strlen($xml_data) . "\r\n" .
    'Connection: close' . "\r\n" . "\r\n");


   /* Sende XML-Daten */
   fputs($f,  $xml_data);


   /* Rückgabe vom Zielserver sammeln */
   $ret = '';


   while(!feof($f))
   {
     $ret .= fread($f, 1024);
   }


   /* Rückgabe in Header und XML trennen */
   list($header, $xml_response) = explode("\r\n\r\n", $ret);
   
   echo $header;
   echo "\n\n";
   echo $xml_response;
 }
?>

und es klappt prima :)

Viele Grüße
Ramón

rootuser

unread,
Oct 4, 2016, 8:08:50 AM10/4/16
to sipgate API, rotm...@sipgate.de
Hallo Ramón,

vielen Dank für Deine Antwort; damit hast Du mir weitergeholfen!
Das Problem bei mir war, dass das Parameter-Objekt bei der Anfrage nicht korrekt war; das funktionierende Beispiel hat mir auf die Sprünge geholfen... ;-)

Gruß, Tom

Kai Thormann

unread,
Oct 8, 2016, 7:56:31 AM10/8/16
to sipgate API, rotm...@sipgate.de
@ rootuser: Wenn Du etwas funktionelles hin zum Adressbuch-Sync hinbekommen hast würden sich über ein teilen sicher einige User freuen...

Kai Thormann

unread,
Oct 8, 2016, 7:57:39 AM10/8/16
to sipgate API, rotm...@sipgate.de
Reply all
Reply to author
Forward
0 new messages