Chan_dongle SMS to SIP & SIP TO SMS Huawei E1550,1750

обсуждение вопросов по IP-PBX Asterisk

Chan_dongle SMS to SIP & SIP TO SMS Huawei E1550,1750

Сообщение Gragas » Сб дек 29, 2018 3:47 am

Всем привет. Юзаю стандартный 3g модем Huawei E1550/E1750.
Это больше МАНУАЛ, но так же прошу помочь расширить функционал!
2 человека очень обрадовались когда я им скинул рабочий когфиг, решил поделиться миром!

И так, у меня стоит 13 Asterisk, FreePBX 13,Chan_dongle.
Встала задача получать и отправлять смс прямо из сипфона.

Получалка и отправлялка смс через Chan_dongle в Sip клиент.
Работает в Zoiper, Microsip, PortGo. Больше не проверял...
Когда смс приходит на донгл, ее перекидывает на сип сразу под номером с которого она пришла.
Соответственно можно на нее ответить или написать новую.
999 это номер sip который может получать и слать SMS с модема
XXX это кол-во символов в сип номере, их три т.к. номер "999"
dongle0 - имя модема с которого получать и слать смс
если модемов много, то получать со всех, а отправлять только с одного (dongle0)
нет отложенной отправки смс (если сип 999 в сети, смс получит, а если нет - то нет, нооооо в лог пишет при любом раскладе)

###########################
если используется FREEPBX - в админке:Settings>>>Asterisk SIP Settings,
вкладка Chan SIP settings, внизу есть поля для заполнения (Other SIP Settings).
А если чистый астериск, то пихать сюда
/etc/asterisk/sip.conf

вот параметры:
******************************************
accept_outofcall_message=yes
outofcall_message_context=messages
auth_message_requests=no
textsupport=yes



/etc/asterisk/extensions_custom.conf
[from-trunk-dongle]
exten => sms,1,Set(MESSAGE(body)=${BASE64_DECODE(${SMS_BASE64})})
exten => sms,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DONGLENAME} - ${CALLERID(num)}: ${BASE64_DECODE(${SMS_BASE64})})' >> /var/log/asterisk/sms.txt)
exten => sms,n,Set(MESSAGE(from)="${CALLERID(num)}" <${CALLERID(num)}>)
exten => sms,n,Set(CALLERID(name)=${CALLERID(num)})
exten => sms,n,Verbose(1,${MESSAGE(from)})
exten => sms,n,MessageSend(sip:999,${MESSAGE(from)})
exten => sms,n,Hangup()

exten => _.,1,Set(CALLERID(name)=${CALLERID(num)})
exten => _.,n,Goto(from-trunk,${DONGLEIMEI},1)

exten => ussd,1,Verbose(Incoming USSD: ${BASE64_DECODE(${USSD_BASE64})})
exten => ussd,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DONGLENAME}: ${BASE64_DECODE(${USSD_BASE64})}' >> /var/log/asterisk/ussd.txt)
exten => ussd,n,Hangup()

[messages]
include => send-sms
exten => _XXX,1,MessageSend(sip:${EXTEN},"${CALLERID(name)}"${MESSAGE(from)})

[send-sms]
exten => _.,1,NoOp(SMS send to dongle)
same => n,NoOp(To ${MESSAGE(to)})
same => n,NoOp(From ${MESSAGE(from)})
same => n,NoOp(Body ${MESSAGE(body)})
same => n,Set(SMSTO=${EXTEN})
same => n,DongleSendSMS(dongle0,${SMSTO},"${MESSAGE(body)}",1440,yes)
same => n,Hangup()

Внимание вопрос, а что делать если модемов 5, юзеров 15...
Как сделать проверку в стиле:
if extension = 999 and numberTO-not(555,444,6666666,999999,777777,999999,77774,44,44444)goto [send-sms]
А в [send-sms] проверку:
if extension = 999 goto same => n,DongleSendSMS(dongle0,${SMSTO},"${MESSAGE(body)}",1440,yes)
elseif extension = 444 goto same => n,DongleSendSMS(dongle0,${SMSTO},"${MESSAGE(body)}",1440,yes)
итд
Спасибо за внимание. Я с миром поделился, может и мир со мной поделится)
Gragas
Новичок
 
Сообщения: 1
Зарегистрирован: Сб дек 29, 2018 2:40 am
Карма: + 0 -

Re: Chan_dongle SMS to SIP & SIP TO SMS Huawei E1550,1750

Сообщение ded » Пн дек 31, 2018 3:34 pm

Gragas писал(а):Как сделать проверку в стиле:
if extension = 999 and numberTO-not(555,444,6666666,999999,777777,999999,77774,44,44444)goto [send-sms]
А в [send-sms] проверку:
if extension = 999 goto same => n,DongleSendSMS(dongle0,${SMSTO},"${MESSAGE(body)}",1440,yes)
elseif extension = 444 goto same => n,DongleSendSMS(dongle0,${SMSTO},"${MESSAGE(body)}",1440,yes)
итд

numberTO-not -555,444,6666666,999999,777777,999999,77774,44,44444 (логики тут конечно никакой, 999999 дважды)- определите что делать если всё же extension = 999 и destination = 555,444,6666666,999999,777777,999999,77774,44,44444
пока сделаем в /dev/null - Hangup()

exten => 444/999,1,Hangup()
exten => 555/999,1,Hangup()
exten => 6666666/999,1,Hangup()
exten => _X/999.,1,GoTo(send-sms,${EXTEN},1)
и т.п.
или сложную логическую проверку
exten => _X/999.,1,GotoIf("(${EXTEN} !=444 OR ${EXTEN} !=555 ${EXTEN} !=999999)"?send-sms,${EXTEN},1)

А вообще лучше вам на forum.postmet.com идти, и книжку о будущем телефонии читать, да к встрече Нового года готовиться.
С Новым годом.
ded
Специалист
 
Сообщения: 4094
Зарегистрирован: Сб май 03, 2008 2:47 am


Вернуться в Asterisk (*)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron