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

Я хочу использовать свой raspberry pi в качестве SIP/VOIP-телефона, просто управляя RPI через SSH.

Я нашел несколько руководств, и кажется, что Twinkle — одно из самых полезных приложений для этого.

Итак, я успешно установил мерцание на свой RPI, один SPI-клиент на свой Android-телефон и знаю, что могу отправлять текстовые сообщения с одного на другой.

Дело в том, что я должен использовать графический интерфейс Twinkel с переадресацией X-Server (в настоящее время использую MacOS с X11 и iTerm).

Но я как бы хочу автоматизировать весь процесс, например, использовать мерцание из командной строки, управлять им с помощью скриптов и т. д.

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

Итак, мой последний вопрос: существует ли аналогичный SIP-клиент для RPI, которым можно управлять через CLI?

любой намек высоко ценится. Во время поиска в Google этого вопроса я только что нашел проекты, работающие с сервером asterisk на 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)

Командная строка мерцания

Из списка рассылки SFLphone я получил этот отзыв, который может вам помочь:

Мне интересно узнать, напишет ли проект что-нибудь для этого. Кстати, я использовал SIP-клиент Twinkle, который позволяет передавать команду уже запущенному процессу, который позволяет, например, ответить на входящий вызов. Это было действительно круто и позволило мне сопоставить некоторые сочетания клавиш для управления моим телефоном без переключения рабочего стола и поиска хороших окон.

После некоторого поиска я нашел несколько старых скриптов, которые позволяют управлять старыми версиями sflphone с помощью его DBUS API. Вдохновленный этим скриптом, я написал свой собственный, совместимый с версией sflphone, которую я использовал (1.4.1 в Debian Wheezy):

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

Это работает хорошо, и я использую его каждый день. Передача вызова не работает на моем рабочем столе, но это похоже на ошибку версии 1.4.1 sflphone.

B. R.

Кстати: 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
спасибо Стив. Можете ли вы отправить команду вызова прямо в мерцающую корзину? можно ли сделать этот вызов с помощью оболочки/пакетного файла? - person n.r.; 14.11.2017
comment
Я думаю, что для выполнения этой задачи можно использовать скрипт Python. - person Steve; 15.11.2017
comment
Я обновил сообщение с помощью скрипта Python. Я тестировал его с помощью Python 2.7. Это должно помочь. - person Steve; 16.11.2017
comment
как я могу запустить мерцание в командной строке и autoawnser и настроить Bluetooth-гарнитуру по умолчанию? потому что, когда я запускаю его в командной строке, он дает мне ошибку, что alsa по умолчанию недоступна - person Jasar Orion; 31.05.2021

Что я получаю до сих пор:

Я использую RasPi B+ с ОС Raspbian.

Что я пробовал до сих пор: Twinkle (установить с помощью sudo apt-get install twinkle)

Когда он настроен, вы можете использовать его через CLI, но, к сожалению, мне не удалось настроить Twinkle через командную строку. Мне пришлось настроить X-Forwarding для моего Mac. Я установил X11 (соответственно XQuartz) для Mac. Так что я смог увидеть графический интерфейс и настроить Twinkle.

Что сработало: я мог отправлять сообщения, но когда поступал звонок, Twinkle зависал. Я должен заявить, что в настоящее время звуковые устройства не установлены (ни микрофона, ни динамиков).

После этого я искал SFL Phone. Это не идет с CLI. Так что не стоит его тестировать.

Я также читал о Линфоне. В настоящее время я не пробовал его, потому что некоторые люди сообщают о трудностях с его использованием в собственных приложениях.

Последнее, что я нашел, это 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

Это заняло некоторое время и имеет достойный интерфейс командной строки. Я мог отправлять и принимать звонки. На данный момент я жду свою USB-звуковую карту, микрофон и несколько динамиков, чтобы провести полное тестирование.

person n.r.    schedule 19.04.2015
comment
Ring/SFLPhone имеет отдельный клиент и демон с API-интерфейсом dbus, которым можно легко управлять с помощью скрипта python (один включен в исходники). Он основан на PJSIP, и вы можете быть довольны только PJSIP. - person aberaud; 21.04.2015
comment
@aberaud: Не могли бы вы добавить собственный ответ и объяснить, как вы получаете доступ к этому API с помощью Ring/SFLPhone? Я попробовал кольцо, но застрял (используя свой 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 Только что опубликовал ответ о том, как создать кольцо и управлять им, используя встроенный скрипт Python, который можно легко адаптировать. Пожалуйста, спросите, если вы где-то застряли. - person aberaud; 03.06.2015
comment
@aberaud: Великолепно, я обязательно это проверю. - person Besi; 03.06.2015

вы хотите «использовать свой raspberry pi в качестве SIP/VOIP-телефона, просто управляя RPI через SSH»?

лучшее и простое решение ИМХО:

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

H800 выглядит как обычная звуковая карта, доступ к которой осуществляется непосредственно канальным модулем chan_alsa звездочки. Вот и все!

Это дает мне отличное качество звука и чистый консольный интерфейс с непревзойденными возможностями звездочки. Полностью отсутствует раздражение любого графического интерфейса. Все работает на малине. Asterisk и chan_alsa (или даже chan_oss) являются неотъемлемой частью всех основных дистрибутивов.

При желании вы можете сделать все это полностью беспроводным, используя ключ WLAN в оставшемся USB-порту.

person sparkie    schedule 23.12.2015
comment
Можете ли вы уточнить, как использовать звездочку в качестве sip-телефона? - person fcm; 03.04.2016
comment
извините, настройка sip-телефона не является чем-то специфичным для малины. Любое HowTo по настройке Asterisk может помочь. Наконец, важно использовать chan_oss (для меня работает лучше, чем chan_alsa) для интерфейса вашей гарнитуры. Проверьте это: voip-info.org/wiki/view/Asterisk +config+oss.conf. Надеюсь, это поможет. - person sparkie; 04.04.2016
comment
Однако Asterisk — это безумно сложный и запутанный бегемот фреймворка. В то время как у других программ есть небольшой HOWTO, Asterisk буквально рекомендовала мне купить и прочитать довольно большую книгу, просто чтобы чувствовать себя достаточно компетентным в ее архитектуре, настройке и использовании. Я не понимаю, как кто-то может это быстрое решение для чего-либо. (Но я приветствую всех, кто может показать, как быть в курсе всего, что возможно, и как этого достичь, в Asterisk ‹24h.) - 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. Вы должны увидеть, как Джами работает с бревнами. Первая опция -c выводит журналы на консоль (stdout/stderr), а -d включает журналы отладки.

  3. Запустите контроллер D-Bus python3:

  1. Настройте Jami и измените скрипт Python в соответствии с вашими потребностями.
  • Конфигурация учетной записи хранится в /home/$USER/.config/ring/dring.yml
person aberaud    schedule 03.06.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