安美PMS综合业务接口协议规范
2011年5月
一. 简介
本协议规范的目的是使安美数字客房系统或者宽带计费系统(以下简称AMTT)能够同步地与酒店管理系统(以下简称HOTEL)完成酒店客人的Check-In、Check-Out和换房,对客人上网或者其它业务(比如VOD/打印等)产生计费帐单,并能查询HOTEL方的客人留言和帐单。
AMTT与HOTEL之间采用TCP或串口进行通信,对于采用消息/帐单等双向PMS业务的场合,由于接口数据流量相对较大,尽可能采用TCP通信。
采用TCP通信时,AMTT作为客户方,默认连接HOTEL方的TCP端口5000,端口双方均可。AMTT在同一时刻只能与HOTEL建立一个TCP连接,HOTEL方主动请求Check-In,Check-Out和换房,AMTT主动请求为客人抛送帐单,查询留言和帐单。AMTT尽可能长时间地与HOTEL保持TCP连接,除非发生故障或者进行系统维护,不要主动关闭TCP连接。
若采用串口进行通信,链路规程:默认速率为9600,数据位8,停止位1,无校验位,流控默认为硬件流控,也可视情况采用xon/off或者无流控。
本协议描述部分“<”和“>”间表示必须包含的部分,“[”和“]”间表示可选可不选的部分。
二. 协议描述
2.1 请求包格式规范以及应答处理
1.每个请求都以STX(0x02)开始,ETX(0x03)结束,STX和ETX间为请求消息
内容,ETX后跟一字节校验符,即
内必须不能包含任何STX或ETX字符。无论串口或者TCP通信,ETX后都需要
跟一字节的LRC校验,产生LRC的具体算法:从STX后的字节开始,到ETX结
束(不包括STX,但是包括ETX)的每字节进行XOR操作,结果即为LRC;
2.任意方接受到请求后,必须回答ACK(0x06)、或者NAK(0x15)、或者ENQ(0x05);
3.ACK表示被请求方正确接收到了请求,但并不表示已经对该请求作了正确的事务
处理;
4.当发生LRC校验错误时,或者收到ENQ但是2秒内并没有发出过任何请求,被请
求方必须应答NAK;收到NAK的一方,必须重传上一条请求;
5.请求方在收到不正确的非NAK/ACK应答或者在2秒内没有收到任何应答时,必须
发送ENQ,ENQ发送最多重复3次,无任何应答则丢弃本次请求,做详细日志。
ENQ的意义为,向对端请求重发对最近2秒内的最后一条指令所做的ACK/NAK
应答。收到ENQ的一方,若在2秒内没有收到过任何请求,那么直接发送NAK,否则发送上一次ACK/NAK应答;
6.接口的数据交互是全双工的,请求方在等待应答的超时间隔内,可能在未收到
ACK/NAK应答前先收到对方的请求(STX开头),那么应先处理对方的请求;
7.请求内容的每个字段间以“|”字符作为分隔字符,每个字段内必须不能包含“|”
字符,第一个字段表达该请求的类型,比如是check-in还是check-out,后续的字段
包含该类型请求中必要包含的其它信息,比如房间号,客人姓名等。第一个字段前
可有分隔符,也可没有分隔符,最后一个字段后可跟分隔符,也可不跟分隔符;请
求类型后的各字段间没有特别严格的顺序定义,只要包含了协议规定该请求类型中
必须有的所有字段,不论各字段间顺序如何,均视为合法请求;合法请求中不可识
别的字段作忽略处理,而不是丢弃整个请求;对于非法请求,做静默丢弃处理。2.2 链路建立和拆除流程
链路建立使用LS指令,LS表示Link Start,对于TCP,连接发起方总是AMTT,对于串口,连接发起方可以是任意一方。举例如下:
AMTT发送:
HOTEL应答
HOTEL发送:
AMTT应答
链路建立完毕。
链路拆除使用LE指令,LS表示Link End,举例如下:
AMTT发送:
HOTEL应答
HOTEL发送:
AMTT应答
任意一方都可以主动发出LE请求。
2.3 Check-In流程
举例:
HOTEL发送:
AMTT应答:
以上表示1108房间John,Check-In。
字段说明:
GI:表示Guest In,客人Check-In请求;
RN:该字段必选,表示Room Number,房号,也是上网的帐号;
G#:该字段可选,表示客人内部号。对于一个客房房多个客人的系统,此字段与GS
字段一同出现。
GS:该字段可选,表示是否出于客房是否出于多客人共用Share状态,值为Y或N 与G#一同出现;
GN:该字段必选,表示Guest Name,客人姓名;
GG:该字段可选,表示客人所属的团队号;
GL:该字段可选,表示Guest Language,客人语种,两英文大写字母表达,可为CN,EA,JP,SP,IT,GE,KO,分别表示中,英/美,日,西,意和韩文。
GV:该字段可选,表示客人的VIP代码,可进行计费策略选择或Portal控制.参数值双方协商.
2.4 换房或客人信息变更流程
换房举例:
HOTEL发送:
注:G#和GS,意义同GI指令,必须同时出现两个GS,分别表示新旧房间的Share状态,同时GN也必须同时出现两个,分别表示新房间和原房间客人。
以上表示1107房的客人换房到1108。字段依次为:
GC:表示Guest Change,客人换房请求;
RN:表示Room Number,客人要换到的新房间号;
GS:新房间的Share状态;
G#:客人内部号;
RO:表示Room Old,客人原来所在的旧房间号;
GS:原房间的GS状态;
注:客人换房后,上网帐号变为新的房间号。
当GC指令中不存在RO字段时,视为变更信息请求,可以变更GN,GV,GL,GG等信息。举例如下:
HOTEL发送:
以上将1108房客人的姓名变更为李四,VIP代码变更为2。
2.5 Check-Out流程
举例:
HOTEL发送:
AMTT应答:
以上表示1108房间的客人Check-Out。