通过AT+CMGL命令接收OTP短信(如Whatsapp)。

问题描述 投票:0回答:1

我是GSM AT命令的新手,我用的是中兴MF190S USB 3G USB调制解调器,带的是 调制解调器Nodejs模块 也试过用MS Hyperterminal。

我所面临的问题是,当我收到短信时,使用 AT+CMGL="ALL" 从Whatsapp(例如)我在发件人号码一栏中得到的信息是 81084326797126204 这是一个无效的电话号码,应该是 "Whatsapp",而不是 "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

如以下所述 联系

+CMGL: index,message_status,address,[address_text],[service_center_time_stamp][,address_type,sms_message_body_length]sms_message_body[+CMGL: ...] 。

地址栏

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

地址_文本字段

+CMGL AT 命令信息响应的第四个字段 address_text 是一个字符串,包含与电话簿中的地址相关联的文本。例如,如果文字 "Alice "与电话簿中的电话号码 "91234567 "相关联,则address_text将是 "Alice"。AT命令+CSCS(命令名称在文本中为:Select TE Character Set)可以用来指定显示address_text的字符集。请注意,address_text是一个可选的字段。一些GSMGPRS调制解调器和手机(例如:大多数诺基亚产品,包括我的诺基亚6021)将此字段留空。

我如何辨别消息是来自Whatsapp或其他服务提供商的名称?

node.js serial-port sms at-command sms-gateway
1个回答
0
投票

您写道

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

如果你的设备曾经识别过这个号码,它可能在设备的电话簿中,也许它被删除了。

你可以尝试使用以下方法重新存储该号码。AT+CPBW 命令。

AT+CPBW=[<index>][,<number>[,<type>[,<text>]]!

哪儿

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

所以,在你的情况下。

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

在它后面,你应该看到的名字出现在 +CGML 列表。你可能需要在PB写入后重启设备,才能看到改变生效。

这个改变是在 当前 电话簿,通常是SIM卡。它可以通过命令来查询 AT+CPBS? (也可以更改,详见指南)。

我建议探索每个电话簿的内容,以发现任何设备(和SIM卡)的默认内容。读取电话簿条目的命令是**。AT+CPBR**. 提供

AT+CPBR=1,N

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

© www.soinside.com 2019 - 2024. All rights reserved.