coucounco/salto

使用TCP/IP协议实现PMS行业标准协议的PHP Salto客户端。

1.0 2022-12-21 15:58 UTC

This package is not auto-updated.

Last update: 2024-09-26 15:18:09 UTC


README

Latest Version on Packagist Total Downloads

使用TCP/IP协议实现PMS行业标准协议的PHP Salto客户端。

安装

您可以通过composer安装此包

composer require rohsyl/salto

使用方法

创建客户端

$client = new SaltoClient('5.tcp.eu.ngrok.io', 14072);

尝试打开连接

$client->openSocketConnection();

失败时抛出 ConnectionFailedException

检查服务器是否可用

while (!$client->isReady()) {
    // wait some seconds and try again
    // or exit program
}

发送消息

$response = $client->sendMessage($message);

可用的消息

目前仅实现了以下消息

  • CNM : CheckInMobileMessage
  • CCM : CopyMobileMessage
  • MC : ModifyMessage
  • CO : CheckoutMessage

CNM : Check-in Mobile

为移动应用程序进行登记。

为指定日期的客人创建一个带有电话号码的房间访问权限。

$message = (new CheckInMobileMessage())
    ->forRoom('W10011')
    ->phone('+41774539943')
    ->from(Carbon::create(2022, 12, 21, 10, 30))
    ->to(Carbon::create(2022, 12, 30, 10, 30))
    ;

您可以指定运营商

$message = (new CheckInMobileMessage())
    // ...
    ->by('Firstname Lastname')
    ;

您可以为手机显示设置文本消息。

$message = (new CheckInMobileMessage())
    // ...
    ->withMessage('Lorem impsum')
    ;

您可以允许或拒绝门禁访问。您需要通过参数传递一个数组

  • 是PMS授权的ID(见系统 > PMS授权)。
  • 可以是 truefalse
$message = (new CheckInMobileMessage())
    // ...
    ->withAuthorizations(['1' => true])
    ;

CCM : Copy Mobile

与CNM : CheckInMobileMessage工作方式相同。

MC : 修改

修改登记。更改到期日期。

$message = (new ModifyMessage())
    ->fromRoom('W10011')
    ->expireAt(Carbon::create(2022, 12, 12, 11,0));

如果房间已退房或未占用,将返回错误。

CO : 退房

退房房间。

$message = (new CheckoutMessage(+))
    ->forRoom('W10011');

读取响应

sendMessage 方法返回 Response 实例。

$response = $client->sendMessage($message);

如果没有抛出异常,则表示一切正常。

显示响应和请求的字符串表示形式

$response->toString();
$response->getRequest()->toString();

处理异常

使用 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) {
        // ...
    }
}

现有异常

  • ConnectionFailedException : 套接字连接失败
  • NakException : 服务器响应了负确认。这意味着服务器未准备好或发送的消息不正确(错误的LRC)
  • WrongChecksumException : 响应消息不正确(错误的lrc)
  • SaltoErrorException : 服务器抛出了错误:请参阅PMS_SALTO_IS_V1.pdf中的错误消息

测试

待办事项

composer test

更改日志

有关最近更改的更多信息,请参阅更改日志

贡献

有关详细信息,请参阅贡献指南

安全性

如果您发现任何安全问题,请通过syzin12@gmail.com发送电子邮件,而不是使用问题跟踪器。

致谢

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件