Functions.psm1


function Send-PhoneCall {
      <#
        .SYNOPSIS
         Sends a message request to Ntfy which will in turn invokes a voice call to the number you specifi.
 
        .DESCRIPTION
        You will need the details from a valid Ntfy paid account with the Phone number already verified.
 
        .PARAMETER Topic
        This is the Topic being used to submit and list the message sent.
        Please ensure you specify the full path, e.g. https://ntfy.sh/topic
 
        .PARAMETER APIKey
         This is the API Key being used to Authorise communications with the Ntfy Account which owns the Topic.
 
        .PARAMETER PhoneNumber
        This is the Phone Number which will receive the message you are sending, ensure the international format +44.... is used.
        This number must be already registered with the Ntfy Topic Account.
 
        .PARAMETER Message
        The string message you're sending the the Topic and intended Phone recipent.
 
        .INPUTS
        All strings for all parameters
 
        .OUTPUTS
        Returns 0 if successful, -1 if not. Will also display an error message. You may also ver Verbose to view extra execution details.
 
        .EXAMPLE
        PS> Send-PhoneCall -Topic "https://ntfy.sh/topic" -APIKey "rfdsdfrtgytgf-dsxcf" -PhoneNumber "+447970499522" -Message "Hello World!"
         
        .LINK
        Online version: https://www.powershellgallery.com/profiles/GarryGBain
 
        #>

    [Cmdletbinding()] 
    param( 
        [Parameter(Mandatory=$true, Position=0, HelpMessage="The Server and Topic; http://ntfy.sh/thetopic")] $Topic,
        [Parameter(Mandatory=$true, Position=1, HelpMessage="The API Key you create https://ntfy.sh/account" )] $APIKey,
        [Parameter(Mandatory=$true, Position=2, HelpMessage="This will only work with registered numbers. https://ntfy.sh/account")] $PhoneNumber,
        [Parameter(Mandatory=$true, Position=3, HelpMessage="The message you wish to send.")] $Message

      

        ) 
        
        $Return=0

        Write-Verbose "Setting up request"

        $Request = @{
            Method = "POST"
            URI = $Topic
            Headers = @{
              Authorization = "Bearer $APIKey"
              Call = $PhoneNumber
            }
            Body = $Message
          }
          Write-Verbose "Sending request"

          try {
              Invoke-RestMethod @Request
          }
          catch {
            $Return=-1
            Write-Error "Error occurred: $_"
          }
          
          return $Return

} Export-ModuleMember Send-PhoneCall