> For the complete documentation index, see [llms.txt](https://docs.pascom.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.pascom.net/integrations/connector/variables-structure.md).

# Strukturbeispiele

Lernen Sie wie externe Daten im Connector den Systemvariablen zugeordnet werden.

Im Reiter **Struktur** des Connectors müssen nun die im Vorfeld definierten Variablen [(Anleitung hier)](/integrations/connector/variables-assignment.md) den **Systemvariablen** der PASCOM Telefonanlage zugeordnet werden. Hier wird nun bestimmt, wohin der Connector die importierten Daten übergeben soll.

## Berufsbezeichnung eines Benutzers im Notizfeld des PASCOM Telefonbuches

In folgendem Abschnitt folgen wir dem Beispiel aus der **Variablen Zuordnung** und üergeben die Berufsbezeichnung eines Benutzers in das PASCOM Telefonbuch.

**Ergänzen Sie hierzu die Zeilen:**

```
      "028pho_notes" : "{{{job}}}"
```

**in der Struktur:**

```
    {
      "identity": [{

        "003use_bez": "{{{displayname}}}",
        "003use_name": "{{{username}}}",
        "003use_pw": "{{{password}}}",
        "011acc_pin": "{{{pin}}}",
        "009ext_extension": "{{{phone}}}",
        "016voi_email": "{{{email}}}"          
        ,"post": {
          "phonebook": [{
            "028pho_bez" :  "{{{displayName}}}",
            "028pho_firstname" :  "{{{givenName}}}",
            "028pho_lastname" : "{{{surname}}}",
            "028pho_email" :  "{{{email}}}",
            "028pho_notes" :  "{{{job}}}"
          }]
        }
      }]
    }
```

Dadurch wird der Wert der Variablen **job** an die Systemvariable **028pho\_notes** übergeben und befüllt dadurch das Notizfeld im Telefonbuch eines Benutzers mit der Berufsbezeichnung.

Mit dieser Art des Mappings lassen sich importierte Daten individuell Zuordnen.

## Rollenzuweisung

Um Benutzer direkt beim Import einer Rolle zuweisen zu können muss die Struktur um die Rollenzuweisung erweitert werden. Sie können die zugehörigen Benutzerrollen aus einer Variable **memberOf** auslesen.

Fügen Sie hierzu im Reiter **Variablen** folgende Zeile durch **Hinzufügen** ein:

**Variable:** rollen

**Optionaler Filter:**

```
//Fill in the roles you want to filter (rolesToFilter) like this:
//array('Rolle1', 'Rolle2');          

$rolesToFilter=array();          
$output=array();

if(empty($rolesToFilter))
    return $output;

$src = $row['memberOf'];

if(!is_array($src)) {
  $src = array($src);
}

foreach($src as $group) {
  $list = explode(',', str_replace(array('[', ']', 'CN=', 'DC=', '"'), '', $group));
  foreach($list as $elem) {
    if(in_array($elem, $rolesToFilter)) {
      $output[]=$elem;
    }
  }
}

return $output;
```

Das Feld "rollen" entspricht einer Liste an Rollen, denen der Benutzer zugeordnet werden soll. Über das Benutzerfeld "memberOf" können Sie die Rollen in PASCOM bestimmen. Durch diese Zeile kann der Connector die Mitgliedszuweisung auslesen und in dem Benutzerrollen PASCOM Feld zuordnen.

{% hint style="info" %}
Tragen Sie in der PHP-Variable `rolesToFilter` im Code des *Quelle* Feldes, die Rollenbezeichnungen ein, nach denen der Connector suchen soll. Alle anderen Mitgliedszuweisungen werden ignoriert.\
Beispiel: `array('Rolle1', 'Rolle2');`
{% endhint %}

**Ergänzen Sie hierzu die Zeilen:**

```
    {{#if rollen}}
      ,"user_roles": [
        {{#each rollen}}
        "{{this}}",
        {{/each}}
        "All Users"
      ],
    {{/if}}
```

**in der Struktur:**

```
{
  "identity": [{

    "003use_bez": "{{{displayname}}}",
    "003use_name": "{{{username}}}",
    "003use_auth_method": "EXTERN",
    "011acc_pin": "{{{pin}}}",
    "009ext_extension": "{{{phone}}}",
    "016voi_email": "{{{email}}}",
  {{#if rollen}}
    ,"user_roles": [
      {{#each rollen}}
      "{{this}}",
      {{/each}}
      "default"
    ],
  {{/if}}
    "post": {
      "phonebook": [{
        "028pho_bez":       "{{{displayname}}}",
        "028pho_firstname": "{{{givenname}}}",
        "028pho_lastname":  "{{{surname}}}",
        "028pho_email":     "{{{email}}}"
      }]
    }
  }]
}
```

{% hint style="info" %}
Die Rolle "default" entspricht der System-Rolle "Alle", der alle Benutzer zugewiesen sind.
{% endhint %}

## Labels importieren

PASCOM Labels lassen sich auch dazu nutzen zusätzliche Informationen mit im PASCOM Firmentelefonbuch anzuzeigen.

In diesem Beispiel möchten wir die Kundennummer des Kontakts im Label **Kundennummer** abspeichern. Dieses Label ist dann nicht nur im Telefonbuch sondern auch in Journaleinträgen oder diversen Anruferinformationen sichtbar.

**Label anlegen**

Labels legen Sie im Menü **Anrufverteilung** > **Anruf Labels** durch Klicken auf die Schaltfläche **Hinzufügen** an.

Wählen Sie **Generisches Label**, vergeben Sie den Namen **Kundennummer** und klicken auf **Speichern**.

Wenden Sie ausstehende Jobs an um das Label anzulegen.

**Connector Profil anpassen**

Fügen Sie hierzu im Reiter **Variablen** folgende Zeile durch **Hinzufügen** ein:

| Variable       | Quelle                           |
| -------------- | -------------------------------- |
| customernumber | `return $row['customerNumber'];` |

Durch diese Zeile speichert der Connector den Inhalt der Quellvariable "customerNumber" in der Variable "customernumber" ab.

Diese Variable muss nun unter **Struktur** dem Label **Kundennummer** PASCOM Feld zugeordnet werden.

**Ergänzen Sie hierzu die Zeilen:**

```
"post": {
  "phonebook.phonebooklabel": [
    {
      "050lab_bez": "Kundennummer",
      "028050pholab_value": "{{{customernumber}}}"
    }
  ]
}
```

**in der Struktur:**

```
{
  "phonebook": [{
    "028pho_bez" : 			"{{{displayname}}}",
    "028pho_phone" : 		"{{{phone}}}",
    "028pho_firstname" : 	"{{{givenname}}}",
    "028pho_lastname" : 	"{{{surname}}}",
    "028pho_organisation" : "{{{organisation}}}",
    "028pho_email" : 		"{{{email}}}",
    "028pho_mobile" : 		"{{{mobile}}}",
    "028pho_homephone" : 	"{{{homephone}}}",
    "028pho_fax" : 			"{{{fax}}}",
    "post": {
      "phonebook.phonebooklabel": [
        {
          "050lab_bez": "Kundennummer",
          "028050pholab_value": "{{{customernumber}}}"
        }
      ]
    }
  }]
}
```

Dadurch wird jedem Kontakt mit eingetragener Kundennummer das Label **Kundennummer** mit dem entsprechenden Wert zugeteilt.

**Ergebnis prüfen**

{% hint style="info" %}
Label-Zuordnungen werden NICHT unter "Speichern und Simulieren" mit angezeigt
{% endhint %}

Prüfen Sie die erfolgreiche Zuordnung des Labels in der PASCOM Web-UI unter **Benutzer** > **Telefonbuch** indem Sie einen entsprechenden Kontakt **Bearbeiten** und die Zuordnung im Reiter **Labels** prüfen. Alternativ können Sie auch das Firmentelefonbuch in der PASCOM App einsehen.

## Softphone dem Benutzer hinzufügen

Um Benutzer direkt beim Import ein Softphone zuweisen zu können muss die Struktur um die Endgerätezuweisung erweitert werden. Einige Connectoren bringen bereits eine implementierte Lösung mit, welche man direkt in den Basiseinstellungen nutzen kann.

Fügen Sie hierzu im Reiter **Variablen** folgende Zeile durch **Hinzufügen** ein:

**Variable:** createSoftphone

1. **Wichtig:** Der Wert der Variable createSoftphone muss in der Quellvariable dem Wert **"ja"** entsprechen (oder einem von Ihnen festgelegten Wert).

**Ergänzen Sie hierzu die Zeilen:**

```
    {{#if createSoftphone}}
      ,"ipdevice.mdsoftphone": [{
        "010dev_bez": "{{username}}_softphone"
        }]
    {{/if}}
```

**in der Struktur:**

```
{
  "identity": [{

    "003use_bez": "{{{displayname}}}",
    "003use_name": "{{{username}}}",
    "003use_auth_method": "EXTERN",
    "011acc_pin": "{{{pin}}}",
    "009ext_extension": "{{{phone}}}",
    "016voi_email": "{{{email}}}",
  {{#if rollen}}
    ,"user_roles": [
      {{#each rollen}}
      "{{this}}",
      {{/each}}
      "default"
    ],
  {{/if}}
    "post": {
      "phonebook": [{
        "028pho_bez":       "{{{displayname}}}",
        "028pho_firstname": "{{{givenname}}}",
        "028pho_lastname":  "{{{surname}}}",
        "028pho_email":     "{{{email}}}"
      }]
    }
  }]

    {{#if createSoftphone}}
      ,"ipdevice.mdsoftphone": [{
        "010dev_bez": "{{username}}_softphone"
        }]
    {{/if}}
}
```

Dadurch wird jedem Benutzer mit eingetragenem Wert **"ja"** in der createSoftphone Variable ein Softphone zugeteilt.

## Mobilgerät dem Benutzer hinzufügen

Um Benutzer direkt beim Import ein Mobilgerät zuweisen zu können muss die Struktur um ein PASCOM Mobilgerät erweitert werden. Einige Connectoren bringen bereits eine implementierte Lösung mit, welche man direkt in den Basiseinstellungen nutzen kann.

Fügen Sie hierzu im Reiter **Variablen** folgende Zeile durch **Hinzufügen** ein:

**Variable:** createMobile

1. **Wichtig:** Der Wert der Variable createMobile muss in der Quellvariable dem Wert **"ja"** entsprechen (oder einem von Ihnen festgelegten Wert).

**Ergänzen Sie hierzu die Zeilen:**

```
{{#if createMobile}}
  ,"mobile": [{
    "010dev_bez": "{{username}}_mobile",
    "010dev_caption": "{{displayname}} - mobile",
    "072mob_number": "{{mobile}}"
    }]
{{/if}}
```

**in der Struktur:**

```
{
  "identity": [{

    "003use_bez": "{{{displayname}}}",
    "003use_name": "{{{username}}}",
    "003use_auth_method": "EXTERN",
    "011acc_pin": "{{{pin}}}",
    "009ext_extension": "{{{phone}}}",
    "016voi_email": "{{{email}}}",
  {{#if rollen}}
    ,"user_roles": [
      {{#each rollen}}
      "{{this}}",
      {{/each}}
      "default"
    ],
  {{/if}}
    "post": {
      "phonebook": [{
        "028pho_bez":       "{{{displayname}}}",
        "028pho_firstname": "{{{givenname}}}",
        "028pho_lastname":  "{{{surname}}}",
        "028pho_email":     "{{{email}}}"
      }]
    }
  }]

    {{#if createSoftphone}}
      ,"ipdevice.mdsoftphone": [{
        "010dev_bez": "{{username}}_softphone"
        }]
    {{/if}}

    {{#if createMobile}}
    ,"mobile": [{
    "010dev_bez": "{{username}}_mobile",
    "010dev_caption": "{{displayname}} - mobile",
    "072mob_number": "{{mobile}}"
    }]
    {{/if}}
}
```

Dadurch wird jedem Benutzer mit eingetragenem Wert **"ja"** in der createMobile Variable ein Mobilgerät zugeteilt.

## Aktionsvorlage zuweisen bei Benutzerimport

Um Benutzer direkt beim Import eine Aktionsvorlage zuweisen zu können muss die **Identity-Struktur** erweitert werden. Diese Funktion beschränkt sich aktuell nur auf den **Ruftyp - Nachher** der Aktionsvorlage. Dies gilt für **externe** sowohl für **interne** Telefonie.

Fügen Sie hierzu im Reiter **Variablen** folgende Zeile durch **Hinzufügen** ein:

**Variable:** action\_post\_ext oder action\_post\_int

1. **Wichtig:** Der Wert der Variable **action\_post\_ext** oder **action\_post\_int** muss in der Quellvariable dem **Namen der Aktionsvorlage** entsprechen. (z.B. Own Voicemailbox)

**Ergänzen Sie hierzu die Zeilen:**

```
    "action_post_ext":	"{{{action_post_ext}}}",
    "action_post_int":	"{{{action_post_int}}}",
```

**in der Struktur:**

```
{
  "identity": [{

    "003use_bez": "{{{displayname}}}",
    "003use_name": "{{{username}}}",
    "003use_auth_method": "EXTERN",
    "011acc_pin": "{{{pin}}}",
    "009ext_extension": "{{{phone}}}",
    "016voi_email": "{{{email}}}",
    "action_post_ext":	"{{{action_post_ext}}}",
    "action_post_int":	"{{{action_post_int}}}",
  }]
}
```

Dadurch wird jedem Benutzer beim Import die entsprechende Aktionsvorlage zugeteilt.

## Benutzer einer Warteschlange zuweisen

Um Benutzer direkt beim Import einer Warteschlange zuzuweisen muss im **"Post"** Bereich eine neue Variable **"identity.queue\_membership"** hinzugefügt werden. Wichtig dabei, die Warteschlange muss vorher bereits existieren.

Fügen Sie hierzu im Reiter **Variablen** folgende Zeile durch **Hinzufügen** ein:

**Variable:** queue

1. **Wichtig:** Der Wert der Variable **queue** muss in der Quellvariable dem **Namen der Warteschlange** entsprechen. (z.B. Sales)

**Ergänzen Sie hierzu die Zeilen:**

```
    ,"identity.queue_membership": [
      {
        "029tea_bez": "{{queue}}",
        "011029acctea_pos": "1",
        "011029acctea_dynamic": "0",
        "011029acctea_penalty": "0"
      }          
    ]
```

**in der Struktur:**

```
{
  "identity": [{

    "003use_bez": "{{{displayname}}}",
    "003use_name": "{{{username}}}",
    "003use_auth_method": "EXTERN",
    "011acc_pin": "{{{pin}}}",
    "009ext_extension": "{{{phone}}}",
    "016voi_email": "{{{email}}}",
  {{#if rollen}}
    ,"user_roles": [
      {{#each rollen}}
      "{{this}}",
      {{/each}}
      "default"
    ],
  {{/if}}
    "post": {
      "phonebook": [{
        "028pho_bez":       "{{{displayname}}}",
        "028pho_firstname": "{{{givenname}}}",
        "028pho_lastname":  "{{{surname}}}",
        "028pho_email":     "{{{email}}}"
      }]
      ,"identity.queue_membership": [
      {
        "029tea_bez": "{{queue}}",
        "011029acctea_pos": "1",
        "011029acctea_dynamic": "0",
        "011029acctea_penalty": "0"
      }]
    }
  }]

    {{#if createSoftphone}}
      ,"ipdevice.mdsoftphone": [{
        "010dev_bez": "{{username}}_softphone"
        }]
}
```

Dadurch wird der Benutzer beim Import der entsprechenden Warteschlange zugeteilt.

## Syntaxfehler, JSON ist ungültig beheben

Es kann vorkommen, das beim Import bestimmte Zeichen wie **", :, ,** einen Syntaxfehler verursachen, was die JSON Datei ungültig macht. Im folgenden Beispiel wollen wir einen Wert in Anführungszeichen importieren (Foo):

```
{
"phonebook": [{
"028pho_bez" : "Blaa "Foo" baar test",
"028pho_phone" : "",
"028pho_firstname" : "Blaa "Foo" baar",
"028pho_lastname" : "test",
"028pho_organisation" : "",
"028pho_email" : "",
"028pho_mobile" : "",
"028pho_homephone" : "",
"028pho_fax" : "",
"011acc_id": ""
}]
}
```

**Lösung:** Entfernen Sie bei der Variable 1 der 3 Akkoladen (geschweiften Klammern), damit der Connector die fehlerverursachenden Zeichen nicht mehr beachtet. Der Syntaxfehler sollte damit behoben sein.

**{{displayname}}** statt {{{displayname}}}

```
    "post": {
      "phonebook": [{
        "028pho_bez":       "{{displayname}}",
        "028pho_firstname": "{{{givenname}}}",
        "028pho_lastname":  "{{{surname}}}",
        "028pho_email":     "{{{email}}}"
      }]
    }
  }]
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.pascom.net/integrations/connector/variables-structure.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `build a script that syncs our docs to a CMS` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
