LINUX.ORG.RU
ФорумAdmin

Asterisk не проходит вызов

 ,


0

2

Здравствуйте. Такая проблема: При звонке на внутренний номер пишет «dial_exec_full: Dial argument takes format (technology/resource)» и сбрасывает вызов. Это при значении exten => _XXX,1,Dial(SIP/${EXTEN}), но при значении exten => 102,1,Dial(SIP/102) вызов проходит номально. В чём может быть ошибка? Ubuntu 18 LTS, Asterisk 16 LTS

Если exten => _XXX,1,Dial(SIP/${EXTEN})

[Mar  1 03:38:48] NOTICE[10011]: app_queue.c:9096 reload_queue_rules: queuerules.conf has not changed since it was last loaded. Not taking any action.
 Reloading unistim.conf...
  == Using SIP RTP CoS mark 5
       > 0x7f9f90031d40 -- Strict RTP learning after remote address set to: 192.168.51.88:11808
    -- Executing [102@call-out:1] Dial("SIP/100-0000000d", "SIP/") in new stack
[Mar  1 03:38:52] WARNING[10021][C-0000000f]: app_dial.c:2449 dial_exec_full: Dial argument takes format (technology/resource)
  == Spawn extension (call-out, 102, 1) exited non-zero on 'SIP/100-0000000d'
Если exten => 102,1,Dial(SIP/102)

Using SIP RTP CoS mark 5
       > 0x7f9f90031d40 -- Strict RTP learning after remote address set to: 192.168.51.88:11812
    -- Executing [102@call-out:1] Dial("SIP/100-0000000f", "SIP/102") in new stack
  == Using SIP RTP CoS mark 5
    -- Called SIP/102
    -- SIP/102-00000010 is ringing
  == Spawn extension (call-out, 102, 1) exited non-zero on 'SIP/100-0000000f'

sip.conf

[general]
srvlookup=yes 
externaddr=192.168.51.77:5060
defaultexpiry=360
allowguest=no
language=ru
bindaddr=0.0.0.0
disallow=all
allow=alaw
allow=ulaw
allow=g729
allow=g723
allow=g722
allowoverlap=no
tcpenable=no
limitonpeers=yes

[authentication]
[nombers](!)
type=friend
context=call-out
secret=123
host=dynamic
nat=no
qualify=yes
canreinvite=no
callgroup=1
pickupgroup=1
call-limit=1
dtmfmode=auto
disallow=all
allow=alaw
allow=ulaw
allow=g729
allow=g723
allow=g722

[100](nombers)
callerid=»Номер 100<100>
[101](nombers)
callerid=»Номер 101<101>
[102](nombers)
callerid=»Номер 102<102>
extensions.conf

[general]
static=yes
writeprotect=no
[globals]
[default]

[call-out]
exten => _XXX,1,Dial(SIP/${EXTEN})

Ответ на: комментарий от LoyrLino

Вместо ${EXTEN} не подставляется 101. EXTEN записан латинскими буквами, без кириллицы?
Другие переменные работают? Если, например, сделать что-то вроде

[global]
EXT_101=SIP/101

[call-out]
exten _XXX => 1,Dial(${EXT_101})

будет работать?

HerrWeigel ★★★★ ()
Ответ на: комментарий от HerrWeigel

Выдаёт

Mar  1 06:47:38] WARNING[10880]: pbx_config.c:1955 pbx_load_config: ==!!== Unknown directive: EXT_101 at line 2 of extensions.conf -- IGNORING!!!
[Mar  1 06:47:38] WARNING[10880]: pbx_config.c:1955 pbx_load_config: ==!!== Unknown directive: exten _XXX at line 5 of extensions.conf -- IGNORING!!!
А при 

[globals]
EXT_101=SIP/101

[call-out]
exten => _XXX,1,Dial(${EXT_101})
Выдаёт

== Using SIP RTP CoS mark 5
       > 0x7fb26c0413e0 -- Strict RTP learning after remote address set to: 192.168.51.88:11940
    -- Executing [101@call-out:1] Dial("SIP/100-00000021", "") in new stack
[Mar  1 06:49:23] WARNING[10900][C-00000022]: app_dial.c:2227 dial_exec_full: Dial requires an argument (technology/resource)
  == Spawn extension (call-out, 101, 1) exited non-zero on 'SIP/100-00000021'

LoyrLino ()
Ответ на: комментарий от LoyrLino

суть в том, что у тебя где-то съедаются переменные после SIP/

Попробуй добавить дополнительный параметр таймаута, что-то изменится?

exten => _1XX,1,Dial(SIP/${EXTEN},90)

Turbid ★★★★★ ()
Ответ на: комментарий от Turbid
 == Using SIP RTP CoS mark 5
       > 0x7f750c01b530 -- Strict RTP learning after remote address set to: 192.168.51.88:12224
    -- Executing [101@call-out:1] Dial("SIP/100-00000002", "SIP/,90") in new stack
[Mar  2 07:49:03] WARNING[18436][C-00000003]: app_dial.c:2449 dial_exec_full: Dial argument takes format (technology/resource)
  == Spawn extension (call-out, 101, 1) exited non-zero on 'SIP/100-00000002'
LoyrLino ()
Ответ на: комментарий от Turbid
 == Using SIP RTP CoS mark 5
       > 0x7f750c052e70 -- Strict RTP learning after remote address set to: 192.168.51.88:12238
    -- Executing [101@call-out:1] NoOp("SIP/100-00000005", "") in new stack
    -- Executing [101@call-out:2] Dial("SIP/100-00000005", "SIP/,90") in new stack
[Mar  2 09:35:35] WARNING[18563][C-00000008]: app_dial.c:2449 dial_exec_full: Dial argument takes format (technology/resource)
  == Spawn extension (call-out, 101, 2) exited non-zero on 'SIP/100-00000005'
LoyrLino ()
Ответ на: комментарий от Turbid

Я может не так устанавливаю asterisk?

apt update
apt upgrade
apt install wget build-essential subversion libnewt-dev libssl-dev libncurses5-dev
apt install git curl libsqlite3-dev libjansson-dev libxml2-dev  uuid-dev

cd /usr/src/
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz
tar zxf asterisk-16-current.tar.gz
cd asterisk-16.*/

contrib/scripts/install_prereq install
contrib/scripts/get_mp3_source.sh
./configure

make menuselect
Add-ons: format_mp3, res_config_mysql, app_mysql и cdr_mysql.
Core Sound Packages: Выбираем русские звуки RU.
Music On Hold File Packages: Выбираем звуки EN.
Extras Sound Packages: Выбираем английский EN.
Applications: app_macro - on

make
make install
make samples
make config
ldconfig

sudo groupadd asterisk
sudo useradd -r -d /var/lib/asterisk -g asterisk asterisk
sudo usermod -aG audio,dialout asterisk
sudo chown -R asterisk.asterisk /etc/asterisk
sudo chown -R asterisk.asterisk /var/{lib,log,spool}/asterisk
sudo chown -R asterisk.asterisk /usr/lib/asterisk

sudo mcedit /etc/default/asterisk
AST_USER="asterisk"
AST_GROUP="asterisk"

sudo mcedit /etc/asterisk/asterisk.conf
runuser = asterisk ; The user to run as.
rungroup = asterisk ; The group to run as.

systemctl restart asterisk
systemctl enable asterisk
systemctl status asterisk

asterisk -rvvvvvvvvvvc
LoyrLino ()
Ответ на: комментарий от LoyrLino

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

Вместо make install лучше использовать checkinstall, чтобы собрать deb-пакет.
ldconfig вроде тут не имеет смысла запускать.
Но это мелочи, к сабжу отношения не имеют.

Попробуй просто из репозитория поставить. Да, будет 13 версия, но точно должно работать.

sudo apt install asterisk asterisk-core-sounds-ru-gsm asterisk-moh-opsound-gsm asterisk-mp3 asterisk-mysql

И попробуй на свежеустановленной системе это провернуть для чистоты эксперимента. Например, в виртуалке.

HerrWeigel ★★★★ ()
Последнее исправление: HerrWeigel (всего исправлений: 1)

NATы все проверь, и файерволы, какие где сетки разрешены, где оконечка клиентская(телефоны), может рубит что соединения, или по sip, или по rtp трафику.

ChAnton ★★ ()
Ответ на: комментарий от HerrWeigel

Тоже не работает...

    -- Executing [102@call-out:1] Dial("SIP/101-00000000", "SIP/") in new stack
[Mar  4 07:32:02] WARNING[12309][C-00000000]: app_dial.c:2467 dial_exec_full: Dial argument takes format (technology/resource)
  == Spawn extension (call-out, 102, 1) exited non-zero on 'SIP/101-00000000'

LoyrLino ()
Ответ на: комментарий от LoyrLino
  1. Останови сервис, запусти asterisk -cvvvv и покажи стартовый выхлоп.
  2. Покажи выхлоп команд module show и core show applications
  3. Покажи выхлоп dialplan show
Turbid ★★★★★ ()
Последнее исправление: Turbid (всего исправлений: 2)
Ответ на: комментарий от Turbid


Ubuntu18-Asterisk16*CLI> dialplan reload
Dialplan reloaded.
    -- Including switch 'Lua/' in context 'default'
    -- Including switch 'Lua/' in context 'public'
    -- Including switch 'Lua/' in context 'local'
    -- Including switch 'Lua/' in context 'demo'
    -- Including switch 'DUNDi/e164' in context 'ael-dundi-e164-switch'
    -- Time to scan old dialplan and merge leftovers back into the new: 0.000163 sec
    -- Time to restore hints and swap in new dialplan: 0.000003 sec
    -- Time to delete the old dialplan: 0.000051 sec
    -- Total time merge_contexts_delete: 0.000217 sec
    -- pbx_config successfully loaded 27 contexts (enable debug for details).
LoyrLino ()
Ответ на: комментарий от Turbid
dialplan debug 101@call-out

     In-mem exten Trie for Fast Extension Pattern Matching:


           Explanation: Node Contents Format = <char(s) to match>:<pattern?>:<specif>:[matched extension]
                        Where <char(s) to match> is a set of chars, any one of which should match the current character
                              <pattern?>: Y if this a pattern match (eg. _XZN[5-7]), N otherwise
                              <specif>: an assigned 'exactness' number for this matching char. The lower the number, the more exact the match
                              [matched exten]: If all chars matched to this point, which extension this matches. In form: EXTEN:<exten string>
                        In general, you match a trie node to a string character, from left to right. All possible matching chars
                        are in a string vertically, separated by an unbroken string of '+' characters.

[ Context 'call-out' created by 'pbx_config' ]
 X:Y:-:2608:
 +       X:Y:-:2608:
 +       +       X:Y:-:2608:EXTEN:_XXX(0x564eb631fa10)

-= 1 context. =-
LoyrLino ()
Ответ на: комментарий от LoyrLino

Везде переменные есть, кроме как из pbx_config.

Попробуй через AEL:

  1. Закомментируй все в extensions.conf с помощью ;
  2. В конце extensions.ael добавь блок:
context call-out {
  _1XX => {
    Dial(SIP/${EXTEN},90);
  };
};
  1. выполни dialplan reload и ael reload
  2. покажи dialplan show 101@call-out
Turbid ★★★★★ ()
Последнее исправление: Turbid (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.