Private/Write-Telemetry.ps1

function Write-Telemetry {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true)]
        [ValidateSet("RegisterModernMailMessageEntraIDApp","SendModernMailMessage","EnableMailMessageAlias")]
        [string]
        $EventName
    )
    #$EventName = "SendModernMailMessage"
    Write-Verbose "Sending telemetry event: $EventName"

    $tenantId = Get-MgContext | Select-Object -ExpandProperty TenantId
    if (-not $tenantId) {
        $tenantId = "unknown"
    }

    $jsonData = @{
        "api_key" = "c0cd5aa997bde6dd291d06729c7548a7"
        "events" = @{
            "user_id" = $tenantId
            #"device_id" = "$($env:ComputerName)"
            "device_id" = $([BitConverter]::ToString([System.Security.Cryptography.SHA256]::Create().ComputeHash([System.Text.Encoding]::UTF8.GetBytes($env:ComputerName))).Replace('-', '').ToLower())
            "event_type"= $EventName
            "app_version" = "0.1.2"
            "platform" = "PowerShell $($PSVersionTable.PSVersion)"
            "os_name" = (Get-CimInstance Win32_OperatingSystem).Caption
            "language" = (Get-Culture).Name
            "ip" = '$remote'
        }
    }

    # Convert the data to JSON format
    $jsonBody = $jsonData | ConvertTo-Json

    # Define the URL
    $url = "https://api.eu.amplitude.com/2/httpapi"

    # Send the POST request
    try {
        Invoke-RestMethod -Uri $url -Method Post -ContentType "application/json" -Body $jsonBody | Out-Null
    } catch {
        Write-Verbose $_
    }
}