通过AT + CMGL命令(例如Whatsapp)接收OTP SMS

时间:2020-05-30 15:34:47

标签: node.js serial-port sms at-command sms-gateway

我是GSM AT Commands的新手,并且我正在使用带有Modem Nodejs Module的ZTE MF190S USB 3G USB调制解调器,并且还尝试了MS Hyperterminal。

我面临的问题是,当我从Whatsapp使用AT+CMGL="ALL"接收短信时(例如),我进入发件人号码字段81084326797126204,该号码是无效的电话号码,应改为“ Whatsapp”尽管制造商的软件正常显示了Whatsapp的消息。

注意:我尝试将其解码为十六进制字符串,但未完成。

> AT+CSCS="GSM"
> AT+CPMS="ME"
> AT+CMGL="ALL"
//Result
+CMGL: 0,"REC UNREAD","81084326797126204",,"20/05/30,14:53:55+08"
        FEFF000000000000000000000000000000000000020

如本link

中所述

+ CMGL:索引,消息状态,地址,[地址文本],[service_center_time_stamp] [,地址类型,sms_message_body_length] sms_message_body [+ CMGL: ...]

地址字段

+ CMGL AT命令的信息响应的第三个字段, 地址,是一个字符串,其中包含存储在其中的地址/电话号码 SMS消息头。如果读取的SMS消息是传入的SMS 消息,地址字段包含原始发件人地址。如果短信 读取的消息是外发SMS消息,地址字段包含 收件人地址。通常,地址字段值为电话 使用典型的ISDN /电话编号计划格式化的号码 (ITU E.164 / E.163)。例如,“ + 85291234567”。

address_text字段

+ CMGL AT命令的信息响应的第四个字段, address_text,是一个包含与地址关联的文本的字符串 在电话簿中。例如,如果文本“ Alice”与 电话簿中的电话号码“ 91234567”,address_text将为 “爱丽丝”。 AT命令+ CSCS(命令名称以文本形式:选择TE 字符集)可用于指定要显示的字符集 address_text。请注意,address_text是可选字段。一些 GSM / GPRS调制解调器和移动电话(例如:大多数诺基亚产品, 包括我的诺基亚6021)将此字段留空。

如何确定消息来自Whatsapp或任何其他服务提供商的名称?

1 个答案:

答案 0 :(得分:0)

你写了

+ CMGL AT命令的信息响应的第四个字段,address_text,是一个字符串,其中包含与电话簿中的地址相关联的文本

如果您的设备曾经识别过该号码,则该号码可能在该设备的电话簿中,并且可能已被删除。

您可以尝试使用 AT+CPBW 命令再次存储数字:

AT + CPBW = [] [, [, [,]]]

其中

  • 索引是电话簿中的记录位置。如果省略,记录将存储在第一个空闲位置
  • 数字是要以字符串格式存储在电话簿中的数字
  • 类型是数字类型;国家计划为129,国际计划为145
  • 文本是电话簿中条目的名称

所以,在您的情况下:

AT+CPBW=,"81084326797126204",129,"WhatsApp"

在它之后,您应该看到名称出现在+CGML列表中。在PB写入之后,您可能需要重新启动设备才能看到更改的效果。

更改是在当前电话簿中完成的,通常是SIM卡。可以使用命令AT+CPBS?进行查询(它也可以对其进行更改;有关更多说明,请参见指南)。

我建议您浏览每本电话簿的内容,以便发现任何设备(和SIM)的默认内容。读取电话簿条目的命令是** {AT+CPBR**。提供

AT+CPBR=1,N

显示了1到N之间的所有索引。如果将N设置为电话簿的大小,则可以列出其中的所有条目。

相关问题