版本 V1.0 日期 :2015-03-12 厦门朗视信息科技有限公司
1. 概述 该协议允许外部程序控制 TG 网关发送 / 接收短信及发送 USSD 2. TG 配置 在使用 NeoGate TG API 之前, 您需要先登陆 NeoGate TG 网页启用 API 并设置 API 的用户名密码和允许通过 API 端口访问 TG 设备的 IP 地址 启用 SMS API: 勾选用户名 : 自定义, 通过 API 连接到 TG 需要填写相同的用户名 密码 : 自定义, 通过 API 连接到 TG 的设备需要填写这个验证密码, 方可成功连接 具有访问权限的 IP 地址 : 添加允许通过 API 访问 TG 设备的 IP 地址, 格式为 IP 地址 / 子网掩码, 如 192.168.6.0/255.255.255.0 图 1 启用 SMS API 3. 短信客户端连到网关服务器 短信客户端跟 TG 网关是通过 TCP 协议的方式来实现通讯的 IP 地址为网关的 IP, 端口默认为 5038 用户名跟密码是必须与 TG 设置的 API 用户名密码一致 在 TCP 连接成功之后输入登入命令, "Action: Login\r\nUsername: apiuser\r\nsecret: apipass\r\n\r\n" 如果设备返回 Response: Success 的报文说明连接成功, 如果是其他回复则为连接失败 以下是使用 Putty 作为短信客户端 2/9
图 2 使用 Putty 连接到 TG 网关 3/9
图 3 登陆命令 4. 执行 smscommand 命令 smscommand 命令用于查询通过 NeoGate TG GSM/UMTS/CDMA 中继发送的短信的状态 客户端输入 : Action: smscommand\r\ncommand: gsm show spans\r\n\r\n 返回 : GSM span 2: Power on, Provisioned, Undetected SIM Card, Active,Standard GSM span 3: Power on, Provisioned, Undetected SIM Card, Active,Standard GSM span 4: Power on, Provisioned, Up, Active,Standard GSM span 5: Power on, Provisioned, Undetected SIM Card, Active,Standard --END COMMAND-- 4/9
图 4 smscommand 命令 检查特定端口信息 : 如果要检查的特定端口的详细信息, 使用下面的命令客户端 --> 服务器命令 : Action: smscommand\r\ncommand: gsm show span $port+1\r\n\r\n $port: 这个是您想要查询的端口 ; 如, 您想要查询端口 1, 需要输入命令 Action: smscommand\r\ncommand: gsm show span 2\r\n\r\n 服务器 -> 客户端 Response: Follows Privilege: SMSCommand D-channel: 2 Status: Power on, Provisioned, Up, Active,Standard Type: CPE Manufacturer: SIMCOM_Ltd Model Name: SIMCOM_SIM900 Model IMEI: 013227009596135 Model CBAND: EGSM_MODE,ALL_BAND Revision: 1137B13SIM900M64_ST Network Name: CHINA MOBILE Network Status: Registered (Home network) Signal Quality (0,31): 30 SIM IMSI: 460021059661838 5/9
SIM SMS Center Number: +8613800592500 Send SMS Center Number: Undefined Last event: Hangup State: READY Last send AT: AT+CREG?\r\n--END COMMAND-- 图 5 查询 GSM1 5. 发送和接收短信 连接成功后,TG 网关服务器可以用来发送 SMS 和 USSD 服务器收到短信也会发送消息 到客户端 发送短信 客户端 --> 服务器命令 : Action: smscommand\r\ncommand: gsm send sms $port+1 $dest \"$message\" $id\r\n\r\n $port: 用来发送短信的端口 $dest: 对方手机号码 $message: 消息的内容 注意, 如果消息包含特殊字符如 \ r \ n, 最好使用 url_encode 消息编码 之前的最大字节编码是 1024 $id: 短信的唯一标识符 Response status( 响应状态 ): 发送短信后, 消息将会被发送到客户端 消息中的 ID 为发送短信时指定的唯一标识符, smc 是短信中心号码, Status( 状态 ):1 显示成功发送, 和 0 表示失败 6/9
服务器 --> 客户端 Event: UpdateSMSSend Privilege: all,smscommand ID: 2 Smsc: +8613800592500 Status: 1 --END SMS EVENT 图 6 发送短信 接收短信 接到一个短信后,TG 网关会将下列内容发送到客户端, 将根据短信的内容集成 下面例子为中国移动服务热线 10086 回复的余额查询短信 它是由 2 部分集成的一条短信 ID : 短信的唯一标识符 ; GsmPort : 收到短信的端口 ; Sender : 短信发送者的号码 ; Recvtime : 接收时间 ; Index : 短信的排序序列号 Total : 一条短信分机分割成了几条 ; Smsc : 短信中心号码 Content: 短信内容 7/9
--END SMS EVENT Event: ReceivedSMS Privilege: all,smscommand ID: E9510086 GsmPort: 5 Sender: 10086 Recvtime: 2013-11-13 14:59:13 Index: 2 Total: 2 Smsc: +8613800591551 Content: %EF%BB%BF%E8%BF%87%E7%9F%AD%E4%BF%A1%E3%80%81%E8%AF%AD%E9 %9F%B3%E3%80%81%E7%BD%91%E7%AB%99%E8%87%AA%E5%8A%A9%E4%BA%A4%E8 %B4%B9%EF%BC%8C%E6%9B%B4%E5%8F%AF%E4%BA%AB%E5%8F%979.8%E6%8A%98%E 4%BC%98%E6%83%A0%EF%BC%8C%E8%AF%A6%E6%83%85%E7%99%BB%E9%99%86www.10086.cn%E6%9F%A5%E8%AF%A2%E3%80%82%E4%B8%AD%E5%9B%BD%E7%A7%BB%E5 %8A%A8 图 7 接到收到短信 6. 发送 USSD 客户端 --> 服务器 8/9
命令 : Action: SMSCommand \r\ncommand: gsm send ussd $port+1 \"$message\" [$timeout]\r\n\r\n $port: 发送 USSD 的端口 $message:ussd 的内容 $timeout: 超时时间, 默认是 30 秒 成功 : 1: 成功收到 USSD 的通道 : 6 \tussd Responses: 1 \tussd Code: 72 \tussd Len: 276 \tussd Message: 6B228FCE4F7F7528638C4E0A670D52A15385000A003830014F1860E06D3B52A8000A00313 001670065B04F1860E0000A003230018BDD8D3967E58BE2000A003330014E1A52A167E58 BE2000A003430014E1A52A1529E7406000A003630016570636E4E1A52A1000A003730015E 3875284FE1606F000A00393001004700334ECB7ECD000A002D002D002D --END COMMAND USSD Code: 代码值 USSD Message: USSD 的编码内容, 客户端需要解码 USSD 的代码 Failure( 失败 ): 0:Send USSD failed on span 6( 通道 6 发送 USSD 失败 ) Timeout( 超时 ): 0:Send USSD timeout on span 6( 通道 6 发送 USSD 超时 ) [ 结束 ] 9/9