> 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/operations/analytics/statistics-custom.md).

# Analytics Anpassungen

Nachdem Sie sich mit den Grundlagen von PASCOM Analytics vertraut gemacht haben können Sie hier lernen wie Sie eigene Anpassungen vornehmen können.

## Übersicht

{% hint style="info" %}
Sie können nur Datenbankabfragen anpassen! Die Datenquellen für **Live-Dashboard** werden von PASCOM **statisch** generiert.
{% endhint %}

Mit PASCOM Analytics können Sie nicht nur eigene Dashboards mit vorhanden Graphen erstellen, sondern auch die darunterliegenden Datenquellen. frei anpassen.

**Voraussetzung** dafür ist, dass Sie mit den **Grundlagen von PASCOM Analytics** sowie **SQL** vertraut sind.

## Einstieg

Die einfachste Möglichkeit die verwendeten SQL Abfragen zu verstehen ist, vorhandene Grafen zu editieren. Kopieren Sie hierzu zunächst ein vorhandenes Dashboard (Siehe [Neues Dashboard erstellen](/operations/analytics/statistics.md#neues-dashboard-erstellen)). Danach können Sie Graphen und Tabellen editieren und das SQL anpassen.

Klicken Sie bei einem beliebigen Graphen oder einer Tablle auf **Edit**:

![Graphen editieren](https://1983379169-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLe82Z891Z9TUVDeTD5WX%2Fuploads%2Fgit-blob-e48c140c536778e52d58d1b9faaf4291814fc2a0%2Fgraph_edit.png?alt=media)

Nun können Sie das SQL anpassen und testen:

![Graph Details](https://1983379169-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLe82Z891Z9TUVDeTD5WX%2Fuploads%2Fgit-blob-11a5a976613da7940489f7cabfac571589434373%2Fgraph_details.png?alt=media)

Weitere Informationen, insbesondere zu Variablen, finden Sie im Editor unter **Show Help**.

Die verwendete Datenbank ist PostgreSQL. Informationen zu PostgreSQL in Zusammenhang mit Grafana (von PASCOM verwendete Analytics Tool) finden Sie unter [Using PostgreSQL in Grafana](https://grafana.com/docs/grafana/latest/datasources/postgres/).

## SQL Funktionen

PASCOM stellt SQL Funktionen zur Abfrage von Daten bereit. Diese können, ähnlich wie Tabellen, in SQL Abfragen genutzt werden.

### filter\_calls()

Diese Funktion gibt **alle abgeschlossenen** Anrufe zurück. Anrufe die im Moment der Abfrage noch aktiv sind (live) werden nicht berücksichtigt.

#### Parameter

```sql
filter_calls( 
    from_timestamp, 
    to_timestamp,
    call_type, 
    filter_user, 
    filter_label, 
    filter_from_name, 
    filter_from_number,
    filter_to_name,
    filter_to_number
)
```

| Parameter            | Beschreibung                                                                                                                                                         |
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| from\_timestamp      | Anrufe seit diesem Zeitpunkt. Üblicherweise Dasboard-Variable ***$\_\_timeFrom()*** für selektierten Zeitraum.                                                       |
| to\_timestamp        | Anrufe bis zu diesem Zeitpunkt. Üblicherweise Dashboard-Variable ***$\_\_timeTo()*** für selektierten Zeitraum.                                                      |
| call\_type           | Mögliche Werte: ***all*** = alle Anrufe, ***inbound*** = Nur eingehende Anrufe, ***outbound*** = Nur ausgehende Anrufe, ***internal*** = Nur interne Anrufe          |
| filter\_user         | Filter nach Benutzername (nicht Anzeigename). ***\**** = Alle Benutzer. Mehrere Benutzer per Kommagetrennter Liste möglich z.B. 'user1, user2'.                      |
| filter\_label        | Filter nach Labelname. ***\**** = Alle Label. Mehrere Label per Kommagetrennter Liste möglich z.B. 'label1, label2'.                                                 |
| filter\_from\_name   | Filter nach Anrufer Namen. Anzeigenamen des Anrufers, z.B. aus Telefonbuch falls vorhanden. Lassen Sie den Parameter ***leer*** um keinen Filter anzuwenden.         |
| filter\_from\_number | Filter nach Anrufer Nummer. Lassen Sie den Parameter ***leer*** um keinen Filter anzuwenden.                                                                         |
| filter\_to\_name     | Filter nach Angerufenem Namen. Anzeigenamen des Angerufenen, z.B. aus Telefonbuch, falls vorhanden. Lassen Sie den Parameter ***leer*** um keinen Filter anzuwenden. |
| filter\_to\_number   | Filter nach Angerufenem Nummer. Lassen Sie den Parameter ***leer*** um keinen Filter anzuwenden.                                                                     |

#### Rückgabewerte

| Rückgabewert      | Beschreibung                                                                                                                                                                                                |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| record\_timestamp | Zeitpunkt zu dem dieser Anruf gestartet wurde.                                                                                                                                                              |
| record\_id        | ID dieses Datensatzes.                                                                                                                                                                                      |
| from\_internal    | Anrufer intern?: ***t*** = ja, ***f*** = nein.                                                                                                                                                              |
| from\_number      | Anrufer Nummer.                                                                                                                                                                                             |
| from\_name        | Anrufer Anzeigename, z.B. aus Telefonbuch, falls vorhanden.                                                                                                                                                 |
| to\_internal      | Angerufener intern?: ***t*** = ja, ***f*** = nein.                                                                                                                                                          |
| to\_number        | Angerufener Nummer.                                                                                                                                                                                         |
| to\_name          | Angerufener Anzeigenamen, z.B. aus Telefonbuch falls vorhanden.                                                                                                                                             |
| status            | Mögliche Werte: ***hangup*** = Anruf wurde normal aufgelegt, ***transfer*** = Anruf wurde verbunden, ***noanswer*** = Anruf wurde nicht beantwortet.                                                        |
| direction         | Mögliche Werte: ***inbound*** = Eingehender Anruf, ***outbound*** = Ausgehender Anruf, ***internal*** = Interner Anruf.                                                                                     |
| total\_duration   | Gesamtdauer des Anrufes. Der Anruf startet sobald der Benutzer oder das Team gerufen wird. IVR, Anrufverteiler, etc. werden nicht mitgezählt.                                                               |
| ringing\_duration | Dauer bis der Anruf durch einen Benutzer beantwortet wird.                                                                                                                                                  |
| talking\_duration | Dauer des Gesprächs inklusive ***hold\_duration***.                                                                                                                                                         |
| hold\_duration    | Dauer die der Anruf gehalten wurde.                                                                                                                                                                         |
| from\_trunk\_id   | ID des verwendeten Amts (Trunk) bei eingehenden Anrufen.                                                                                                                                                    |
| from\_trunk\_name | Name des verwendeten Amts (Trunk) bei eingehenden Anrufen.                                                                                                                                                  |
| from\_rule\_id    | ID der verwendeten eingehenden Regel.                                                                                                                                                                       |
| from\_rule\_name  | Name der verwendeten eingehenden Regel.                                                                                                                                                                     |
| to\_trunk\_id     | ID des verwendeten Amts (Trunk) bei ausgehenden Anrufen.                                                                                                                                                    |
| to\_trunk\_name   | Name des verwendeten Amts (Trunk) bei ausgehenden Anrufen.                                                                                                                                                  |
| to\_rule\_id      | ID der verwendeten ausgehenden Regel.                                                                                                                                                                       |
| to\_rule\_name    | Name der verwendeten ausgehenden Regel.                                                                                                                                                                     |
| data              | Anrufdaten im JSON Format.                                                                                                                                                                                  |
| record\_chain     | Jeder Anruf ist mit mehreren Einzelaktionen über die ***record\_chain*** verknüpft. Die Einzelaktionen stehen in der Tabelle ***mdphonecallrecord***, die Chain in der Spalte ***phonecallrecord\_chain***. |

### filter\_queue\_calls()

Diese Funktion gibt alle **abgeschlossenen** und **eingehenden** Anrufe zurück die über ein **Team** gelaufen sind. Anrufe die im Moment der Abfrage noch aktiv sind (live) werden nicht berücksichtigt.

#### Parameter

```sql
filter_queue_calls( 
    from_timestamp, 
    to_timestamp, 
    filter_team,
    filter_user,  
    filter_from_name, 
    filter_from_number,
    filter_label
)
```

| Parameter            | Beschreibung                                                                                                                                                  |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| from\_timestamp      | Anrufe seit diesem Zeitpunkt (Timestamp ohne Zeitzone). Üblicherweise Dasboard-Variable ***$\_\_timeFrom()*** für selektierten Zeitraum.                      |
| to\_timestamp        | Anrufe bis zu diesem Zeitpunkt (Timestamp ohne Zeitzone). Üblicherweise Dashboard-Variable ***$\_\_timeTo()*** für selektierten Zeitraum.                     |
| filter\_team         | Filter nach Teamname. ***\**** = Alle Teams. Mehrere Teams per kommagetrennter Liste möglich z.B. 'team1, team2'.                                             |
| filter\_user         | Filter nach Benutzername (nicht Anzeigename). ***\**** = Alle Benutzer. Mehrere Benutzer per kommagetrennter Liste möglich z.B. 'user1, user2'.               |
| filter\_from\_name   | Filter nach Anrufer Namen. Anzeigenamen des Anrufers, z.B. aus Telefonbuch, falls vorhanden. Lassen Sie den Parameter ***leer*** um keinen Filter anzuwenden. |
| filter\_from\_number | Filter nach Anrufer Nummer. Lassen Sie den Parameter ***leer*** um keinen Filter anzuwenden.                                                                  |
| filter\_label        | Filter nach Labelname. ***\**** = Alle Label. Mehrere Label per Kommagetrennter Liste möglich z.B. 'labe1, label2'.                                           |

#### Rückgabewerte

| Rückgabewert      | Beschreibung                                                                                                                                                                                                |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| id                | ID dieses Datensatzes.                                                                                                                                                                                      |
| chain             | Jeder Anruf ist mit mehreren Einzelaktionen über die ***record\_chain*** verknüpft. Die Einzelaktionen stehen in der Tabelle ***mdphonecallrecord***, die Chain in der Spalte ***phonecallrecord\_chain***. |
| from\_internal    | Anrufer intern?: ***t*** = ja, ***f*** = nein.                                                                                                                                                              |
| from\_number      | Anrufer Nummer.                                                                                                                                                                                             |
| from\_name        | Anrufer Anzeigename, z.B. aus Telefonbuch, falls vorhanden.                                                                                                                                                 |
| direction         | Richtung des Anrufs (z. B. ***inbound***, ***outbound***).                                                                                                                                                  |
| total\_duration   | Gesamtdauer des Anrufes. Der Anruf startet sobald das Team gerufen wird. IVR, Anrufverteiler, etc. werden nicht mitgezählt.                                                                                 |
| talking\_duration | Dauer des Gespräches inklusive ***hold\_duration***.                                                                                                                                                        |
| moh\_duration     | Dauer in der Musik On Hold gespielt wurde.                                                                                                                                                                  |
| hold\_duration    | Dauer die der Anruf gehalten wurde, exclusive ***moh\_duration***.                                                                                                                                          |
| status            | Mögliche Werte: ***hangup*** = Anruf wurde normal aufgelegt, ***transfer*** = Anruf wurde verbunden, ***noanswer*** = Anruf wurde nicht beantwortet.                                                        |
| queue\_timestamp  | Zeitpunkt zu dem dieser Anruf gestartet wurde.                                                                                                                                                              |
| queue\_name       | Name des Teams.                                                                                                                                                                                             |
| from\_trunk\_id   | ID des verwendeten Amts (Trunk) bei eingehenden Anrufen.                                                                                                                                                    |
| from\_trunk\_name | Name des verwendeten Amts (Trunk) bei eingehenden Anrufen.                                                                                                                                                  |
| from\_rule\_id    | ID der verwendeten eingehenden Regel.                                                                                                                                                                       |
| from\_rule\_name  | Name der verwendeten eingehenden Regel.                                                                                                                                                                     |
| to\_trunk\_id     | ID des verwendeten Amts (Trunk) bei ausgehenden Anrufen.                                                                                                                                                    |
| to\_trunk\_name   | Name des verwendeten Amts (Trunk) bei ausgehenden Anrufen.                                                                                                                                                  |
| to\_rule\_id      | ID der verwendeten ausgehenden Regel.                                                                                                                                                                       |
| to\_rule\_name    | Name der verwendeten ausgehenden Regel.                                                                                                                                                                     |
| data              | Anrufdaten im JSON Format.                                                                                                                                                                                  |
| agent\_id         | ID des Teammitgliedes, das den Anruf beantwortet oder transferiert hat.                                                                                                                                     |
| agent\_record\_id | ID des Anruf-Vorgangs beim Teammitglied. Alle **agent\_** Felder sind nur gefüllt wenn der Anruf beantwortet oder transferiert wurde.                                                                       |
| agent\_chain      | Gleicher Wert wie ***chain***.                                                                                                                                                                              |
| agent\_timestamp  | Zeitpunkt wenn das Teammitglied gerufen wird.                                                                                                                                                               |
| agent\_name       | Benutzername (nicht Anzeigename) des Teammitgliedes.                                                                                                                                                        |
| agent\_number     | Interne Durchwahl des Teammitgliedes.                                                                                                                                                                       |
| agent\_ringing    | Rufdauer des Teammitgliedes.                                                                                                                                                                                |

## SQL Tabellen

### mdphonecallrecord

In **mdphonecallrecord** wird jeder einzelne Schritt, den ein Anruf durch die Telefonanlage nimmt, gespeichert. Ein Anruf erzeugt also viele Einträge in der **mdphonecallrecord**. Die einzelnen Einträge werden via Feld **phonecallrecord\_chain** zu einem Anruf verkettet.

Nutzen Sie bitte vorwiegend die von PASCOM angebotenen SQL Funktionen und greifen nur für etwaige Details auf diese Tabelle zu.

#### Beispiel: Verbinden mit Rücksprache

![Verbinden mit Rücksprache](https://1983379169-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLe82Z891Z9TUVDeTD5WX%2Fuploads%2Fgit-blob-32193f173c4c993116bad906caf5c73b201b0d94%2Fattended_transfer.de.png?alt=media)

In der **mdphonecallrecord** entsteht für jeden einzelnen Schritt ein Eintrag.

Als Schritt verstehen wir jedes Objekt in PASCOM, dass über eine Durchwahl erreichbar ist.

In unserem Beispiel ist der Anruffluss wie folgt:

* Anrufer ruft Benutzer A direkt an (Durchwahl 101).
* Benutzer A legt Benutzer A auf "hold" und ruft Benutzer B an (Durchwahl 102).
* Benutzer A verbindet Anrufer mit Benutzer B (Durchwahl 102).

Der Beispiel-Anruffluss erzeugt demnach drei Einträge in der Datenbank (Nur auszugsweise):

| Feldname (phonecallrecord\_) | Schritt 1           | Schritt 2           | Schritt 3           |
| ---------------------------- | ------------------- | ------------------- | ------------------- |
| id                           | 1                   | 2                   | 3                   |
| timestamp                    | 2020-04-03 12:47:32 | 2020-04-03 12:47:56 | 2020-04-03 12:48:13 |
| srcnumber                    | 004989123123        | 101                 | 004989123123        |
| dstname                      | Benutzer A          | Benutzer B          | Benutzer B          |
| dstnumber                    | 101                 | 102                 | 102                 |
| parentid                     |                     | 1                   | 2                   |
| chain                        | 158589 9721877\_10  | 158589 9721877\_10  | 158589 9721877\_10  |
| result                       | transfer            | transfer            | hangup              |
| resultdetails                | dst                 | src                 |                     |
| via                          |                     |                     | transfer            |
| viadetails                   |                     |                     |                     |
| duration                     | 41                  | 16                  | 18                  |
| connected                    | 29                  | 12                  | 18                  |
| holdduration                 | 16                  | 0                   | 0                   |

An den Daten lässt sich folgendes ablesen:

* Der Anrufer hat 13 Sekunden mit Benutzer A gesprochen (connected - holdduration).
* Benutzer A hat 12 Sekunden mit Benutzer B gesprochen und dann den Anrufer an Benutzer B transferiert.
* Benutzer A hat Benutzer B 4 Sekunden lang (duration - connected) gerufen bevor dieser abgehoben hat.

#### Beispiel: Anruf über IVR und Team

![Anruffluss Beispiel](https://1983379169-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLe82Z891Z9TUVDeTD5WX%2Fuploads%2Fgit-blob-9d234c98d1a2a90f5135862bed57ab7cecb2e9f5%2Fpascom_cdr.de.png?alt=media)

In der **mdphonecallrecord** entsteht für jeden einzelnen Schritt ein Eintrag.

Als Schritt verstehen wir jedes Objekt in PASCOM, dass über eine Durchwahl erreichbar ist.

In unserem Beispiel ist der Anruffluss wie folgt:

* Anrufer wird im IVR Menü nach dem Team gefragt und entscheidet sich für 1 (Durchwahl 501).
* Das Team begrüßt den Anrufer durch eine Ansage und ruft die Mitglieder parallel (Durchwahl 201).
* Benutzer A wird gerufen und beantwortet den Anruf nicht (Durchwahl 101).
* Benutzer B wird gerufen und beantwortet den Anruf (Durchwahl 102).

Der Beispiel-Anruffluss erzeugt demnach vier Einträge in der Datenbank (Nur auszugsweise):

| Feldname (phonecallrecord\_) | Schritt 1           | Schritt 2           | Schritt 3           | Schritt 4           |
| ---------------------------- | ------------------- | ------------------- | ------------------- | ------------------- |
| id                           | 1                   | 2                   | 3                   | 4                   |
| timestamp                    | 2020-04-03 09:42:13 | 2020-04-03 09:42:17 | 2020-04-03 09:42:19 | 2020-04-03 09:42:19 |
| srcnumber                    | 004989123123        | 004989123123        | 004989123123        | 004989123123        |
| dstname                      | IVR                 | Team                | Benutzer A          | Benutzer B          |
| dstnumber                    | 501                 | 201                 | 101                 | 102                 |
| parentid                     |                     | 1                   | 1                   | 1                   |
| chain                        | 158589 9721877\_10  | 158589 9721877\_10  | 158589 9721877\_10  | 158589 9721877\_10  |
| result                       | transfer            | hangup              | noanswer            | hangup              |
| resultdetails                | dst                 | caller              | elsewhere           | caller              |
| via                          |                     | queue               | queue               | queue               |
| viadetails                   |                     | caller              | agent               | agent               |
| duration                     | 4                   | 33                  | 10                  | 30                  |
| connected                    | 0                   | 20                  | 0                   | 20                  |
| holdduration                 | 0                   | 6                   | 0                   | 6                   |

An den Daten lässt sich folgendes ablesen:

* Schritt 2 bis 4 laufen parallel. Dies ist durch die selbe **parentid** erkennbar.
* Das Team (Schritt 2) läuft so lange bis der Anruf durch einen Benutzer abgearbeitet wurde.
* Die Gesamtdauer des Anrufes ist daher die Dauer von Schritt 1 und Schritt 2, also 37 Sekunden.
* Benutzer A und Benutzer B wurden parallel gerufen (Siehe **timestamp**).
* Bei Benutzer A hat der Anruf 10 Sekunden lange geläutet, wurde aber nicht beantwortet (duration - connected = 10).
* Benutzer B hate den Anruf nach 10 Sekunden beantwortet (duration - connected = 10) und 20 Sekunden gesprochen.
* Benutzer B hat den Anrufer 6 Sekunden lang auf "Hold" gelegt.

#### Feldbescheibung mdphonecallrecord

| Feldname                             | Beschreibung                                                                                                                          |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
| phonecallrecord\_id                  | ID dieses Schrittes.                                                                                                                  |
| phonecallrecord\_timestamp           | Zeitpunkt zu dem dieser Schritt begonnen wurde.                                                                                       |
| phonecallrecord\_parentid            | ID des vorangegangenen Schrittes.                                                                                                     |
| phonecallrecord\_chain               | Über diese ID werden die Schritte zu einem Anruf verkettet.                                                                           |
| phonecallrecord\_result              | Ergebnis dieses Schrittes. Mögliche Rückgabewerte siehe Tabelle ***phonecallrecord\_result***.                                        |
| phonecallrecord\_resultdetails       | Ergebnisdetails dieses Schrittes. Mögliche Rückgabewerte siehe Tabelle ***phonecallrecord\_resultdetails***.                          |
| phonecallrecord\_via                 | Über welchen vorangegangenen Schritt wurde dieser Schritt ausgelöst. Mögliche Rückgabewerte siehe Tabelle ***phonecallrecord\_via***. |
| phonecallrecord\_viadetails          | Details zum vorangegangenen Schritt. Mögliche Rückgabewerte siehe Tabelle ***phonecallrecord\_viadetails***.                          |
| phonecallrecord\_recordid            | ID des Mitschnitts, falls vorhanden.                                                                                                  |
| phonecallrecord\_duration            | Gesamtdauer dieses Schrittes.                                                                                                         |
| phonecallrecord\_connected           | Dauer des Gespräches in diesem Schritt. (Ansagen und Wartemusik zählen nicht als Gespräch)                                            |
| phonecallrecord\_srcinternal         | Anrufer intern?: ***t*** = ja, ***f*** = nein.                                                                                        |
| phonecallrecord\_srcuserid           | Anrufer Benutzer-ID. Nur bei internen Teilnehmern.                                                                                    |
| phonecallrecord\_srcusername         | Anrufer Benutzername. Nur bei internen Teilnehmern.                                                                                   |
| phonecallrecord\_srcname             | Anrufer Anzeigename, z.B. aus Telefonbuch, falls vorhanden.                                                                           |
| phonecallrecord\_srcdeviceid         | Anrufer Endgerät-ID. Nur bei internen Teilnehmern.                                                                                    |
| phonecallrecord\_srcdevicename       | Anrufer Endgerät-Name. Nur bei internen Teilnehmern.                                                                                  |
| phonecallrecord\_srclocationid       | Anrufer Arbeitsplatz-ID. Nur bei internen Teilnehmern.                                                                                |
| phonecallrecord\_srclocationname     | Anrufer Arbeitsplatz-Name. Nur bei internen Teilnehmern.                                                                              |
| phonecallrecord\_srcprefix           | Anrufer Prefix. Nur bei eingehnden Anrufern. Präfix des Amtes über die der Anruf gekommen ist.                                        |
| phonecallrecord\_srcnumber           | Anrufer Telefonnummer.                                                                                                                |
| phonecallrecord\_srcextension        | Anrufer Durchwahl.                                                                                                                    |
| phonecallrecord\_dstinternal         | Angerufener intern?: ***t*** = ja, ***f*** = nein.                                                                                    |
| phonecallrecord\_dstuserid           | Angerufener Benutzer-ID. Nur bei internen Teilnehmern.                                                                                |
| phonecallrecord\_dstusername         | Angerufener Benutzername. Nur bei internen Teilnehmern.                                                                               |
| phonecallrecord\_dstname             | Angerufener Anzeigename, z.B. aus Telefonbuch, falls vorhanden.                                                                       |
| phonecallrecord\_dstdeviceid         | Angerufener Endgerät-ID. Nur bei internen Teilnehmern.                                                                                |
| phonecallrecord\_dstdevicename       | Angerufener Endgerät-Name. Nur bei internen Teilnehmern.                                                                              |
| phonecallrecord\_dstlocationid       | Angerufener Arbeitsplatz-ID. Nur bei internen Teilnehmern.                                                                            |
| phonecallrecord\_dstlocationname     | Angerufener Arbeitsplatz-Name. Nur bei internen Teilnehmern.                                                                          |
| phonecallrecord\_dstprefix           | Angerufener Prefix. Nur bei ausgehenden Anrufern. Präfix des Amtes über die der Anruf gegangen ist.                                   |
| phonecallrecord\_dstnumber           | Angerufener Telefonnummer.                                                                                                            |
| phonecallrecord\_dstextension        | Angerufener Durchwahl. Nur bei internen Teilnehmern.                                                                                  |
| phonecallrecord\_srctrunkid          | ID des eingehenden Amts (Trunk).                                                                                                      |
| phonecallrecord\_srctrunkname        | Name des eingehenden Amts (Trunk).                                                                                                    |
| phonecallrecord\_srcruleid           | ID der eingehenden Regel.                                                                                                             |
| phonecallrecord\_srcrulename         | Name der eingehenden Regel.                                                                                                           |
| phonecallrecord\_dsttrunkid          | ID des ausgehenden Amts (Trunk).                                                                                                      |
| phonecallrecord\_dsttrunkname        | Name des ausgehenden Amts (Trunk).                                                                                                    |
| phonecallrecord\_dstruleid           | ID der ausgehenden Regel.                                                                                                             |
| phonecallrecord\_dstrulename         | Name der ausgehenden Regel.                                                                                                           |
| phonecallrecord\_srcphonebookentryid | Anrufer ID des Telefonbucheintrages, falls vorhanden.                                                                                 |
| phonecallrecord\_dstphonebookentryid | Angerufener ID des Telefonbucheintrages, falls vorhanden.                                                                             |
| phonecallrecord\_data                | Labels, Voicemail, Queuedetails.                                                                                                      |
| phonecallrecord\_holdcount           | Wie oft wurde der Anruf in diesem Schritt gehalten.                                                                                   |
| phonecallrecord\_holdduration        | Wie lange wurde der Anruf in diesem Schritt gehalten.                                                                                 |
| phonecallrecord\_phonecallid         | ID für internen gebrauch.                                                                                                             |

**phonecallrecord\_result**

| Rückgabewert | Beschreibung                               |
| ------------ | ------------------------------------------ |
| noanswer     | In diesem Schritt nicht beantwortet.       |
| hangup       | In diesem Schritt behandelt.               |
| transfer     | Von diesem Schritt zum nächsten verbunden. |

**phonecallrecord\_resultdetails**

| Rückgabewert | Beschreibung                                                                     |
| ------------ | -------------------------------------------------------------------------------- |
| voicemail    | Schritt endete in Voicemailbox.                                                  |
| src          | Anrufer hat weiter verbunden.                                                    |
| dst          | Angerufener hat weiter verbunden.                                                |
| abandon      | Anrufer hat aufgelegt, bevor der Angerufene geantwortet hat.                     |
| elsewhere    | Anrufer wurde von einem anderen Teilnehmer angenommen (nicht in diesem Schritt). |
| timeout      | Timeout in diesem Schritt erreicht.                                              |
| picked       | Pickup (Heranholen) wurde ausgeführt.                                            |
| caller       | Anrufer hat die letzte Aktion ausgeführt.                                        |
| agent        | Angerufener hat die letzte Aktion ausgeführt.                                    |
| disabled     | Alle dem Angerufenen zugewiesenen Endgeräte sind über Follow-Me deaktiviert.     |

**phonecallrecord\_via**

| Rückgabewert | Beschreibung                                                              |
| ------------ | ------------------------------------------------------------------------- |
| noanswer     | Der Anruf wurde in diesem Schritt beendet, da er nicht beantwortet wurde. |
| transfer     | Der Anruf wurde in diesem Schritt beendet, da er verbunden wurde.         |
| queue        | Der Anruf wurde in diesem Schritt beendet, da es ein Team-Anruf war.      |
| fax          | Der Anruf wurde in diesem Schritt beendet, da es ein Fax war.             |

**phonecallrecord\_viadetails**

| Rückgabewert    | Beschreibung                                                                            |
| --------------- | --------------------------------------------------------------------------------------- |
| action          | Der Anruf wurde in diesem Schritt beendet, da er durch eine Aktion verbunden wurde.     |
| src             | Der Anruf wurde in diesem Schritt beendet, da er durch den Anrufer verbunden wurde.     |
| dst             | Der Anruf wurde in diesem Schritt beendet, da er durch den Angerufenen verbunden wurde. |
| caller          | Team-Anruf aus Sicht des Anrufers.                                                      |
| agent           | Team-Anruf aus Sicht des Team-Mitgliedes.                                               |
| picked          | Herangeholter Anruf.                                                                    |
| agent\_outbound | Ausgehender Anruf über ein Team.                                                        |


---

# 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/operations/analytics/statistics-custom.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.
