A PHP Salto client implementing the PMS Industry Standard protocol via TCP/IP.
You can install the package via composer:
composer require rohsyl/salto
Create a client
$client = new SaltoClient('5.tcp.eu.ngrok.io', 14072);
Try to open the connection
$client->openSocketConnection();
Throws
ConnectionFailedException
when failed.
Check if the server is available
while (!$client->isReady()) {
// wait some seconds and try again
// or exit program
}
Send a message
$response = $client->sendMessage($message);
Only the followings message have been implemented yet :
- CNM :
CheckInMobileMessage
- CCM :
CopyMobileMessage
- MC :
ModifyMessage
- CO :
CheckoutMessage
Check-in for mobile apps.
Create access to a room for a guest with a phone number for given dates
$message = (new CheckInMobileMessage())
->forRoom('W10011')
->phone('+41774539943')
->from(Carbon::create(2022, 12, 21, 10, 30))
->to(Carbon::create(2022, 12, 30, 10, 30))
;
You can specify the operator
$message = (new CheckInMobileMessage())
// ...
->by('Firstname Lastname')
;
You can set a text message to be shown on the phone’s display.
$message = (new CheckInMobileMessage())
// ...
->withMessage('Lorem impsum')
;
You can allow or deny access to doors. You have to pass an array in parameter :
- Key is the ID of the PMS Authorizations (See System > PMS Authorizations).
- Value can be
true
orfalse
.
$message = (new CheckInMobileMessage())
// ...
->withAuthorizations(['1' => true])
;
Works the same way as CNM : CheckInMobileMessage
.
Modify a check in. Changing the expiry dates.
$message = (new ModifyMessage())
->fromRoom('W10011')
->expireAt(Carbon::create(2022, 12, 12, 11,0));
An error will be returned if the room is checked-out or not occupied.
Check-out a room.
$message = (new CheckoutMessage(+))
->forRoom('W10011');
An instance of Response
is returned by the sendMessage
method.
$response = $client->sendMessage($message);
If no exceptions is thrown, it means that everything went fine.
Display the string representation of the response and the request
$response->toString();
$response->getRequest()->toString();
Use a try .. catch !
try {
}
catch(SaltoException $e) {
if($e instanceof ConnectionFailedException) {
// ...
}
else if($e instanceof NakException) {
// ...
}
else if($e instanceof WrongChecksumException) {
// ...
}
else if($e instanceof SaltoErrorException) {
// ...
}
}
Existing exceptions :
ConnectionFailedException
: Connection failed to the socketNakException
: Server responded with a negative acknowledgement. It means the server is not ready or the message sent is not correct (bad LRC)WrongChecksumException
: Response message is not correct (bad lrc)SaltoErrorException
: An error has been thrown by the server : See Error messages in PMS_SALTO_IS_V1.pdf
TODO
composer test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.