Skip to content

Installation

  1. Ensure your Microsoft Entra ID application has the required Microsoft Graph application permissions.
  2. Download the v1 binary (ms-teams-agent.bin on Linux, ms-teams-agent.exe on Windows) and the template config (conf/template_config.yaml).
  3. Obtain your license file and note its absolute path for collection_config.license_file.

Host requirements

  • Outbound access to:
    • graph.microsoft.com
    • login.microsoftonline.com
    • your backend endpoint (Dynatrace or Splunk)
  • No Python runtime required (the binary is self-contained)

Microsoft Entra ID / Microsoft Graph permissions

  • CallRecords.Read.All
  • ServiceHealth.Read.All (required if ms_teams_issues_collection is enabled)
  • Reports.Read.All (used for license validation)

VAAC features (ms_teams_autoattendant_collection, ms_teams_callqueue_collection)

  • Set microsoft_username and microsoft_password
  • Use an account authorized on the Teams Voice Analytics API

License file

A valid license file is required. At startup, the agent validates:

  • license signature
  • tenant match
  • validity period
  • user count (standard license)

Start from conf/template_config.yaml and set at least:

microsoft_authentication:
microsoft_tenant_id: "<tenant_id>"
microsoft_client_id: "<client_id>"
microsoft_client_secret: "<client_secret>"
microsoft_scope: "https://graph.microsoft.com/.default"
microsoft_grant_type: "client_credentials"
output:
dynatrace:
enabled: false
splunk:
enabled: false
console:
enabled: true
collection_config:
microsoft_max_call_duration_hours: 5
interval_collection_minutes: 1
logfile_log_level: "INFO"
license_file: "<path/to/license.lic>"
features:
ms_teams_calls_collection:
enabled: true
ms_teams_issues_collection:
enabled: false
ms_teams_pstn_calls_collection:
enabled: false
ms_teams_direct_routing_calls_collection:
enabled: false
ms_teams_site_definition:
enabled: false
ms_teams_autoattendant_collection:
enabled: false
ms_teams_callqueue_collection:
enabled: false

Full settings reference: Configuration Reference

Terminal window
./ms-teams-agent.bin --config ./conf/config.yaml

The collector runs in a continuous loop: collect, wait interval_collection_minutes, repeat.

  1. Confirm the binary is available.

    Terminal window
    ./ms-teams-agent.bin --version
  2. Run one cycle without reading previous state.

    Terminal window
    ./ms-teams-agent.bin --config ./conf/config.yaml --ignore_state
  3. (Optional) Debug one call ID.

    Terminal window
    ./ms-teams-agent.bin --config ./conf/config.yaml --call_id "<CALL_ID>"

The collector creates these paths next to the binary:

  • logs/pheniAgent_<tenant_id>.log (daily rotation, 7 files retained)
  • state/state_<tenant_id>.json (processed call IDs)

Follow logs in real time:

Terminal window
tail -f logs/pheniAgent_<tenant_id>.log

Then confirm events appear in your backend (Dynatrace or Splunk).