CRM-service CIWS-Bibliothek

CRM-service CIWS-Bibliothek

Allgemeines

CRM-Service CIWS ist eine Client-Bibliothek, die als einfache Schnittstelle für die CIWS-API verwendet wird.
Um die CIWS-API zu verwenden, wird ein spezifischer API-Schlüssel für die gewählte CRM-service Instanz benötigt.

Voraussetzungen

  • .NET Framework 4.5 oder neuer

CrmManager

Namensraum: CRMservice.ciws.Manager
Namensraum: CRMservice.ciws.Manager.Default

Der CrmManager wird für den Zugriff auf Web-Services verwendet. Sie können eine benutzerdefinierte CrmManager-Klasse mit einer abstrakten CrmManagerBase-Klasse erstellen oder einen standard Namensraum verwenden.

Durch das Erstellen eines benutzerdefinierten CrmManagers können Sie benutzerdefinierte Methoden innerhalb der Klasse erstellen:

using CRMservice.ciws.Manager;

namespace Example
{
  public class CrmManager : CrmManagerBase
  {
   public CrmManager(string apiKey, string crmUrl)
   {
    StartSession(apiKey, crmUrl);
   }

   //custom methods
  }
}

Die Verwendung von CrmManager mit einer “Nutzungs-Anweisung” beendet die Sitzung nach den geschweiften Klammern:

using (var crm = new CrmManager(apiKey, crmUrl))
{
 //code
}

Sie können den CrmManager auch ohne “Nutzungs-Anweisung” verwenden:

var crm = new CrmManager();
crm.StartSession(apiKey, crmUrl);
//code
crm.EndSession();

Die Methode StartSession erstellt eine neue Sitzung, die für die Verwendung von CrmManager-Methoden benötigt wird. Die Sitzung ist ab dem letzten Aufruf der Methode oder bis zum Aufruf der EndSession-Methode für 1 Stunde aktiv.

StartSession-Methodenparameter:

  • ApiKey (string): Wird für die Authentifizierung in der CIWS API verwendet
  • CrmUrl (string): CRM-service Internetadresse
  • KeepSessionAlive (bool): Bei Verwendung wird die Sitzung basierend auf dem SessionTimeOut aktualisiert
  • SessionTimeOut (TimeSpan): Aktualisierungsintervall, um die Sitzung am Leben zu erhalten (Standardwert = 30 Minuten)

CrmObjekte

Namensraum: CRMservice.ciws.CrmObjects
Namensraum: CRMservice.ciws.CrmObjects.Default

Innerhalb des CrmObjects Namensraums finden Sie abstrakte Module mit permanenten Feldnamen. Sie können dies verwenden, um ein benutzerdefiniertes CrmObject zu erstellen, oder Sie können einen Standardnamespace verwenden. Bei den anderen Feldnamen wenden Sie sich bitte an Ihren Händler.

Diese Objekte können mit den Methoden ExtendedSearch oder BulkEntitySave verwendet werden. Wenn Sie nur wenige Felder aus dem Modul benötigen, sollten Sie ein benutzerdefiniertes Objekt erstellen. Wenn Sie benutzerdefinierte Felder verwenden müssen, müssen Sie ein benutzerdefiniertes CrmObject oder ein benutzerdefiniertes Objekt erstellen.

Benutzerdefiniertes CrmObject-Beispiel:

using CRMservice.ciws;
using CRMservice.ciws.CrmObjects;

namespace Examples
{
 public class CrmContact : CrmContactBase
 {
  [CrmFieldName("cf_1234")]
  public string TransferStatus;
 }
}

 

Beispiel für ein benutzerdefiniertes Objekt:

using CRMservice.ciws;

namespace Examples
{
 [CrmModule(Module.Contacts)]
 public class ContactData
{
  [CrmFieldName("crmid")]
  public int? ID;

  [CrmFieldName("firstname")]
  public string FirstName;

  [CrmFieldName("lastname")]
  public string LastName;

  [CrmFieldName("email")]
  public string Email;
 }
}

Methoden

Namensraum: CRMservice.ciws

class CrmSearch

Generisches Parameterobjekt, das mit ExtendedSearch verwendet wird.

  • Module (nicht benötigt): Überschreibt das Objekt [CrmModule] attribute
  • Fields[] (nicht benötigt): Überschreibt das Objekt [CrmFieldName] attributes
  • Conditions[] (benötigt): string “fieldname = ‘123’”
  • SortOrder (nicht benötigt): CrmSortOrder(string Feld enum SearchOrder)
  • Buffer (nicht benötigt): Maximale Batch-Größe eines einzelnen CIWS-API-calls
  • Limit (nicht benötigt): Maximale Anzahl der Ergebnisse, die die Suche liefern kann
  • Offset (nicht benötigt): Wenn der Offset nicht zugewiesen ist, werden die Ergebnisse in Batches mit Puffergröße durchsucht und zur Ergebnisliste zusammengefasst. Mit Versatz können Sie nach Chargen mit begrenzter Größe suchen und mit dem letzten Versatz fortfahren.

 

List<T> ExtendedSearch<T>(CrmSearch search) where T : class

Suchen Sie Daten aus dem CRM und ordnen Sie die Daten mit benutzerdefinierten Objekten zu.
Diese methode benutzt einen ExtendedSearchLimit webservice im Hintegrund.

  • CrmModule: Definiert, welches Modul verwendet wird
  • CrmFieldName: Ordnet das Feld dem CRM-Feld zu. Es werden nur zugeordnete Felder aus dem CRM durchsucht. Die Feldtypen, die Sie verwenden können, sind bool, float, double, int, string und DateTime (nullbare Typen sind ebenfalls gültig).

Methodenbeispiel:

using CRMservice.ciws;
using CRMservice.ciws.Manager.Default;
using System.Collections.Generic;

namespace Examples
{
 [CrmModule(Module.Contacts)]
 public class ContactData
 {
  [CrmFieldName("crmid")]
  public int? ID;

  [CrmFieldName("firstname")]
  public string FirstName;

  [CrmFieldName("lastname")]
  public string LastName;
 }

 class Program
 {
  public static string ApiKey = "...";
  public static string CrmUrl = "...";

  static void Main(string[] args)
  {
   var search = new CrmSearch()
   {
    Conditions = new string[] { "contact_code = 'DEBUG'" }
   };

   using (var crm = new CrmManager(ApiKey, CrmUrl))
   {
    var results = crm.ExtendedSearch<ContactData>(search);
   }
  }
 }
}

 

List<CrmObject> ExtendedSearch(CrmSearch search)

Suchen Sie Daten aus dem CRM und geben Sie die Daten mit generischen CrmObjects zurück.
Diese Methode verwendet einen ExtendedSearchLimit-Webservice im Hintergrund.

  • Sie müssen Module in CrmSearch-Parametern verwenden
  • Sie müssen Fields [] in CrmSearch-Parametern verwenden
  • CrmId: Nur definiert, wenn das Feld “crmid” durchsucht wird
  • Felder: Wörterbuch der Ergebnisfelder

Methodenbeispiel:

using CRMservice.ciws;
using CRMservice.ciws.DataObjects;
using CRMservice.ciws.Manager.Default;
using System.Collections.Generic;

namespace Examples
{
 class Program
 {
  public static string ApiKey = "...";
  public static string CrmUrl = "...";

  static void Main(string[] args)
  {
   var search = new CrmSearch()
   {
    Module = Module.Contacts,
    Fields = new string[] { "crmid", "firstname", "lastname" },
    Conditions = new string[] { "contact_code = 'DEBUG'" }
   };

   using (var crm = new CrmManager(ApiKey, CrmUrl))
   {
    var results = crm.ExtendedSearch(search);
   }
  }
 }
}

 

List<T> BulkEntitySave<T>(List<T> items)

Verwenden Sie benutzerdefinierte Objekte, um Daten im CRM zu aktualisieren oder neu zu erstellen.

  • CrmModule: Legt fest, welches Modul verwendet wird
  • CrmFieldName: Ordnet ein Feld einem CRM-Feld zu. Nur zugeordnete Felder werden im CRM gespeichert. Die Feldtypen, die Sie verwenden können, sind bool, float, double, int, string und DateTime (nullbare Typen sind ebenfalls gültig).
  • CrmFieldName(“crmid”): Null oder 0 erstellt einen neuen Eintrag oder einen vorhandenen Wertaktualisierungseintrag

Methodenbeispiel:

using CRMservice.ciws;
using CRMservice.ciws.Manager.Default;
using System.Collections.Generic;

namespace Examples
{
  [CrmModule(Module.Contacts)]
  public class ContactData
  {
   [CrmFieldName("crmid")]
   public int? ID;

   [CrmFieldName("firstname")]
   public string FirstName;

   [CrmFieldName("lastname")]
   public string LastName;
  }

  class Program
  {
   public static string ApiKey = "...";
   public static string CrmUrl = "...";

   static void Main(string[] args)
   {
    var contact = new ContactData()
    {
     ID = 123,
     FirstName = "John",
     LastName = "Doe"
    };

   var contacts = new List<ContactData>();
   contacts.Add(contact);

   using (var crm = new CrmManager(ApiKey, CrmUrl))
   {
    var results = crm.BulkEntitySave<ContactData>(contacts);
   }
  }
 }
}

List<CrmObject> BulkEntitySave(Module module, List<CrmObject> items)

Verwenden Sie CrmObjects, um Daten im CRM zu aktualisieren oder neu zu erstellen.

  • Modulparameter legt fest, welches Modul verwendet wird
  • CrmId: Null oder 0 erstellt einen neuen Eintrag oder einen vorhandenen Wertaktualisierungseintrag
  • Fields: Wörterbuch der Felder, die in CRM gespeichert sind

Methodenbeispiel:

using CRMservice.ciws;
using CRMservice.ciws.DataObjects;
using CRMservice.ciws.Manager.Default;
using System.Collections.Generic;

namespace Examples
{
 class Program
 {
  public static string ApiKey = "...";
  public static string CrmUrl = "...";

  static void Main(string[] args)
  {
   var contact = new CrmObject();
   contact.CrmId = 123;
   contact.Fields["firstname"] = "John";
   contact.Fields["lastname"] = "Doe";

   var contacts = new List<CrmObject>();
   contacts.Add(contact);

   using (var crm = new CrmManager(ApiKey, CrmUrl))
   {
    var results = crm.BulkEntitySave(Module.Contacts, contacts);
   }
  }
 }
}

 

Erweiterte Optionen

Namensraum: CRMservice.ciws.Settings

Jeder Webservice-Manager hat eine Standard-Nachrichtenpuffergröße: UInt16.MaxValue.
Wenn die aufgerufene CIWS-API-Antwort größer als die Nachrichtenpuffergröße ist, wird eine Ausnahme ausgelöst.

CrmSettings.[manager name].SetBuffer(int value)

Ändert die globale Puffergröße für den ausgewählten Manager.

SetBuffer Beispiel:

using CRMservice.ciws.Settings;

namespace Examples
{
 class Program
 {
  static void Main(string[] args)
  {
   CrmSettings.SearchManager.SetBuffer(int.MaxValue);

   //code
  }
 }
}

 

Alle verfügbaren Methoden

Alle verfügbaren Methoden finden Sie auf der Dokumentationsseite zum CRM Integrations Web Service:

https://yourCrmSite/CrmIntegrationWebservice/service.php?class=documentation

Combined Shape