Fax XML

Fax TwiML Compatible XML is a set of actions defined in an XML document you can use to tell SignalWire what to do when you receive an incoming fax.

Overview

When a fax is sent to one of your SignalWire phone numbers, SignalWire looks up the Fax TwiML Compatible document from the URL you configured, and reads the instructions you provided to determine what to do.

Fax Compatibility XML allows you to control what SignalWire will do when you receive an incoming fax.

Request

SignalWire makes an HTTP request to your configured endpoint just like a regular web form submission (POST) or page load (GET). The request includes contextual information about the fax, allowing you to respond dynamically and fluidly to the fax to meet the needs of your application.

You can configure the endpoint URL and HTTP Method in your phone number settings panel on your SignalWire dashboard, or via the REST API.

Request Parameters

SignalWire sends the following parameters, as either URL query parameters or POST parameters, to your endpoint when it receives a fax:

Parameter
FaxSid stringA unique identifier for the fax.
AccountSid stringThe account that the fax was sent from.
To stringThe number or SIP URI the fax will be sent to.
From stringThe number or SIP From the fax was sent from.
ApiVersion stringThe version of the SignalWire API.

Responding to SignalWire

An example of a TwiML Compatible document that receives an incoming fax:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Receive action="/fax/received"/>
</Response>
const { RestClient } = require('@signalwire/node')
const response = new RestClient.LaML.FaxResponse()

response.receive({ action: "/fax/received" })
console.log(response.toString())
<?php
  use SignalWire\LaML;
  $response = new LaML;

  $response->receive(array( 'action' => '/fax/received' ));
  echo $response;
?>
using Twilio.TwiML;
using Twilio.TwiML.Fax;
using System;


class Example
{
    static void Main()
    {
        var response = new FaxResponse();
        response.Receive(action: "/fax/received"));

        Console.WriteLine(response.ToString());;
    }
}
from signalwire.fax_response import FaxResponse, Receive

response = FaxResponse()
response.receive(action="/fax/received")

print(response)
require 'signalwire/sdk'

response = Signalwire::Sdk::FaxResponse.new do |response|
  response.receive(action: "/fax/received")
end

puts response.to_s

When a fax comes into one of your SignalWire phone numbers, SignalWire makes an HTTP request to the URL endpoint you configured for that number. Your response to that request instructs SignalWire on what to do next.

Responses to the HTTP request are in TwiML Compatible XML. SignalWire starts at the top of your TwiML Compatible document and executes your XML commands in order, from top to bottom.

📘

TwiML Compatible verbs and their attributes are case-sensitive, so using <receive> instead of <Receive> will result in an error.