如何通过Sabre SOAP API从队列中移除指定PNR?
解决QueueAccessRQ移除PNR队列时的错误问题
嘿,我帮你梳理下你遇到的QueueAccessRQ操作问题,这几个错误其实都是对指令的使用场景理解偏差导致的,咱们逐个拆解:
1. 为啥用<Navigation Action="QR"/>会返回"CANNOT DO THIS IF OFF QUEUE"?
QR是从队列里取出PNR的指令,但你已经通过GetReservationRQ把这个PNR检索出来了——此时它已经处于「离队」状态,自然没法再执行“从队列取出”的操作,系统就会抛出这个错误。
2. 用<Navigation Action="E"/>返回"NO CHANGES MADE TO PNR - UPDATE OR IGNORE"是咋回事?
E指令是把PNR放回原队列,但你的需求是移除队列,而且当前PNR本来就不在队列里,执行这个操作等于没做任何变更,系统当然会提示你“没修改PNR”。
3. 同时用Navigation和Selection为啥会报"Navigation, Selection are mutually exclusive"?
QueueAccessRQ的规则很明确:<Navigation>是用来操作当前会话中已经检索到的PNR,而<Selection>是用来指定队列里待操作的PNR,这俩参数组是互斥的,不能同时用,系统直接拒绝这种冲突调用。
正确移除PNR队列状态的姿势
既然你已经用GetReservationRQ拿到了目标PNR,想要移除它的队列关联,直接用<QueueRemove>节点就行,不用绕Navigation或者Selection。给你个参考调用格式:
<QueueAccessRQ Version="2.0.0"> <QueueRemove/> <!-- 可选:如果需要确认操作结果,加上ReturnOptions返回更新后的PNR --> <ReturnOptions RetrievePNR="true"/> </QueueAccessRQ>
几个注意点:
- 确保当前会话已经通过GetReservationRQ成功加载了目标PNR,系统会自动关联这个上下文
- 如果PNR本来就不在任何队列里,执行这个操作会返回类似"PNR NOT ON QUEUE"的提示,属于正常情况
内容的提问来源于stack exchange,提问作者Don
相关产品推荐
相关产品推荐

