如何通过 Cisco GSM SMS 发送非 ASCII 字符?

网络工程 思科 路由器
2021-07-10 02:49:24

我目前正在使用具有蜂窝接口的 Cisco 881G2 路由器。

从路由器发送短信就像输入以下命令一样简单:

cellular 0 gsm sms send <telephonenumber> <message>

发送包含纯文本的消息工作正常。

根据GSM 03.38 标准,基本字符集中有 128 个字符。然而,其中一些字符需要使用 8 位 ASCII 字符集,这不是 Cisco IOS 中的默认值。感谢下面 Brett Lykins 的回答,我已经能够将我的路由器配置为接受 8 位 ASCII 字符,包括一些斯堪的纳维亚字符,如 æ、ø、å 和这些字符的大写版本。使用 Telnet 并没有给我发送特殊字符的选项,但是 Putty 和 SecureCRT 通过 ssh 确实允许我发送这些特殊字符。

遗憾的是,即使在进行了这些非常有用的修改之后,短信也没有正确到达。我做的两个测试是:

cellular 0 gsm sms send 00474792xxxx Hålla!
cellular 0 gsm sms send 00474792xxxx Greetings æ, ø, å

我的手机收到消息“Hemla!” 和“问候 f-x-e”,而不是发送的内容。出于安全原因,我混淆了上面的手机号码。

问题是 - 如何发送包含这些类型字符的短信?

不幸的是,配置指南没有提供有关如何执行此操作的线索。

路由器运行 C880 软件 (C880DATA-UNIVERSALK9-M),版本 15.2(3)T2 我已经尝试过使用 Putty 和 SecureCRT 7.0.3 在 Windows 上使用 VT100 仿真。

2个回答

过去这个问题让我感到困惑。您正在寻找的命令与打开 8 位字符集有关。

现在,这可能仍然不允许蜂窝调制解调器通过 SMS 发送字符(我没有用于测试的卡),但是这是我所知道的唯一可以帮助您的命令。

根据Cisco 的为终端配置操作特性指南(特别是指定国际字符显示部分):

经典的美国 ASCII 字符集限制为 7 位(128 个字符),这足以代表美国的大多数显示。调制解调器路由器上的大多数默认设置在 7 位路径上效果最佳。但是,国际字符集和特殊符号显示可能需要 8 位宽的路径和其他处理。

您可以使用 7 位字符集(例如 ASCII),也可以启用完整的 8 位国际字符集(例如 ISO 8859)。这允许在横幅和提示中使用特殊的图形和国际字符,并添加特殊字符,例如软件流控制。

启用 8 位字符集的命令是:

default-value special-character-bits 8
default-value exec-character-bits 8

为了进行测试,我尝试在我的实验室路由器中键入 æ,结果如下:

R-VOIPLAB#
R-VOIPLAB#>

由于我打开了默认的 7 位字符长度,因此它将 æ 解释为尖括号。

现在,我打开了 8 位字符集并注销了我的会话并重新登录(注销是开始使用我们刚刚配置的新终端设置所必需的):

R-VOIPLAB#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R-VOIPLAB(config)#default-value exec-character-bits 8
R-VOIPLAB(config)#default-value special-character-bits 8
R-VOIPLAB(config)#exit
R-VOIPLAB#exit

重新登录后:

R-VOIPLAB#
R-VOIPLAB#æ
R-VOIPLAB#æ, ø, å

笔记:

此测试是使用以下配置完成的,因此您的里程可能会因不同的终端仿真器、不同的路由器等而异:

  • 测试计算机:Mac OSX 10.9.2
  • 终端程序:SecureCRT for Mac,7.2.0 版
  • 终端仿真类型:VT100
  • 连接类型:SSH
  • 路由器:2821
  • IOS:15.1(4)M6

我找到了解决办法!我从我的手机向我的路由器发送了一条短信,其中包含一些斯堪的纳维亚字符,在路由器上查看它们后发现:

SMSNOSKIRT01#cellular 0 gsm sms view 2
SMS ID: 2
TIME: 14/03/19 11:03:07
FROM: 474792xxxx
SIZE: 13
Test as ^] ^L ^O

我将这些字符识别为控制字符击键,所以我在谷歌搜索“cisco control sequence”,偶然发现了一个Cisco Ctrl-^ Escape Sequence线程,它指的是看起来像“\x1E”的东西——我认为它是一个转义符包含十六进制值的序列。

再次引用了基本字符集,并编译了一条我发送的消息,如下所示:

cellular 0 gsm sms send 00474792xxxx Greetings \x0F, \x0C, \x1D, \x17

我的手机收到“问候 å, ø, æ, Ψ”

成功!

事实证明,似乎没有必要将 Cisco 路由器转换为 8 位 ASCII 才能发送包含这些特殊字符的消息,但我仍然感谢 Brett Lykins 的参与。