如何检查通过 IMS 发送 SMS 问题
IMS注册后,IMS 更新短信服务状态为全服务,IMS 发送短信服务 sms_service_status = IMSA_FULL_SERVICE 对 APP 的可用指示。在电话收到 SMS 服务可用指示后,电话必须通过 IMS 发送 SMS。
//MS更新短信服务状态
08:35:35.233 ims_reg_service_status.cpp 1693 H ims_update_service_status | Changing SMS Service Status From 0 to 2
//IMS通过QMI向APP发送短信服务可用指示
2017 Jun 6 08:35:35.233 [96] 0x1544 QMI_MCS_QCSI_PKT
packetVersion = 2
MsgType = Indication
............
Service_IMSA{
ServiceIMSAV1{
imsa_service_status{
imsa_service_status_indTlvs[0]{
Type = 0x10
Length = 4
sms_service_status {
sms_service_status = IMSA_FULL_SERVICE //IMSA 全服务
}
}
}
}
}
通过IMS 发送 SMS 的步骤:
步骤 1,检查调制解调器是否收到 wms_raw_send 的 QMI 命令
AP通过QMI命令“wms_raw_send”向modem发送短信,如果没有这个命令,需要从AP侧检查该命令是否被触发
Service_WMS
{
ServiceWMSV1 {
wms_raw_send {
wms_raw_send_reqTlvs[0] {
......
raw_message_data {
format = WMS_MESSAGE_FORMAT_GW_PP
len = 23
raw_message =
{
0, 33, 0, 13, 145, 104, 129, 53,
41, 54, 0, 248, 0, 8, 8, 101,
54, 82, 48, 87, 48, 87, 64
}
}
}
wms_raw_send_reqTlvs[1] {
Type = 0x13
Length = 1
sms_on_ims {
sms_on_ims = true //短信通过IMS服务发送
}
}
}
}
}
步骤2,检查是否调用了发送短信回调函数
1.检查IMS注册消息中是否包含SMS标签(SMIP)
1980 Jan 11 05:04:01.933 [41] 0x156E IMS SIP Message -- IMS_SIP_REGISTER/ INFORMAL_RESPONSE
........
m: <sip:[240e:f8:f700:15e:4a1f:7ef6:d01:4b94]:5060>;+sip.instance="urn:gsma:imei:86049303-817384-0>";+g.3gpp.icsi-ref="urn%3Aurn-7%3A3gpp-ervice.ims.icsi.mmtel";+g.3gpp.smsip;video; +g.3gpp.accesstype="cellular2"
2.如果 NV 66472 sms_domain_pref 设置为 1,则首选通过 IP 网络调用 SMS 服务
DPL 回调函数 qpOriginateSmsCb 被调用,发送 SMS 在 IMS 中处理
[0051/0001] | MSG | 2017/05/09 15:14:52.857 | IMS/Medium | [ qpDplSms.c 1005] qpOriginateSmsCb: as_id[1] | | |
[0051/0002] | MSG | 2017/05/09 15:14:52.857 | IMS/High | [ qpDplSms.c 744] qpProcessSmsEvent - sMoSmsCbStruct.iCbType=0 | | |
步骤3,检查IMS SIP信令是否正常
发送 SMS 的普通 IMS SIP 消息如下:
- UE send IMS message. //UE发送IMS消息
- Network send 202 response //网络回复202
- Network send ACK //网路发送ACK请求
- UE send 200 OK //UR发送200 OK
UE 发送IMS消息
2017 May 9 15:14:52.882 [B4] 0x156E IMS SIP Message -- IMS_SIP_MESSAGE/INFORMAL_RESPONSE
Version = 1
Direction = UE_TO_NETWORK............
Message ID = IMS_SIP_MESSAGE
Response Code = INFORMAL_RESPONSE (0)
网络回复202
2017 May 9 15:14:53.142 [5E] 0x156E IMS SIP Message -- IMS_SIP_MESSAGE/ACCEPTED
Version = 1
Direction = NETWORK_TO_UE
............
Message ID = IMS_SIP_MESSAGE
Response Code = ACCEPTED (202)
CM Call ID = 255
SIP Call ID = 1557053765_2375979544@2409:8808:528:dad3:d2ef:3e82:e560:1a03
Sip Message = SIP/2.0 202 Accepted
网络发送ACK请求
2017 May 9 15:14:53.375 [60] 0x156E IMS SIP Message -- IMS_SIP_MESSAGE/INFORMAL_RESPONSE
Version = 1
Direction = NETWORK_TO_UE
............
Message ID = IMS_SIP_MESSAGE
Response Code = INFORMAL_RESPONSE (0)
UE回复200 OK
2017 May 9 15:14:53.391 [67] 0x156E IMS SIP Message -- IMS_SIP_MESSAGE/OK
Version = 1
Direction = UE_TO_NETWORK
............
Message ID = IMS_SIP_MESSAGE
Response Code = OK (200)
CM Call ID = 255
SIP Call ID = 1876559223j145.103.16622639860@192.168.103.137
Sip Message = SIP/2.0 200 OK
步骤4,检查QMI响应
1.如果IMS SIP消息正常,但是modem发送如下QMI失败响应,请先与WMS端确认
2.如果modem发送QMI成功响应,但UI显示错误,请从APP或UI端检查
//MO SMS failure
[0018/0003] | MSG | 15:14:53.397 | Wireless Messaging Services/Error | [ wmscm_gw.c 131] Error during msg submit WMS_RPT_RP_ERROR |
[0018/0002] | MSG | 15:14:53.397 | Wireless Messaging Services/High | [ wmsmsg.c 16166] Received Report for SMI = 151 Record 0 |
[0018/0002] | MSG | 15:14:53.397 | Wireless Messaging Services/High | [ wmsmsg.c 16250] MO SMS Failure Cause Value = 30 |
2017 May 9 15:14:53.403 [9C] 0x1544 QMI_MCS_QCSI_PKT packetVersion = 2
MsgType = Response
.................
Service_WMS {ServiceWMSV1 {
wms_raw_send {
wms_raw_send_respTlvs[0] {
Type = 0x02
Length = 4
resp {
result = QMI_RESULT_FAILURE
error = QMI_ERR_CAUSE_CODE
}
}
}
}