Auslesen von Abonnentenfeldern - GetSubscriberFields

Request-Parameter: SubscriberFieldRequest
Response-Parameter: SubscriberFieldResponse

Für das Importierten, oder auch für das Exportieren wird die Information benötigt, welche Felder importiert/exportiert werden. Es ist notwendig, zu wissen, welche Felder in mailworx aktuell konfiguriert sind. Diese Information bzw. diese Felder liefert die Methode GetSubscriberFields.

Das Request-Objekt benötigt (natürlich neben den Login-Daten) lediglich die Information, welche Felder ausgelesen werden sollen. Hier existiert die Möglichkeit, lediglich die konfigurierbaren Felder (Vorname, Nachname, E-Mail, Geburtsdatum,…), die Metafelder (Optin, Registrierungsdatum, …) oder beides Feldtypen auszulesen.

Das Response-Objekt beinhaltet ein Array mit den ausgelesenen Feldern.
Field ist lediglich eine abstrakte Basisklasse. Bei der Verwendung der Felder müssen die Klassen des entsprechend gewünschten Datentyps eingesetzt werden.

Durch die Datentyp-spezifischen-Objekte werden entsprechende Konvertierungen durchgeführt. Da mailworx Auswahlfelder unterstützt existiert ein besonderer Datentyp/besonderes Field SelectionField, welche für sich ein Array (SelectionObjects) vom Typ SelectionFieldElement besitzt.
Ein Feld besteht aus einem UntypedValue (der Wert des Feldes) einem InternalName (der Interne Name der von mailworx vergeben wird) und einer Caption (dem Namen für die Benutzeroberfläche in der entsprechenden Sprache des Requests).

Codebeispiel
MailworxWebServiceAgent agent = new MailworxWebServiceAgent();
//configure request
SubscriberFieldRequest request = new SubscriberFieldRequest();
request.SecurityContext = GetSecurityContext();
//The captions should be in german!
request.Language = "DE";
//Just return the custom fields
request.FieldType = FieldType.CustomInformation;

//Get the fields
agent.Timeout = 3600000;
SubscriberFieldResponse response = agent.GetSubscriberFields(request);
foreach (Field field in response.Fields) {
	Console.WriteLine("Caption: {1}; Value: {2}",
	field.DisplayName,
	field.UntypedValue);
	//If Selectionfield -> Show selections
	if (field.GetType() == typeof(SelectionField)) {
		Console.WriteLine("Selections:");
		foreach (SelectionFieldElement sf in (field as SelectionField).SelectionObjects) {
			Console.Write(sf.Caption + ", ");
		}
	}
}