MyTetra Share
Делитесь знаниями!
Настройка звонка через консоль с помощью linphonec
06.03.2019
16:13
Текстовые метки: sip, linphone, linphonec, звонок, вызов, телефон
Раздел: Компьютер - Linux - Сеть в Linux - Телефония, SIP, Asterisk

Консольные приложения linphonec и linphonecsh и одновременная работа на одном компьютере


Кроме программы с графическим интерфейсом linphone, в состав Linphone входят две программы для работы из командной строки.


Первая — linphonec — версия программы для работы из командной строки. Вторая — linphonecsh — консольная программа для управления работающей в фоновом режиме программой linphonec.



Конфигурационный файл .linphonerc


При первом запуске Linphone создает конфигурационный файл ~/.linphonerc в домашнем каталоге пользователя:


$ cat ~/.linphonerc


Параметры конфигурационного файла описаны в разделе документации на сайте Linphone.


Чтобы запустить несколько копий linphonec, сделаем несколько копий конфигурационного файла, различающихся последней цифрой


$ NAM=.linphonerc; for NUM in {1..3}; do cp $NAM $NAM$NUM; done

$ ls .linphonerc*

.linphonerc  .linphonerc1  .linphonerc2  .linphonerc3  

$


Первый ( .linphonerc1) оставим без изменений, во втором и третьем сменим порты на 5062 и 5063, а имена, идентификаторы пользователей и пароли — на 202 и 203 соответственно.


$ nano ./.linphonerc2


...

[sip]

...

sip_port=5062

...

[proxy_0]

...

reg_identity=sip:202@localhost

...

[auth_info_0]

username=202

userid=202

passwd=202

...



$ nano ./.linphonerc3


...

[sip]

...

sip_port=5063

...

[proxy_0]

...

reg_identity=sip:203@localhost

...

[auth_info_0]

username=203

userid=203

passwd=203

...


Теперь мы могли бы попытаться запустить linphone с измененными файлами конфигурации, однако Asterisk еще ничего не знает об этих устройствах.



Настройка Asterisk



Файл sip.conf


В файле sip.conf уже есть раздел для телефона 201, сконфигурированный нами раньше:


[201]

type=friend

secret=201

host=dynamic

context=from_internal


Добавим два аналогичных раздела в sip.conf, отличающихся заголовком раздела (то есть номером телефона [201]) и паролем ( secret=201):


$ sudo nano /etc/asterisk/sip.conf


[202]

type=friend

secret=202

host=dynamic

context=from_internal

[203]

type=friend

secret=203

host=dynamic

context=from_internal



Файл extensions.conf


Добавим новый раздел [from_internal] в файл extensions.conf


$ sudo nano /etc/asterisk/extensions.conf


[from_internal]

exten=>_2XX,1,Dial(SIP/${EXTEN},20)



Перечитаем конфигурацию


В консоли Asterisk перечитаем конфигурацию:


al-nb-02*CLI> sip reload

al-nb-02*CLI> dialplan reload


Или одной командой все конфигурационные файлы:


al-nb-02*CLI> reload



Запуск linphonec


Ключи командной строки linphonec


$ linphonec --help

ERROR: bad arguments

usage: linphonec [-c file] [-s sipaddr] [-a] [-V] [-d level ] [-l logfile]

linphonec -v

 -b  file             specify path of readonly factory configuration file.

 -c  file             specify path of configuration file.

 -d  level            be verbose. 0 is no output. 6 is all output

 -l  logfile          specify the log file for your SIP phone

 -s  sipaddress       specify the sip call to do at startup

 -a                   enable auto answering for incoming calls

 -V                   enable video features globally (disabled by default)

 -C                   enable video capture only (disabled by default)

 -D                   enable video display only (disabled by default)

 -S                   show general state messages (disabled by default)

 --wid  windowid      force embedding of video window into provided windowid (disabled by default)

 -v or --version      display version and exits.



Запуск двух процессов с разными конфигурационными файлами


Теперь в двух разных терминальных окнах запустим linphonec с разными конфигурационными файлами. В первом:


$ linphonec -c ~/.linphonerc2


И в другом:


$ linphonec -c ~/.linphonerc3


В консоли Asterisk увидим уведомление об успешной регистрации:


   -- Registered SIP '202' at 127.0.0.1:5062

      > Saved useragent "Linphone/3.6.1 (eXosip2/4.0.0)" for peer 202

   -- Registered SIP '203' at 127.0.0.1:5063

      > Saved useragent "Linphone/3.6.1 (eXosip2/4.0.0)" for peer 203



Доступные команды linphonec


linphonec> help

Commands are:

---------------------------

     help  Print commands help.

     call  Call a SIP uri or number

    calls  Show all the current calls with their id and status.

     chat  Chat with a SIP uri

terminate  Terminate a call

   answer  Answer a call

    pause  pause a call

   resume  resume a call

 transfer  Transfer a call to a specified destination.

conference  Create and manage an audio conference.

     mute  Mute microphone and suspend voice transmission.

   camera  Send camera output for current call.

   unmute  Unmute microphone and resume voice transmission.

playbackga  Adjust playback gain.

 duration  Print duration in seconds of the last call.

autoanswer  Show/set auto-answer mode

    proxy  Manage proxies

soundcard  Manage soundcards

   webcam  Manage webcams

     ipv6  Use IPV6

      nat  Set nat address

     stun  Set stun server address

 firewall  Set firewall policy

call-logs  Calls history

   friend  Manage friends

     play  play a wav file

   record  record to a wav file

     quit  Exit linphonec

---------------------------

Type 'help <command>' for more details or

    'help advanced' to list additional commands.

linphonec>



Звонок


На телефоне 202 наберем номер 203 командой call:


linphonec> call 203

Establishing call id to <sip:203@localhost>, assigned id 1

Contacting <sip:203@localhost>

linphonec> Call 1 to <sip:203@localhost> in progress.

linphonec> Remote ringing.

linphonec> Remote ringing...

linphonec> Call 1 to <sip:203@localhost> ringing.


Со стороны вызываемого абонента 203 увидим:


linphonec> <sip:202@127.0.0.1> is contacting you.

linphonec> Receiving new incoming call from <sip:202@127.0.0.1>, assigned id 1


На 203 ответим командой answer


linphonec> answer

Connected.

linphonec> Call 1 with <sip:202@127.0.0.1> connected.

Media streams established with <sip:202@127.0.0.1> for call 1 (audio).

linphonec> Call is updated by remote.

linphonec> Media streams established with <sip:202@127.0.0.1> for call 1 (audio).

Call is updated by remote.

linphonec> Media streams established with <sip:202@127.0.0.1> for call 1 (audio).


На 202 увидим:


Call 1 with <sip:203@localhost> connected.

Call answered by <sip:203@localhost>.

linphonec> Media streams established with <sip:203@localhost> for call 1 (audio).

Call is updated by remote.

linphonec> Media streams established with <sip:203@localhost> for call 1 (audio).


Завершим соединение со стороны телефона 203 командой terminate


linphonec> terminate

Call ended

linphonec> Call 1 with <sip:202@127.0.0.1> ended (No error).


На телефоне 202 увидим разъединение вызова с дальней стороны:


linphonec> Call is updated by remote.

linphonec> Media streams established with <sip:203@localhost> for call 1 (audio).

Call terminated.

linphonec> Call 1 with <sip:203@localhost> ended (No error).



Лог Asterisk


В консоли Asterisk в это же время увидим следующие сообщения.


Вызов 202->203


al-nb-02*CLI>

 == Using SIP RTP CoS mark 5

   -- Executing [203@from_internal:1] Dial("SIP/202-00000000", "SIP/203,20") in new stack

 == Using SIP RTP CoS mark 5

   -- Called SIP/203

   -- SIP/203-00000001 is ringing


Ответ со стороны 203:


   -- SIP/203-00000001 answered SIP/202-00000000

   -- Remotely bridging SIP/202-00000000 and SIP/203-00000001


Отбой со стороны 203:


== Spawn extension (from_internal, 203, 1) exited non-zero on 'SIP/202-00000000'

al-nb-02*CLI>



 
MyTetra Share v.0.52
Яндекс индекс цитирования