Gragas Posted December 29, 2018 Posted December 29, 2018 Всем привет. Юзаю стандартный 3g модем Huawei E1550/E1750. Это больше МАНУАЛ, но так же прошу помочь расширить функционал! 2 человека очень обрадовались когда я им скинул рабочий когфиг, решил поделиться миром! И так, у меня стоит 13 Asterisk, FreePBX 13,Chan_dongle. Встала задача получать и отправлять смс прямо из сипфона. Получалка и отправлялка смс через Chan_dongle в Sip клиент. Работает в Zoiper, Microsip, PortGo. Больше не проверял... Когда смс приходит на донгл, ее перекидывает на сип сразу под номером с которого она пришла. Соответственно можно на нее ответить или написать новую. 999 это номер sip который может получать и слать SMS с модема. 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 и только 5 из них должны отправлять смс с конкретного транка, а остальные должны общаться междус обой по [messages]? Как сделать проверку в стиле: 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(dongle1,${SMSTO},"${MESSAGE(body)}",1440,yes) итд Вставить ник Quote
Dagobert Posted January 5, 2019 Posted January 5, 2019 Ого! Отозвался астерискер-модемщик! А то все шлюзы шлюзы. Можно наверное AEL применить, но если в текущем варианте, то могу предложить что-то вроде этого [send-sms] exten => _.,1,NoOp(SMS send to dongle) same => n,Set(SMSFROM=${MESSAGE(from)}) same => n,Set(SMSTO=${EXTEN}) same => n,GotoIf($["${SMSFROM})"="555"]?realsend) same => n,NoOp(No SMS) same =>,n,Hangup() exten =>realsend,1,NoOp(Sending sms) 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() Ввел отдельую переменную SMSFROM, чотбы в ней был нормализованый номер отправителя для сравнения и не пришлось городить в условии лишнего. Вставить ник Quote
lipunis Posted May 7, 2020 Posted May 7, 2020 Если 999 это PJSIP экстеншен, будет работать? Вставить ник Quote
lipunis Posted May 7, 2020 Posted May 7, 2020 (edited) Если 999 это PJSIP экстеншен, будет работать? как мне модифицировать мой конфиг?: [from-gsm] exten => s,1,Set(CALLERID(all)=${CALLERID(num)}) exten => s,n,Set(CALLERID(num)=${CALLERID(num)}) exten => s,n,goto(from-trunk,${DONGLEIMEI},1) exten => sms,1,Verbose(Incoming SMS from ${CALLERID(num)} ${SMS}) exten => sms,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DONGLENAME} - ${CALLERID(num)}: ${SMS}' >> /var/log/asterisk/sms.txt) exten => sms,n,Hangup() exten => ussd,1,Verbose(Incoming USSD: ${USSD}) exten => ussd,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DONGLENAME}: ${USSD}' >> /var/log/asterisk/ussd.txt) exten => ussd,n,Hangup() сейчас сделал так: [from-gsm] exten => s,1,Set(CALLERID(all)=${CALLERID(num)}) exten => s,n,Set(CALLERID(num)=${CALLERID(num)}) exten => s,n,goto(from-trunk,${DONGLEIMEI},1) 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:116,${MESSAGE(from)}) exten => sms,n,Hangup() exten => ussd,1,Verbose(Incoming USSD: ${USSD}) exten => ussd,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DONGLENAME}: ${USSD}' >> /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 => s,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(79287771111,${SMSTO},"${MESSAGE(body)}",1440,yes) same => n,Hangup() и сыпет ошибки: [2020-05-08 08:46:26] WARNING[9116][C-00000004]: chan_sip.c:6283 create_addr: Purely numeric hostname (116), and not a peer--rejectin g! Edited May 8, 2020 by lipunis Вставить ник Quote
lipunis Posted May 8, 2020 Posted May 8, 2020 (edited) 16 часов назад, lipunis сказал: exten => sms,n,MessageSend(sip:116,${MESSAGE(from)}) изменил на: exten => sms,n,MessageSend(pjsip:116,${MESSAGE(from)}), входящие заработали. ПОдскажите куда дальше копать, чтобы заработали исходящие? Edited May 8, 2020 by lipunis Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.