elilongwell, yes this is possible from PowerShell and hence can be automated and potentially be triggered by Power Automate or from another runbook as a child runbook.
There are a few requirements though. Unfortunately it appears that the Teams PowerShell module for this doesn't exist for Azure Automation, yet. So you need to install this module on a on-prem server (Hybrid worker potentially).
In addition to that you need free licenses and phone numbers in your tenant.
With this you would then have to assign the license to the user in question, wait some time for the license to apply and provision the user as voice user and then finally find a free phone number from the users side and assign it to the user.
From PowerShell this would look similar to this:
#Assign the license
$Cred = Get-AutomationPSCredential -Name ‘YOURADMINACCOUNT’
Import-Module MSOnline
Connect-MsolService -Credential $Cred
$License = “YOUR LICENSE IDs”
Set-MsoluserLicense -UserPrincipalName $UPN -AddLicenses $License
"License assigned: $License"
#Waiting for Voice account provisioning
Start-sleep -Seconds 3600
#Assign the phone number
#Import required module
Import-Module SkypeOnlineConnector -Global
#"Module imported. Creating new PSSession now"
$sfboSession = New-CsOnlineSession -Credential $Cred
#"PSSession created. Importing it now"
Import-Module (Import-PSSession $sfboSession -AllowClobber) -Global
#"PSSession imported"
#Find free phone number
$PhoneNumber = get-CSOnlineTelephoneNumber -CityCode $SiteCode -IsNotAssigned | Select ID | Select-Object -First 1
"Phone number $PhoneNumber selected"
#Assign phone number to user
Set-CSOnlineVoiceUser -Identity $UPN -TelephoneNumber $PhoneNumber
"Phone number $PhoneNumber assigned to user $UPN"
You can find the citycodes for your cloud PBX locations from PowerShell as well.
You can then either hand over the UPN and city code to the Runbook manually or further automate that as required.