asterisk 短信是什么?它有哪些独特之处?

Asterisk 短信功能详解

asterisk 短信

背景介绍

Asterisk 是一个开源的 IP PBX(Private Branch Exchange,专用分组交换机),广泛应用于 VoIP(Voice over Internet Protocol)领域,它支持多种语音和数据通讯协议,包括 SIP、IAX2、PRI 等,Asterisk 不仅可以处理传统的电话通信,还具备丰富的扩展功能,如短信服务、传真服务等,本文将详细介绍如何在 Asterisk 中实现短信功能

一、Asterisk 短信发送模式

文本模式(Text Mode)

在文本模式下,每次只能发送140个字节的内容,如果短信内容超过140字节,则需要进行分割发送。

asterisk 短信

示例脚本

#!/bin/bash
SMS Content(s)
SMS_CONTENTS="123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
SPAN Number(s)
SPAN=1
Destination Number(s)
NUMBER=15623841257
SMS Center Number.
#SMSC= 1380075500 #Shenzhen China
#Sending MODE: pdu or text
MODE=text
Set up sending methods
if [ $MODE = text ];then
    LIMIT=140
    asterisk -rx "gsm set send sms mode text"
else
    LIMIT=70
    asterisk -rx "gsm set send sms mode pdu"
fi
Count the length of whole SMS
LENGTH=${#SMS_CONTENTS}
Groups of sending time(s)
TIMES=$(($LENGTH / $LIMIT))
The remaining length of SMS
LAST=$(($LENGTH % $LIMIT))
if [ $LAST -eq 0 ];then
    SEND_TIMES=$TIMES
else
    SEND_TIMES=$(($TIMES+1))
fi
echo "Please note: Your SMS will be separated into $SEND_TIMES section(s) to send!"
for((i=0; i<$TIMES; i++)) do
    S=$(($i*$LIMIT))
    REAL_CONTENT=${SMS_CONTENTS:$S:$LIMIT}
    asterisk -rx "gsm send sms $SPAN $NUMBER "$REAL_CONTENT""
    echo $(($i + 1))
done
if [ $LAST -ne 0 ]; then
    S=$(($LENGTH $LAST))
    REAL_CONTENT=${SMS_CONTENTS:$S:$LAST}
    asterisk -rx "gsm send sms $SPAN $NUMBER "$REAL_CONTENT""
    echo $(($TIMES + 1))
fi

此脚本用于强制截断短信内容并分多次发送。

PDU模式(PDU Mode)

在PDU模式下,每次只能发送70个字节的内容,如果短信内容超过70字节,同样需要进行分割发送。

示例脚本

#!/bin/bash
SMS Content(s)
SMS_CONTENTS="1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
SPAN Number(s)
SPAN=1
Destination Number(s)
NUMBER=15623841257
SMS Center Number.
#SMSC= 1380075500 #Shenzhen China
#Sending MODE: pdu or text
MODE=pdu
Set up sending methods
if [ $MODE = text ];then
    LIMIT=140
    asterisk -rx "gsm set send sms mode text"
else
    LIMIT=70
    asterisk -rx "gsm set send sms mode pdu"
fi
Count the length of whole SMS
LENGTH=${#SMS_CONTENTS}
Groups of sending time(s)
TIMES=$(($LENGTH / $LIMIT))
The remaining length of SMS
LAST=$(($LENGTH % $LIMIT))
if [ $LAST -eq 0 ];then
    SEND_TIMES=$TIMES
else
    SEND_TIMES=$(($TIMES+1))
fi
echo "Please note: Your SMS will be separated into $SEND_TIMES section(s) to send!"
for((i=0; i<$TIMES; i++)) do
    S=$(($i*$LIMIT))
    REAL_CONTENT=${SMS_CONTENTS:$S:$LIMIT}
    asterisk -rx "gsm send sms $SPAN $NUMBER "$REAL_CONTENT""
    echo $(($i + 1))
done
if [ $LAST -ne 0 ]; then
    S=$(($LENGTH $LAST))
    REAL_CONTENT=${SMS_CONTENTS:$S:$LAST}
    asterisk -rx "gsm send sms $SPAN $NUMBER "$REAL_CONTENT""
    echo $(($TIMES + 1))
fi

此脚本用于强制截断短信内容并分多次发送。

二、Asterisk 接收短信配置

基本配置步骤:

确保 Asterisk 的版本至少为 1.8,因为早期版本不支持完整的短信功能。

安装chan_dongle 或其他支持 GSM 卡的驱动模块,OpenVox GSM 卡支持两种短信发送模式:text 和 pdu,用户可以通过 CLI 控制台命令自行设定发送模式,由于当前对于 text 模式每次只支持 140 个字节发送,pdu 每次发送只支持 70 个字节,剩下的短信内容将无法发送,如下这个脚本主要就是强制截断短信内容分若干次发送,这样做比较灵活。

配置拨号规则以处理接收到的短信,使用 AGI(Asterisk Gateway Interface)脚本来处理短信内容。

设置短信中心号码(SMSC)。

asterisk 短信

确保系统已正确识别 GSM 卡并能够发送和接收短信。

示例配置:

[general]
context = from-internal-calls
sms_span_id = 1          ; Span ID for SMS messages (typically 1)
sms_outgoing_carrier = YOUR_CARRIER_NAME ; Outgoing SMS carrier name (e.g., AT&T, Verizon)
sms_incoming_carrier = YOUR_CARRIER_NAME ; Incoming SMS carrier name (e.g., AT&T, Verizon)
sms_default_coding = UCS2 ; Default encoding for SMS messages (UCS2 or GSM)
sms_max_message_length = 160 ; Maximum message length in characters (including overhead)

> 配置完成后,重启 Asterisk 服务以使更改生效,然后可以通过发送测试短信来验证配置是否正确,如果一切正常,你应该能够在控制台上看到接收到的短信内容,还可以编写自定义的 AGI 脚本来进一步处理这些短信,例如将其转发到电子邮件地址或存储到数据库中。

到此,以上就是小编对于“asterisk 短信”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/650897.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2024-11-17 11:57
Next 2024-11-17 11:59

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入