Небольшая заметка про CLI SIP-клиент BareSIP. Может быть использовано для автоматизации каких то задач по телефонии. С помощью скриптов можно применить для дозвона на абонента, интеркома, эхо-теста, даже можно создать на основе двух клиентов диспетчерскую связь.
Установка:
В дистрибутивах на базе debian-подобных дистрибутивах BareSIP уже имеется в репозиториях, устанавливается командой:
apt install baresip
Настройка:
Если ОС запущена на ВМ и у ВМ нет подключенных физических звуковых чипов следует выполнить(данные команды включают модули для виртуальных звуковых интерфейсов):
# configure 5 capture/playback interfaces
echo «options snd-aloop enable=1,1,1,1,1 index=0,1,2,3,4» > /etc/modprobe.d/alsa-loopback.conf
# setup autoload the module
echo «snd_aloop» > /etc/modules-load.d/snd_aloop.conf
# load the module
modprobe snd-aloop
# check that the module is loaded
lsmod | grep snd_aloop
Изменить ˜/.asoundrc
В это файл вставить следующее содержание:
# playback PCM device: using loopback subdevice 0,0
pcm.amix {
type dmix
ipc_key 219345
slave.pcm "hw:Loopback,0,0"
}
# capture PCM device: using loopback subdevice 0,1
pcm.asnoop {
type dsnoop
ipc_key 219346
slave.pcm "hw:Loopback,0,1"
}
# duplex device combining our PCM devices defined above
pcm.aduplex {
type asym
playback.pcm "amix"
capture.pcm "asnoop"
}
# ------------------------------------------------------
# duplex plug device
pcm.loop {
type plug
slave {
pcm {
type asym
playback.pcm "amix"
capture.pcm "asnoop"
}
}
}
# ------------------------------------------------------
# for jack alsa_in and alsa_out: looped-back signal at other ends
pcm.ploop {
type plug
slave.pcm "hw:Loopback,1,1"
}
pcm.cloop {
type dsnoop
ipc_key 219348
slave.pcm "hw:Loopback,1,0"
}
# ------------------------------------------------------
# default device
pcm.!default {
type plug
slave.pcm "aduplex"
}
Для проверки выполнить команду: aplay -l
При правильном выполнении команд вывод должен быть следующим:
В конфигурациях ˜/.baresip/config изменить следующие параметры:
audio_player alsa,hw:0,0 audio_source alsa,hw:0,1
module aufile.so
Если требуются подключить другие кодеки делается это путем разкомментирования строк в секции «# Audio codec Modules (in order)»
Для конфигурации аккаунта требуется изменить файл /.baresip/accounts, в файл добавить строку <sip:XXXXXXX@xxx.xxx.xxx.xx>;auth_pass=password, где XXXXXXX — номер телефона, xxx.xxx.xxx.xxx — ip или доменное имя сервера регистрации, password — пароль от аккаунта.
Для запуска выполняется команда: baresip
Если правильно все настроено, то после запуска программы можно ввести «d» и номер телефона произойдет вызов на номер при ответе которого мы услышим тишину.
Написание скрипта, воспроизведение звука в линию.
Для выполнения в терминале можно ввести команду(исполнения от пользователя root): baresip -e «/ausrc aufile,/root/test.wav» -e «/dial 11111» -t 120 -f /home/user/.baresip/ , где: «/root/test.wav» — путь для звукового файла, «/dial 11111» — набираемый номер, «-t 120» — — время работы программы, «-f /home/user/.baresip/» — путь для конфигурационных файлов, лучше использовать домашнюю директорию пользователя. Звуковой файл должен быть в формате wav и моно. Для приведения к данному формату можно использовать утилиту ffmpeg: ffmpeg -i test1.mp3 -ac 1 -ar 8000 -acodec pcm_s16le test1.wav
Для выполнения задание по расписанию выполнить команду: crontab -u root -e, и вставить — * * * * * ExecStart=/bin/bash /root/test.sh (выполнение каждую минуту)
Отлеживать выполнение можно командой — journalctl -f