Para utilizar LaML se requiere de codigo escrito en el lenguaje de programacion deseado; puede ser en PHP, NodeJS, Python, React Native, Ruby, entre otros; a su vez se puede escribir el codigo de manera directa LaML.
En el caso de los relay, se requiere de una conexion a la plataforma de SignalWire (en el lenguaje seleccionado) mediante api token, en el cual creamos en la configuracion del proyecto. A su vez hay distintos metodos para interactuar con la llamada una vez creada.
Pues bien, el siguiente es un script LaML hecho en PHP, donde enruta una llamada entrante hacia un terminal SIP
require dirname(__FILE__) . '/vendor/autoload.php';
$phone = $_REQUEST['To'];
$response = new SignalWire\LaML();
$dial = $response->dial();
$dial->sip($phone . '@' . 'example.com:5060;transport=tcp');
echo $response;
?>
Por default utiliza el protocolo SIP mediante TLS, por lo que en este caso se especifica en TCP.
A continuacion, este es otro script utilizado para llamadas salientes, que ingresa mediante la propiedad SIP Domain APP en la configuracion del endpoint:
require dirname(__FILE__) . '/vendor/autoload.php';
$phone = $_REQUEST['To'];
$from = $_REQUEST['From'];
$npa = substr($from, 1, 4);
$nxx = substr($from, 5, 3);
$num = substr($from, 8, 4);
$callerid = '+' . $npa . $nxx . $num ;
$response = new SignalWire\LaML();
$dial = $response->dial(array( 'callerId' => $callerid ));
$dial->number(substr($phone, 1, 3) . '-' . substr($phone, 4, 3) . '-' . substr($phone, 7, 4) );
echo $response;
?>
Tener en cuenta que para poder ejecutarlos se requiere abrir un puerto HTTP alternativo (por ejemplo 8080) y mediante un virtualhost, establecer la configuracion como un servidor web con soporte PHP. Y desde la configuracion de Inbound, crear el enlace LamL para enrutar correctamente la llamada entrante.