Hallo!
Wir versuchen unser Exchange-Addressbuch automatisch mit dem von Starface abzugleichen. Dazu schien uns die aktuelle C# Integrations-API via .NET Remoting gut geeignet (siehe Demo-Projekt von Wolfang in Entwicklung c# .net).
Die Demo-Anwendung funktioniert auch prima, aber nun wollte ich mit folgendem Code mal einen Testeintrag im Addressbuch anlegen:
Jetzt habe ich zum Test mal folgenden Codeschnipsel ausgeführt:
m_uccAddressBookRequests = new UccAddressbookRequestsClient(m_binding, tcpEndpointAddress);
// Neuen Kontakt unter einer Addressbuch-Registerkarte anlegen
{
UccAddressbookTag[] tags = m_uccAddressBookRequests.GetTags(string.Empty);
// tags[*].Alias == Registerkartenname, z.B. "Firmenkunden"
// tags[*].Name == Internet Pfad, z.B. "folder/1"
// tags[*].ID == UUID der Registerkarte
var eineGueltigeTagId = "c81e728d-9d4c-3f63-af06-7f89cc14862c";
string contactId = Guid.NewGuid().ToString();
// CreateContact()-Methode erzeugt neues Objekt, traegt aber noch nicht ein
// Hier kann man dann wohl noch weitere Felder ergaenzen
UccAddressbookEntry entry = m_uccAddressBookRequests.CreateContact(
contactId,
"TestHannes",
"TestMeier",
"+49 6451 123456",
searchForExistingContact: false,
tagId: eineGueltigeTagId,
languageId: string.Empty
);
// Neuen Addressbucheintrag hinzufuegen
m_uccAddressBookRequests.PutContactDetails(entry, createNewContact: true);
}
Alles anzeigen
Dabei schleudert der UCC Client aber eine NullReferenceException zurück, scheinbar bei dem Versuch, das Addressbuch-Tag zu deserialisieren:
NullReferenceException
bei ReadUccAddressbookAttributeFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString[] , XmlDictionaryString[] )
bei System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)
bei System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract& dataContract)
bei System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Int32 id, RuntimeTypeHandle declaredTypeHandle, String name, String ns)
bei ReadArrayOfUccAddressbookAttributeFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString , XmlDictionaryString , CollectionDataContract )
Ich habe schon einige Variationen durchprobiert (z.B. default-UccAddressBookTag benutzen, null übergeben, Array der Größe 0 übergeben), ohne Erfolg.
Könnte es sein dass die UccWrapper.dll (ich verwende Version 6.4.3.159 aus dem gelinkten Thread) nicht mehr mit dem aktuellen UCC Softphone kompatibel ist? Oder evtl. noch ein Problem (ich glaube die UccAddressBookTags sind erst kürzlich eingebaut worden)?