I am sending WCTP wctp-SendMsgMulti
operations to my carrier (Verizon), and when people send SMSs in response I am receiving the notifications just fine.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<wctp-Operation wctpVersion="wctp-dtd-v1r2">
<wctp-MessageReply>
<wctp-ResponseHeader responseTimestamp="2013-10-17T23:34:22.000Z" responseToMessageID="someLongId">
<wctp-Originator senderID="7075551212"/>
<wctp-MessageControl messageID="someLongId"/>
<wctp-Recipient recipientID="myVzwLogin"/>
</wctp-ResponseHeader>
<wctp-Payload>
<wctp-Alphanumeric>Yes</wctp-Alphanumeric>
</wctp-Payload>
</wctp-MessageReply>
</wctp-Operation>
Right now, I'm returning an empty HTTP 200 response to the notification.
If I poll the WCTP service after receiving the notification, I see the same wctp-MessageReply
is still pending. The carrier seems to think that it hasn't been delivered to me yet.
Since the notification arrives without a sequenceNo
, I can't remove it using a wctp-PollForMessages
operation.
I would love to be able to be able to respond to the notification in a way that tells the carrier not to keep the message queued, but the spec says nothing about what the proper response is to a wctp-MessageReply
operation.
Any help?
I found the answer, in section 3.8 of the spec titled Call Flow Between Network Elements. You're supposed to send a wctp-Confirmation
.
Success:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<wctp-Operation wctpVersion="wctp-dtd-v1r2">
<wctp-Confirmation>
<wctp-Success successCode="200" successText="Reply received">Reply received</wctp-Success>
</wctp-Confirmation>
</wctp-Operation>
Failure:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<wctp-Operation wctpVersion="wctp-dtd-v1r2">
<wctp-Confirmation>
<wctp-Failure errorCode="300" errorText="Opertion not understood.">Operation not understood.</wctp-Failure>
</wctp-Confirmation>
</wctp-Operation>