SIP-клиент за Raspberry Pi, който работи от командния ред?

искам да използвам своя raspberry pi като SIP/VOIP телефон, като просто контролирам RPI чрез SSH.

Намерих някои уроци и изглежда, че Twinkle е едно от най-полезните приложения за това.

Така че успешно инсталирах twinkle на моя RPI, един SPI-клиент на моя телефон с Android и знам, че мога да изпращам текстови съобщения от един на друг.

Работата е следната: трябва да използвам Twinkel GUI с X-Server-forwarding (в момента използвам MacOS с X11 и iTerm).

Но някак си искам да автоматизирам целия процес, като например да използвам twinkle от командния ред, да го контролирам със скриптове и т.н.

Така че, очевидно блещукането не е създадено за това. (дори няма документация за конфигурационния файл на акаунта, така че трябваше да се боря с това x11-forwarding-stuff)

И така, последният ми въпрос е: Има ли сравним SIP клиент за RPI, който може да се контролира чрез CLI?

всеки намек е високо оценен. Докато търсих в Google този въпрос, току-що намерих проекти, работещи със сървър със звездичка на RPI или прикачващи дисплеи към него - но това не е това, което търся...

наздраве и благодаря


person n.r.    schedule 03.04.2015    source източник
comment
В зависимост от това, което се опитвате да направите, това може или не може да работи и нямам представа дали софтуерът е съвместим с RPI, но погледнете Linphone. Той включва версия на програмата от командния ред. linphone.org   -  person Russell Uhl    schedule 03.04.2015
comment
Linphone - кратко гугълне казва нещо за някои проблеми, но ще опитам - благодаря за което!   -  person n.r.    schedule 03.04.2015
comment
Бихте ли могли да публикувате вашите стъпки, които ви отведоха до вашата работеща настройка на SIP клиент?   -  person Besi    schedule 18.04.2015
comment
Разбира се, вижте пълния отговор долу!   -  person n.r.    schedule 19.04.2015
comment
Този въпрос е по-подходящ за raspberrypi.stackexchange.com   -  person fcm    schedule 03.04.2016


Отговори (6)


Правя същото и досега срещнах допълнителни опции:

  1. Linphone: Лесен за инсталиране, но не успявам да провеждам телефонни обаждания
    RaspberryPI: Осъществяване на SIP изходящи повиквания с помощта на linphonec или алтернативен SIP мек телефон

  2. Ring (по-рано SFLphone): Изглежда обещаващо, но трябва да се инсталира от източника
    Инсталиране на SIP клиента ring.cx на Raspberry PI.
    Актуализация: Вижте също отговора на @aberaud по-долу

  3. PJSIP (C библиотека)

Twinkle CLI

От пощенския списък на SFLphone получих тази обратна връзка, която може да ви помогне:

Интересно ми е да знам дали проектът напише нещо за това. Чрез пропуска използвах Twinkle SIP клиент, който позволява да се предаде команда към вече стартиран процес, който позволява например да се отговори на входящо повикване. Беше наистина страхотно и ми позволи да картографирам някои клавишни комбинации, за да контролирам телефона си, без да превключвам работния плот и да намеря добрите прозорци.

След известно търсене намерих някои стари скриптове, които позволяват да се контролират стари версии на sflphone чрез използване на неговия DBUS API. Вдъхновен от тези скриптове, написах свой собствен, съвместим с версията на sflphone, която използвах (1.4.1 в Debian Wheezy):

https://gitlab.com/brenard/sflphone-ctl

Работен е и го използвам всеки ден. Прехвърлянето на обаждания не работи на моя работен плот, но изглежда е грешка във версия 1.4.1 на sflphone.

B. R.

BTW: twinkle --help показва следното:

--cmd <cli command>
    Instruct Twinkle to execute the CLI command. You can run
    all commands from the command line interface mode.
    When Twinkle is already running, this will instruct the running
    process to execute the CLI command.

    Examples:
    twinkle --cmd answer
    twinkle --cmd mute
    twinkle --cmd 'transfer 12345'

Аз самият нямах късмет досега, но наистина искам и това да проработи.

person Besi    schedule 18.04.2015

Най-добрият VOIP клиент за Raspbery Pi според моя опит е Twinkle.

 sudo apt-get install twinkle 

Use the app to create a profile (i.e. setup the account) and name it twinkle (all lower case). This gets saved to

/home/pi/.twinkle/twinkle.conf

Командата по-долу ще ви отведе в реда за обработка на команди на Twinkle.

$ twinkle -c 
Twinkle> call +17601234567

Twinkle> bye

Twinkle> quit 

$

Ето скрипта на Python, който трябва да ви помогне да направите командния ред:

import sys
from subprocess import Popen, PIPE

proc = Popen(["twinkle", "-c"], stdin=PIPE, stdout=PIPE, bufsize=1)

for line in iter(proc.stdout.readline, b''):
    print line
    if (line.find("registration succeeded") > 0):
        proc.stdin.write("call +17601234567\n")
    #do whatever you want by adding code...
    if (line.find("far end answered call") > 0):
        proc.stdin.write("bye\n")
        proc.stdin.write("quit\n")
proc.communicate()
person Steve    schedule 14.11.2017
comment
благодаря Стив. Можете ли да изпратите командата за повикване директно към мигащия контейнер? Напр. възможно ли е да се направи това повикване с помощта на shell/batch-файл? - person n.r.; 14.11.2017
comment
Мисля, че трябва да е възможно да се използва скрипт на python за изпълнение на задачата. - person Steve; 15.11.2017
comment
Актуализирах публикацията със скрипт на Python. Тествах го с python 2.7. Това трябва да помогне. - person Steve; 16.11.2017
comment
как мога да стартирам twinkle в командния ред и autoawnser и да конфигурирам моята bluetooth слушалка по подразбиране? защото, когато го стартирам в командния ред, ми дава грешка, че alsa по подразбиране не е достъпна - person Jasar Orion; 31.05.2021

Какво получавам досега:

Използвам RasPi B+ с Raspbian OS.

Какво опитах досега: Twinkle (инсталирайте със sudo apt-get install twinkle)

Когато е конфигуриран, можете да го използвате чрез CLI, но за съжаление не успях да конфигурирам Twinkle чрез командния ред. Трябваше да конфигурирам X-Forwarding за моя Mac. Инсталирах X11 (респ. XQuartz) за Mac. Така че успях да видя GUI и да конфигурирам Twinkle.

Какво проработи: Успях да изпращам съобщения, но когато получих обаждане, Twinkle се срина. Трябва да заявя, че в момента няма инсталирани звукови устройства (без микрофон, без високоговорители).

След това потърсих SFL Phone. Това не идва с CLI. Така че не си струва да го тествате.

Четох и за Linphone. В момента не съм го пробвал, защото някои хора съобщават за трудности при използването му в собствени приложения.

Последното нещо, което намерих, е PJSIP.

Инсталирах го така:

sudo su - 
apt-get install subversion
svn checkout http://svn.pjsip.org/repos/pjproject/trunk
apt-get install build-essential automake autoconf libtool libasound2-dev libpulse-dev libssl-dev libsamplerate0-dev libcommoncpp2-dev libccrtp-dev libzrtpcpp-dev libdbus-1-dev libdbus-c++-dev libyaml-dev libpcre3-dev libgsm1-dev libspeex-dev libspeexdsp-dev libcelt-dev
cd trunk
./configure && make dep && make clean && make && make install

Това отне известно време и има приличен CLI. Успях да изпращам и получавам обаждания. Засега чакам моята USB звукова карта, микрофон и някои високоговорители, за да направя пълно тестване.

person n.r.    schedule 19.04.2015
comment
Ring/SFLPhone има отделен клиент и демон с dbus API, който може лесно да се контролира с помощта на скрипт на Python (един е включен в изходния код). Базиран е на PJSIP и може да сте доволни само от PJSIP.. - person aberaud; 21.04.2015
comment
@aberaud: Можете ли да добавите собствен отговор и да обясните как осъществявате достъп до този API с помощта на Ring/SFLPhone? Опитах ring, но останах заседнал (използвайки моя raspberry pi) - person Besi; 31.05.2015
comment
@Neuromancer: Можете ли да дадете пример как използвате API. Успях да инсталирам pjsip (PS: Проследих друг урок, който не проработи, така че благодаря, че сподели това!) - person Besi; 31.05.2015
comment
За съжаление не успях да използвам напълно PJSIP от командния ред, целта ми е да го стартирам с параметри от няколко шел скрипта. CLI, за който говорех, е ASCI-GUI (не знам какво е правилното име за това). - person n.r.; 01.06.2015
comment
@Besi току-що публикува отговор за това как да се създаде и контролира Ring с помощта на вградения скрипт на python, който може лесно да се адаптира. Моля, попитайте, ако закъсате някъде. - person aberaud; 03.06.2015
comment
@aberaud: Блестящо, определено ще проверя това. - person Besi; 03.06.2015

искате „да използвате своя raspberry pi като SIP/VOIP-телефон, като просто контролирате RPI чрез SSH“?

най-доброто и най-простото решение IMHO е:

просто използвайте самата звездичка и нейния гениален интерфейс на конзолата + USB слушалка (напр. слушалка Logitech H800) за това!

H800 се показва като конвенционална звукова карта, до която има директен достъп чрез каналния модул 'chan_alsa' на asterisk. Това е!

Това ми дава отлично аудио качество и чист конзолен интерфейс с ненадминатите възможности на asterisk. Напълно липсва досадата на GUI. Всички бягат на малина. Asterisk и 'chan_alsa' (или дори 'chan_oss') са неразделна част от всички основни дистрибуции.

По желание можете да направите всичко напълно безжично, като използвате WLAN ключ в оставащия USB порт.

person sparkie    schedule 23.12.2015
comment
Можете ли да разясните как да използвате звездичка като sip телефон? - person fcm; 03.04.2016
comment
съжалявам, настройката на sip phone не е нищо специфично за малина. Всяко ръководство за настройка на Asterisk може да помогне. Най-важното накрая е да използвате chan_oss (работи по-добре от chan_alsa за мен) за интерфейс на вашите слушалки. Проверете това: voip-info.org/wiki/view/Asterisk +config+oss.conf. Надявам се това да помогне. - person sparkie; 04.04.2016
comment
Asterisk обаче е безумно сложен и сложен бегемот на рамка. Докато друг софтуер има малко HOWTO, Asterisk буквално ми препоръча да купя и прочета доста голяма книга, само за да се почувствам донякъде компетентен в нейната архитектура, конфигурация и използване. Не разбирам как някой би решил, че това е бързо решение за нещо. (Но приветствам всеки, който може да покаже как да сме наясно с всичко, което е възможно и как да го постигнем, в Asterisk ‹24 часа.) - person Evi1M4chine; 19.09.2016
comment
но ако вече работите със звездичка, това е най-лесното решение. - person Galdor; 02.11.2020

Контролиране на демона Jami (по-рано Ring) със скрипт на Python:

  1. Инсталирайте Jami за RPi (Raspbian): https://jami.net/download-jami-linux/#open-modal-debian-10

  2. Стартирайте демона Jami: dring -c -d. Трябва да видите Jami да тича с някакви трупи. Първата опция -c ще отпечата регистрационните файлове на конзолата (stdout/stderr), а -d ще активира регистрационните файлове за отстраняване на грешки.

  3. Стартирайте контролера на D-Bus python3:

  • git клонинг https://git.jami.net/savoirfairelinux/ring-daemon.git

  • Отворете нов терминал към ring-daemon/tools/dringctrl, като същевременно поддържате демона работещ.

  • Опитайте да изброите конфигурираните акаунти с: ./dringctrl.py --gara. Ако всичко работи, трябва поне да видите IP2IP, акаунтът по подразбиране, който обработва директни IP към IP SIP повиквания.

  • Опитайте да се обадите на друга SIP крайна точка с ./dringctrl.py --call someIP.

  • Стартирайте ./dringctrl.py --help, за да видите текущо внедрените команди в скрипта на Python.

  1. Конфигурирайте Jami и променете скрипта на python, за да отговаря на вашите нужди
  • Конфигурацията на акаунта се съхранява в /home/$USER/.config/ring/dring.yml
person aberaud    schedule 03.06.2015
comment
Като пример, потребител направи прост скрипт, който приема всички повиквания с API на python: paste.aliens-lyon .fr/lZU&ln - person aberaud; 26.08.2015
comment
Това наистина е обещаващо решение. За съжаление не стигам отвъд 1. Не мога да създам демона - ./configure --prefix=/usr извежда тази грешка: configure: error: Missing pjproject files Сега съм малко изгубен и не знам какво да опитам след това . - person n.r.; 16.04.2016
comment
@aberaud Здравейте. Връзката към примера във вашия коментар дава 404. - person Roman Riabenko; 13.05.2021

Имах успех с Simple SIP SDK. Търсех нещо с поддръжка на OPUS.

https://sipsimpleclient.org/

Изграждането е малко работа. След изграждане и монтаж

sip-settings -a add [email protected] 1234678 <--password
sip-settings -a default [email protected]
sip-settings -a set [email protected] sip.outbound_proxy=172.31.0.1
sip-register  <-- seems optional
sip-audio-session sip:[email protected]
person user3718260    schedule 14.04.2019