【问题标题】:Receiving OTP SMS Via AT+CMGL Command (e.g. Whatsapp)通过 AT+CMGL 命令接收 OTP SMS(例如 Whatsapp)
【发布时间】:2020-05-30 15:34:47
【问题描述】:

我是 GSM AT 命令的新手,我正在使用带有Modem Nodejs Module 的 ZTE MF190S USB 3G USB 调制解调器,也尝试使用 MS 超级终端。

我面临的问题是,当我使用来自 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: 索引,message_status,address,[address_text],[service_center_time_stamp][,address_type,sms_message_body_length]sms_message_body[+CMGL: ...]

地址字段

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

address_text 字段

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

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

【问题讨论】:

  • 让我明白。您只想在AT+CGML 的第四个参数中包含“WhatsApp”字符串吗?您是否有理由不能通过从列表中显示的每条消息中解析特定数字来识别这些消息?您是否尝试在电话簿中插入该号码?
  • You would just like to have The "WhatsApp" string in the fourth parameter of AT+CGML? 是的,我不知道为什么它不能像制造商的软件一样显示,我想可能缺少显示更多关于 SMS 的详细信息的命令,我试过了AT+CSDH=1 获取短信标头也尝试使用文本和 PDU 模式。
  • 我试着写一个答案。我不能 100% 确定它会解决您的问题,但无论如何它可能对遇到类似问题的人有所帮助。

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


【解决方案1】:

你写的

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

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

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

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

在哪里

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

所以,在你的情况下:

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

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

更改是在当前电话簿中完成的,通常是 SIM 卡。可以通过命令AT+CPBS?查询(也可以修改,详细解释见指南)。

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

AT+CPBR=1,N

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    相关资源
    最近更新 更多