rohsyl/salto

一个通过 TCP/IP 实现PMS行业标准协议的PHP Salto客户端。

1.0 2022-12-21 15:58 UTC

This package is not auto-updated.

Last update: 2024-09-23 11:19:35 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 : 检入移动设备

为移动应用进行检入。

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

$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 : 复制移动设备

与 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

变更日志

请参阅 CHANGELOG 以了解最近更改的详细信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全

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

鸣谢

许可

MIT 许可证(MIT)。请参阅 许可文件 了解更多信息。