Talant Blogs about VOIP
5.05.2021
freepbx 15 automatic sync for high availability. part 1.
Part 1
main aim is using internal features of freepbx to make sync between two PBXs. Automatic sync will be made by back&restore feature in FREEPBX.
STEP: 1. add asterisk public key from master FREEPBX to backup server. master public key for asterisk user you can find in menu “Backup&Restore -> Global Setting”
Copy this key to /home/asterisk/.ssh/authorized_keys at Backup machine.
STEP: 2. Add new filestore with SSH connect to backup server
STEP: 3. example of ssh parameters for ssh connect
STEP 4: create new backup in menu “Backup&Restore”. use any modules you need and set crontime you wish. for example i will be use one time per day. Better you set “Delete After Runs” 1 so only 1 file will be in backup server.
Now run it and check if new file with backup created in /home/asterisk dir at backup server.
STEP5: add cronjob at backup: something like that: crontab -u asterisk -e
0 1 * * * fwconsole backup –restore /home/asterisk/*.tar.gz
asterisk 16. webrtc. sipml5
Основная статья по настройке на официальном сайте:
у меня не завелось сразу по причине:
подгружался модуль chan_sip , нужно добавить noload = chan_sip.so в modules.conf
И не стартовал внутренний https сервер астериска с сертификатами которые сгенерил астериск, решением может быть генерация через letsencrypt
короткая инструкция по установке:
for centos 7 only: install asterisk 16 , apache and git use asterisk configuration files inside repository repository with example and configuration files are in : cd /root git clone https://erewin@bitbucket.org/yooxy/webrtc-asterisk-example.git download sipml5 into /var/www/html directory cd /var/www/html git clone https://github.com/DoubangoTelecom/sipml5.git you have to add ssl for apache yum install mod_ssl change ssl.conf to useing your certificates or use ssl.conf from repository tune your codecs at asterisk side remember that certificates are allowed for 3 months only then it have to be renewed firewall setting you may check with firewall-cmd --info-zone=public9.12.2020
sipdump per day. compressed. heplify.
Ниже представлен скрипт для установки сервиса systemd сбора sip пакетов в папку /var/log/sipdump по дням. в дальнейшем можно распаковать файлы и и пробежаться по ним sngrep.
!/usr/bin/sh echo "Instaiiling sipdump have started: \n" yum install wget git -y apt install wget git -y cd /usr/src/ mkdir sipdump cd sipdump wget https://github.com/sipcapture/heplify/releases/download/1.62/heplify chmod 760 heplify cp heplify /usr/bin rm heplify mkdir /var/log/sipdump echo " [Unit] Description=Yooxy sipdump After=network.target ConditionPathExists=/var/log/sipdump [Service] WorkingDirectory=/var/log/sipdump ExecStart=/usr/bin/heplify -dim OPTIONS,NOTIFY -wf /var/log/sipdump -rt 1440 -zf -sl ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure [Install] WantedBy=multi-user.target Alias=sipdump.service" > sipdump.service chmod 664 sipdump.service cp sipdump.service /etc/systemd/system/sipdump.service rm sipdump.service systemctl daemon-reload systemctl start sipdump echo "Script ending \n"
| Posted in Asterisk, freeswitch, kamailio, opensips, Готовые решения | No Comments »
Asterisk. hints. States.
Получить данные о состоянии пиров можно так:
Подключаемся по AMI: telnet 127.0.0.1 5038
Action: Login ActionID: 1 Username: manager Secret: password
получаем данные:
Action: Getvar
ActionID: 1
Variable: DEVICE_STATE(SIP/1000)
ответ:
ActionID: 1 Variable: DEVICE_STATE(SIP/1003) Value: INUSE24.09.2020
TCP\TLS NAT Zoiper
Столкнулся с проблемой, когда через sip прокси (opensips) не проходили пакеты (OPTIONS, NOTIFY, INVITE) в сторону uac при использовании TCP и TLS протоколов. при TLS opensips ругался 477/Send Error, при использовании TCP – 408 timeout. И действительно пакеты с opensips уходили, но не доходили до UAC.
Причина была в использовании STUN, если его отключить на Zoiper то связь работает хорошо в обе стороны.
19.12.2019WEBRTC2SIP. KAMAILIO. RTPENGINE. CENTOS 7.
Полная статья по инсталляции webrtc2sip на centos 7 здесь. А тут видео.
В качестве основы эту статью и компиляцию вручную. В целом компиляция особых проблем не вызвала. Пакеты все которые надо ставятся.
Проблема возникла при инсталляции в качестве сервиса.
а) не стал разбираться с правами и запускаю от root,
б) необходимо убрать из rtpengine.services параметры из окружения,
Было:
ExecStart=/usr/sbin/rtpengine --config-file=${CFGFILE} --interface=${INTERFACE} --listen-ng=${LISTEN_UDP} --log-facility=${LOG_FACILITY} --log-level=${LOG_LEVEL}
Стало:
ExecStart=/usr/sbin/rtpengine --pidfile /run/rtpengine.pid --config-file /etc/rtpengine/rtpengine.conf --table 0
в) учесть имена pid файла, он должен совпадать в /etc/rtpengine/rtpengine.conf , /etc/sysconfig/rtpengine , rtpengine.service – последний файл можно найти командой systemctl status rtpengine.service.
Помощь с ошибками:
webrtc console: Called with SDP without DTLS fingerprint. - для моей версии rtpengine, необходимо было использовать ICE=force, без этого флага rtpengine не добавлял fingerprint в SDP. возможно в новых версиях rtpengine всё уже в порядке.
| Posted in Asterisk, kamailio, Готовые решения | No Comments »
callback+freepbx+AMD
Схема работы такая:
Любой разрешенный ip звонит на DID номер pbx, станция перезванивает с DID номера и соединяет с внутренним абонентом) показывая в качестве callerid номер на который осуществляется дозвон.
Особенности: минимум вмешательства в код freepbx чтобы можно было использовать весь функционал станции.
У вас уже установлена: Freepbx, callback модуль, правильно настроены callback и trunk в интерфейсе freepbx
Всё что нам нужно это добавить передачу переменной в callback модуль:
//define the args for Originate
$channel = "Local/".$callback_number."@from-internal";
$exten = $callback_exten;
$context = $callback_context;
$priority = $callback_priority;
$timeout = $callback_timeout;
$callerid = $callback_callerid;
$variable = "__MYVAR4=$callback_number";
$account = "";
$application = "";
$data = "";
затем поймать её в extension_custom.conf
[macro-dialout-one-predial-hook]
exten => s,1,set(CALLERID(all)=${MYVAR4})
[macro-AMD1]
exten => s,1,noop("Check of answering machine")
exten => s,n,background(silence/1)
exten => s,n,AMD()
exten => s,n,NoOp("AMD STATUS IS :"${AMDSTATUS}"…CAUSE:"${AMDCAUSE})
exten => s,n,Set(CDR(userfield)=${AMDSTATUS}|${AMDCAUSE})
exten => s,n,GotoIf($[${AMDSTATUS}=HUMAN]?human:mach)
exten => s,n(mach),Hangup()
exten => s,n(human),noop(This is Human continue)
How to use callback calls at freepbx
- Create callback application in menu. It will make you possible to send calls from callback to any registered extension \ Ring groups \ Queues \ IVR or something else. In CallerID field you should set “${FROM_DID}” to send calls from your DID number.
- Create Trunk for making outbound calls with AMD it may be any trunk but you should add “TM(AMD1)” in Dial options.
- Create inbound route for receive call from any IP and to specific DID number: you have example here in interface with number 55555. Choose destination as callback application created at step 1.
- Create outbound route for route calls making by your freepbx (not only from callback app). You should set Dial Patterns to avoid making call to destinations that you don’t want to call.
- Apply changes. That is all you need in web interface.
AMI FREEPBX NAMI SYSLOG NODEJS
В этом проекте нам нужно сохранять различные события в очередях Астериска через nodejs библиотеку NAMI. Сложности тут на первый взгляд только одна, это создания таблиц для сохранения событий. На самом деле нет, есть еще задача сохранения неудачного запроса, есть задача выполнения асинхронного запроса, чтобы не скрипт не тормозил.
В проект включены файлы:
tables.sql – который создает базу данных asterisk_logs и несколько табличек в ней,
table-ami-events.ods – excel файл с описанием событий по столбцам.
- создаем БД и таблички tables.sql,
- устанавливаем “npm install nami mysql modern-syslog”
- добавляем пользователя monit в manager_custom.conf
- прописываем учетные данные для mysql и asterisk manager в массивы db_config и namiConfig.
- Запускаем скрипт nami.js и если модули nodejs установлены верно, то скрипт запустится даже если у вас нет астериска и базы данных.
особенностью этого скрипта является то, что даже при пропадании подключения к mysql он будет пытаться реконнектится, при пропадании к астериску тоже. И если если подключение к астериску есть, а к mysql нет, то он будет сохранять готовые для импорта запросы в syslog.
фалы проекта можно скачать тут
29.11.2019certbot ssl certificate for issabel manual installation
- install certbot (was installed by issabel)
- comment rewrite engine in /etc/httpd/issabel.conf
- add virtual host file “issabelmanual.conf” with 80 port into /etc/httpd/conf.d
<VirtualHost *:80>
<Directory "/var/www/html">
</Directory>
</VirtualHost>
3. restart httpd: systemctl restart httpd
4. run certbot and answer to questions
5. certbot will add new sertificate to your ssl.conf file and comment old ssl lines in this file
6. uncomment at step 2.
7. restart httpd: systemctl restart httpd.
8. add to cron renew certificate every month by command “crontab -e”
“@monthly certbot renew”
| Posted in Asterisk, kamailio, rtpengine, Эксперт | No Comments »