1 | изначальная версия редактировать | |
Я пытаюсь создать прототип домофона на Asterisk 1.8 и Raspberry Pi. Oсуществляетcя звонок с консоли, для обработки звука применяется chan_alsa.
Во время звонка нет возможности выполнить transfer на друогй extension; человек жмет на #5, CLI получает нажатие, но не реагирует на него:
<< Console call has been answered >>
<< Console Received digit 5 of duration 100 ms >>
Свойства канала
rasterisk*CLI> core show channeltype console
-- Info about channel driver: Console --
Device State: no
Indication: yes
Transfer : no
Capabilities: 0x40 (slin)
Digit Begin: no
Digit End: yes
Send HTML : no
Image Support: no
Если в chan_alsa.conf задать transfer=yes
- это игнорируется.
Это некое ограничение канала? Как его можно обойти? Какие альтернативы можно применить?
2 | added more details about attempts to use chan_local редактировать |
Я пытаюсь создать прототип домофона на Asterisk 1.8 и Raspberry Pi. Oсуществляетcя звонок с консоли, командой console dial 100
, для обработки звука применяется chan_alsa.
Во время звонка нет возможности выполнить transfer на друогй extension; человек жмет на #5, CLI получает нажатие, но не реагирует на него:
<< Console call has been answered >>
<< Console Received digit 5 of duration 100 ms >>
Свойства канала
rasterisk*CLI> core show channeltype console
-- Info about channel driver: Console --
Device State: no
Indication: yes
Transfer : no
Capabilities: 0x40 (slin)
Digit Begin: no
Digit End: yes
Send HTML : no
Image Support: no
Если в chan_alsa.conf задать transfer=yes
- это игнорируется.
Dial из CLI не дает возможность передавать параметры (типа T, итд). В качестве альтернативы, попытался внедрить с помощью chan_local:
[console-context]
exten => 100,1,Dial(SIP/TestUser,15,tTr)
exten => _9.,1,Dial(Local/${EXTEN:1}@console-context,15,tTr)
exten => 5,1,Goto(opendoor,s,1)
Вместо 100, набираю 9100, в результате звонок проходит через chan_local. К сожалению это не меняет ситуацию. В консоли видно что нажатие на 5 ловится, но transfer не происходит.
Это некое ограничение канала? Как его можно обойти? Какие альтернативы можно применить?
3 | added details about how the call is made редактировать |
Я пытаюсь создать прототип домофона на Asterisk 1.8 и Raspberry Pi. Oсуществляетcя звонок с консоли, командой console dial 100
, для обработки звука применяется chan_alsa.
Во время звонка нет возможности выполнить transfer на друогй extension; человек жмет на #5, CLI получает нажатие, но не реагирует на него:
<< Console call has been answered >>
<< Console Received digit 5 of duration 100 ms >>
Свойства канала
rasterisk*CLI> core show channeltype console
-- Info about channel driver: Console --
Device State: no
Indication: yes
Transfer : no
Capabilities: 0x40 (slin)
Digit Begin: no
Digit End: yes
Send HTML : no
Image Support: no
Если в chan_alsa.conf задать transfer=yes
- это игнорируется.
Dial из CLI не дает возможность передавать параметры (типа T, итд). В качестве альтернативы, попытался внедрить с помощью chan_local:
[console-context]
exten => 100,1,Dial(SIP/TestUser,15,tTr)
exten => _9.,1,Dial(Local/${EXTEN:1}@console-context,15,tTr)
exten => 5,1,Goto(opendoor,s,1)
Вместо 100, набираю 9100, в результате звонок проходит через chan_local. К сожалению это не меняет ситуацию. В консоли видно что нажатие на 5 ловится, но transfer не происходит.
Это некое ограничение канала? Как его можно обойти? Какие альтернативы можно применить?
Update: как выполняется звонок
console dial 100
(этот номер соответствует данному клиенту)Другие детали:
asterisk -rx "console dial 100"
То есть, проблема в том, что когда осуществляется этот звонок с консоли, # передаваемый клиентом не ловится сервером (хотя в других звонках это все работает).
4 | explanations regarding the need to dial from the console and what chan_alsa has to do with it. редактировать |
Я пытаюсь создать прототип домофона на Asterisk 1.8 и Raspberry Pi. Oсуществляетcя звонок с консоли, командой console dial 100
, для обработки звука применяется chan_alsa.
Во время звонка нет возможности выполнить transfer на друогй extension; человек жмет на #5, CLI получает нажатие, но не реагирует на него:
<< Console call has been answered >>
<< Console Received digit 5 of duration 100 ms >>
Свойства канала
rasterisk*CLI> core show channeltype console
-- Info about channel driver: Console --
Device State: no
Indication: yes
Transfer : no
Capabilities: 0x40 (slin)
Digit Begin: no
Digit End: yes
Send HTML : no
Image Support: no
Если в chan_alsa.conf задать transfer=yes
- это игнорируется.
Dial из CLI не дает возможность передавать параметры (типа T, итд). В качестве альтернативы, попытался внедрить с помощью chan_local:
[console-context]
exten => 100,1,Dial(SIP/TestUser,15,tTr)
exten => _9.,1,Dial(Local/${EXTEN:1}@console-context,15,tTr)
exten => 5,1,Goto(opendoor,s,1)
Вместо 100, набираю 9100, в результате звонок проходит через chan_local. К сожалению это не меняет ситуацию. В консоли видно что нажатие на 5 ловится, но transfer не происходит.
Это некое ограничение канала? Как его можно обойти? Какие альтернативы можно применить?
Update: как выполняется звонок
console dial 100
(этот номер соответствует данному клиенту)Другие детали:
asterisk -rx "console dial 100"
То есть, проблема в том, что когда осуществляется этот звонок с консоли, # передаваемый клиентом не ловится сервером (хотя в других звонках это все работает).
Update: почему звонок с консоли и почему chan_alsa? Задумка такова - к RasPi на котором работает Asterisk подключен микрофон и динамик,а так же кнопка и электромагнит. Когда человек жмет кнопку, Asterisk выполняет звонок в качестве клиента.
Для того чтобы Астериск мог получать\выдавать аудио, он применяет sound card который присутствует в Raspberry Pi и внешний USB микрофон.
Сначала я думал запустить на той же машине и SIP client, например linphonec - но это невозможно, так как он хочет привязаться к порту 5060, который уже занят Asterisk'ом.
Cоответственно, единственный выход который я пока нашел, это применить сам сервер в качестве клиента, что возможно осуществить с console dial
в CLI. Чтобы консольный клиент мог передавать и принимать аудио, нужно применять chanalsa или chanoss. Выбор пал на первый, так как с этим имел дело раньше.
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.