Asterisk sip.conf в базе данных MySQL
Я могу включить телефон в базу данных для использования в реальном времени. Итак, этот код (из /etc/asterisk/sip.conf
):
[phone]
type=friend
username=phone
secret=12345
host=dynamic
disallow=all
allow=g729
allow=alaw
context=somecontext
nat=no
insecure=port,invite
теперь он находится внутри базы данных (с использованием MySQL).
Теперь я хочу включить магистраль SIP, используя директиву register, но я не знаю, как это сделать.
Как я могу включить register => <username>:<password>@<provider>
а внутри базы данных тоже?
2 ответа
У вас есть 2 варианта.
1) статическое в реальном времени. Просто поместите в mysql построчно весь файл
https://www.voip-info.org/asterisk-realtime-static
В этом режиме, когда вы запускаете звездочку, перезагрузите ее, просто прочитав из базы данных построчно и интерпретировав ее как текстовый файл.
2) динамическое в реальном времени.
В этом режиме звездочка проверяет базу данных только при наличии запроса на авторизацию и только для сопоставленных пиров.
https://www.voip-info.org/asterisk-realtime-sip/
Используйте regserver param для установки вашего регистрационного сервера.
Директива register должна быть статической записью в разделе sip.conf [general], поэтому, хотя вы можете сделать это со статическим реальным временем, у вас могут возникнуть проблемы с загрузкой динамических пользователей реального времени.
Лучшим вариантом может быть использование директивы #exec в sip.conf. Это позволит вам запустить скрипт для чтения этой строки регистра из строки БД.
Для этого вам нужно включить execinclude = yes в asterisk.conf, а затем добавить строку в раздел sip.conf [general] для запуска вашего скрипта, например: #exec /etc/asterisk/scripts/your_script_file
Вот хороший пример использования Leif Madsen #exec для установки externip= paramater с помощью php-скрипта: https://leifmadsen.wordpress.com/2011/02/27/using-exec-to-set-externaddr-in-sip-conf/