2016-03-26 3 views
0

Ich habe versucht, alle Kontakte aus Outlook 365 in eine andere Datenbank importieren. Ich habe kein Problem, alle Namen, E-Mails, Adressen, etc.Kontakt Notizen aus Outlook 365 mit REST API nicht erhalten

Aber wenn ich die Notizen, die auf der zweiten Seite der Kontakte in Outlook 365 befinden, kommen sie leer sind.

Ich bin mit PHP-Code, die API mit dieser URL aufrufen:

https://outlook.office.com/api/v2.0/Me/Contacts 

ohne besondere Parameter. Alle Login, Token, etc. Teil ist gepflegt und funktioniert ordnungsgemäß.

Hier ist ein Beispiel der Anordnung, die ich zur Zeit mit print_r von meinem Anruf erhalten:

Array ([Id] => ... [CreatedDateTime] => ... [LastModifiedDateTime] => ... [ChangeKey] => ... [Kategorien] => Array ([0] => ...) [ParentFolderId] => ... [Geburtstag] => [FileAs] => ... [DisplayName] => ... [GivenName] => ... [Initialen] => [MiddleName] => [Spitzname] => ... [Nachname] => ... [Titel] => [ YomiGivenName] => [YomiSurname] => [YomiCompanyName] => [Generierung] => [EmailAddresses] => Array ([0] => Array ([Name] => ... [Adresse] => ...)) [ImAddresses] => Array() [JobTitle] => ... [Firmenname] => ... [Abteilung] => [OfficeLocation] => ... [Beruf] => [BusinessHomePage] => ... [AssistentName] => [Manager] => [HomePhones] => Array() [MobilePhone1] => ... [BusinessPhones] => Array ([0] => ...) [HomeAdresse] => Array() [BusinessAddress] => Array ([Straße] => ... [Stadt] => ... [Bundesland] => .. . [LandOrRegion] => ... [PostalCode] => ...) [AndereAdresse] => Array() [EhepartnerName] => [PersonalNotes] => [Kinder] => Array())

`PersonalNotes 'sind jedes Mal leer, auch wenn die Notizen in der Kontakte enthalten viel Text.

Die Funktion des API-Aufruf macht, ist diese:

public function makeApiCall($method, $url, $payload = NULL) { 
    // Generate the list of headers to always send. 
    $headers = array(
    "User-Agent: outlook/1.0",   // Sending a User-Agent header is a best practice. 
    "Authorization: Bearer ".$this->access_token, // Always need our auth token! 
    "Accept: text/*, application/xml, application/json; odata.metadata=none",    // Always accept JSON response. 
    "client-request-id: ".self::makeGuid(), // Stamp each new request with a new GUID. 
    "return-client-request-id: true",  // Tell the server to include our request-id GUID in the response. 
    "X-AnchorMailbox: ".$this->user_email   // Provider user's email to optimize routing of API call 
); 
    // print_r($headers); 
    $curl = curl_init(); 

    switch(strtoupper($method)) { 
    case "GET": 
     error_log("Doing GET"); 
     break; 
    case "POST": // PAYLOAD POUR POST DOIT ETRE json_encode!!! 
     error_log("Doing POST"); 
     $headers[] = "Content-Type: application/json"; 
     curl_setopt($curl, CURLOPT_POST, true); 
     curl_setopt($curl, CURLOPT_POSTFIELDS, $payload); 
     break; 
    case "PATCH": 
     error_log("Doing PATCH"); 
     $headers[] = "Content-Type: application/json"; 
     curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PATCH"); 
     curl_setopt($curl, CURLOPT_POSTFIELDS, $payload); 
     break; 
    case "DELETE": 
     error_log("Doing DELETE"); 
     curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE"); 
     break; 
    default: 
     error_log("INVALID METHOD: ".$method); 
     exit; 
    } 

    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
    $response = curl_exec($curl); 
    error_log("curl_exec done."); 

    $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); 
    if ($httpCode >= 400) { 
    return array('errorNumber' => $httpCode, 
       'error' => 'Request returned HTTP error '.$httpCode); 
    } 

    $curl_errno = curl_errno($curl); 
    $curl_err = curl_error($curl); 

    if ($curl_errno) { 
    $msg = $curl_errno.": ".$curl_err; 
    error_log("CURL returned an error: ".$msg); 
    curl_close($curl); 
    return array('errorNumber' => $curl_errno, 
       'error' => $msg); 
    } 
    else { 
    error_log("Response: ".$response); 
    curl_close($curl); 
    return json_decode($response, true); 
    } 
} 

Jede Hilfe wäre sehr dankbar, danke!

Antwort

0

Interessant. Ich sehe das auch, aber nur, wenn ich die Notiz in Desktop Outlook setze. Wenn ich es in Outlook Web App einstelle, funktioniert es gut. Ich kann sogar das "kaputte" in OWA bearbeiten und es repariert es.

So als eine temporäre Antwort können Sie die Kontakte in OWA bearbeiten, um sie zu beheben. Ich werde diese Antwort aktualisieren, sobald ich eine bessere Antwort habe.

+0

Danke, für dieses Projekt haben wir nur jemanden, der ein paar Stunden damit verbringt, auf Edit-Save auf 2000s Kontakte zu klicken, zumindest funktioniert es. Ich bin definitiv auf eine andere Antwort schließlich interessiert, weil wir wahrscheinlich dieses in der Zukunft wieder verwenden werden. – user3242224

Verwandte Themen