Журнал лабораторных работ

Содержание

Журнал

Четверг (11/27/14)

/dev/pts/3
12:29:35
#~
E325: ATTENTION
Found a swap file by the name "/etc/asterisk/.extensions.conf.swp"
          owned by: root   dated: Tue Nov 25 15:44:27 2014
         file name: /etc/asterisk/extensions.conf
          modified: YES
         user name: root   host name: debian5
        process ID: 18251 (still running)
While opening file "/etc/asterisk/extensions.conf"
             dated: Thu Nov 27 13:28:13 2014
      NEWER than swap file!
...
    file when making changes.  Quit, or continue with caution.
(2) An edit session for this file crashed.
    If this is the case, use ":recover" or "vim -r /etc/asterisk/extensions.conf
                                                                                "
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file "/etc/asterisk/.extensions.con
                                                                                f
.swp"
    to avoid this message.
Swap file "/etc/asterisk/.extensions.conf.swp" already exists!
/dev/pts/0
12:29:35
#~
E325: ATTENTION
Found a swap file by the name "/etc/asterisk/.extensions.conf.swp"
          owned by: root   dated: Tue Nov 25 15:44:27 2014
         file name: /etc/asterisk/extensions.conf
          modified: YES
         user name: root   host name: debian5
        process ID: 18251 (still running)
While opening file "/etc/asterisk/extensions.conf"
             dated: Thu Nov 27 13:28:13 2014
      NEWER than swap file!
...
    file when making changes.  Quit, or continue with caution.
(2) An edit session for this file crashed.
    If this is the case, use ":recover" or "vim -r /etc/asterisk/extensions.conf
                                                                                "
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file "/etc/asterisk/.extensions.con
                                                                                f
.swp"
    to avoid this message.
Swap file "/etc/asterisk/.extensions.conf.swp" already exists!
/dev/pts/3
12:29:44
#rm -f /etc/asterisk/
Display all 100 possibilities? (y or n)
adsi.conf                console.conf             musiconhold.conf
agents.conf              dbsep.conf               muted.conf
ais.conf                 dnsmgr.conf              osp.conf
alarmreceiver.conf       dsp.conf                 oss.conf
alsa.conf                dundi.conf               phone.conf
amd.conf                 enum.conf                phoneprov.conf
app_mysql.conf           extconfig.conf           queuerules.conf
asterisk.adsi            extensions.ael           queues.conf
asterisk.conf            extensions.conf          res_config_mysql.conf
...
cel_pgsql.conf           jabber.conf              sla.conf
cel_sqlite3_custom.conf  jingle.conf              smdi.conf
cel_tds.conf             logger.conf              telcordia-1.adsi
chan_dahdi.conf          manager.conf             udptl.conf
chan_mobile.conf         manager.d/               unistim.conf
chan_ooh323.conf         meetme.conf              users.conf
cli_aliases.conf         mgcp.conf                voicemail.conf
cli.conf                 minivm.conf              vpb.conf
cli_permissions.conf     misdn.conf
codecs.conf              modules.conf
/dev/pts/0
12:29:44
#rm -f /etc/asterisk/
Display all 100 possibilities? (y or n)
adsi.conf                console.conf             musiconhold.conf
agents.conf              dbsep.conf               muted.conf
ais.conf                 dnsmgr.conf              osp.conf
alarmreceiver.conf       dsp.conf                 oss.conf
alsa.conf                dundi.conf               phone.conf
amd.conf                 enum.conf                phoneprov.conf
app_mysql.conf           extconfig.conf           queuerules.conf
asterisk.adsi            extensions.ael           queues.conf
asterisk.conf            extensions.conf          res_config_mysql.conf
...
cel_pgsql.conf           jabber.conf              sla.conf
cel_sqlite3_custom.conf  jingle.conf              smdi.conf
cel_tds.conf             logger.conf              telcordia-1.adsi
chan_dahdi.conf          manager.conf             udptl.conf
chan_mobile.conf         manager.d/               unistim.conf
chan_ooh323.conf         meetme.conf              users.conf
cli_aliases.conf         mgcp.conf                voicemail.conf
cli.conf                 minivm.conf              vpb.conf
cli_permissions.conf     misdn.conf
codecs.conf              modules.conf
/dev/pts/3
12:29:44
#rm -f /etc/asterisk/.extensions.conf.sw*

/dev/pts/0
12:29:44
#rm -f /etc/asterisk/.extensions.conf.sw*

/dev/pts/3
12:32:57
#asterisk -rx 'dialplan reload'
Dialplan reloaded.
/dev/pts/0
12:32:57
#asterisk -rx 'dialplan reload'
Dialplan reloaded.
прошло 10 минут
/dev/pts/3
12:43:03
#vim /etc/asterisk/extensions.conf
/dev/pts/0
12:43:03
#vim /etc/asterisk/extensions.conf
/dev/pts/3
12:47:02
#vim /etc/asterisk/extensions.conf
/dev/pts/0
12:47:02
#vim /etc/asterisk/extensions.conf
/dev/pts/3
12:48:35
#~
 25 exten => s,n(start),Background(/var/tmp/asterisk/record02)
"/etc/asterisk/extensions.conf" 204L, 6601C
 26 exten => s,n,WaitExten(3)
 27 exten => s,n,Background(/var/tmp/asterisk/record03)
 28 exten => s,n,WaitExten(3)
 29 exten => s,n,Background(/var/tmp/asterisk/record04)
 30 exten => s,n,Hangup
 31
 32 exten => 1,1,Goto(submenu,s,1)
 33
...
 39 ; проговариваем record07 "ваш заказ №"
 40 exten => 3,n,Playback(/var/tmp/asterisk/record07)
 41
 42 ; проговариваем переменную ORDER
 43 exten => 3,n,SayDigits(${ORDER})
 44
 45 ; проговариваем record08 "заказ не существует"
 46 exten => 3,n,Playback(/var/tmp/asterisk/record08)
 47
 48 ; если нажали цифру 4 - то переходим на вызов оператора
/dev/pts/0
12:48:35
#~
 19 ; с возможностью выбора (WaitExten)
 20 exten => s,1,Answer
 21 exten => s,n,Background(/var/tmp/asterisk/record01)
 22 exten => s,n,WaitExten(1)
 23
 24 ; метка (labels), ставятся с помощью скобочек после n
 25 exten => s,n(start),Background(/var/tmp/asterisk/record02)
"/etc/asterisk/extensions.conf" 204L, 6601C
 26 exten => s,n,WaitExten(3)
 27 exten => s,n,Background(/var/tmp/asterisk/record03)
...
 39 ; проговариваем record07 "ваш заказ №"
 40 exten => 3,n,Playback(/var/tmp/asterisk/record07)
 41
 42 ; проговариваем переменную ORDER
 43 exten => 3,n,SayDigits(${ORDER})
 44
 45 ; проговариваем record08 "заказ не существует"
 46 exten => 3,n,Playback(/var/tmp/asterisk/record08)
 47
 48 ; если нажали цифру 4 - то переходим на вызов оператора
/dev/pts/3
12:48:40
# 49 ; попадаем на очередь (Queue), имя очереди queue1
Updated database successfully
/dev/pts/0
12:48:40
# 49 ; попадаем на очередь (Queue), имя очереди queue1
Updated database successfully
/dev/pts/3
12:49:04
#asterisk -rx "database put order 2 10"
Updated database successfully
/dev/pts/0
12:49:04
#asterisk -rx "database put order 2 10"
Updated database successfully
/dev/pts/3
12:51:10
#asterisk -rvv
Asterisk 1.8.13.1~dfsg1-3+deb7u3, Copyright (C) 1999 - 2012 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
  == Parsing '/etc/asterisk/asterisk.conf':   == Found
  == Parsing '/etc/asterisk/extconfig.conf':   == Found
Connected to Asterisk 1.8.13.1~dfsg1-3+deb7u3 currently running on debian5 (pid = 3091)
...
    -- <SIP/2201-000000a0> Playing '/var/tmp/asterisk/record01.gsm' (language 'ru')
    -- Executing [s@menu:3] WaitExten("SIP/2201-000000a0", "1") in new stack
    -- Timeout on SIP/2201-000000a0, continuing...
    -- Executing [s@menu:4] BackGround("SIP/2201-000000a0", "/var/tmp/asterisk/record02") in new stack
    -- <SIP/2201-000000a0> Playing '/var/tmp/asterisk/record02.gsm' (language 'ru')
    -- Executing [1@menu:1] Goto("SIP/2201-000000a0", "submenu,s,1") in new stack
    -- Goto (submenu,s,1)
[Nov 27 13:52:09] WARNING[11183]: pbx.c:5367 __ast_pbx_run: Channel 'SIP/2201-000000a0' sent into invalid extension 's' in context 'submenu', but no invalid handler
debian5*CLI> exit
Executing last minute cleanups
/dev/pts/0
12:51:10
#asterisk -rvv
Asterisk 1.8.13.1~dfsg1-3+deb7u3, Copyright (C) 1999 - 2012 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
  == Parsing '/etc/asterisk/asterisk.conf':   == Found
  == Parsing '/etc/asterisk/extconfig.conf':   == Found
Connected to Asterisk 1.8.13.1~dfsg1-3+deb7u3 currently running on debian5 (pid = 3091)
...
    -- <SIP/2201-000000a0> Playing '/var/tmp/asterisk/record01.gsm' (language 'ru')
    -- Executing [s@menu:3] WaitExten("SIP/2201-000000a0", "1") in new stack
    -- Timeout on SIP/2201-000000a0, continuing...
    -- Executing [s@menu:4] BackGround("SIP/2201-000000a0", "/var/tmp/asterisk/record02") in new stack
    -- <SIP/2201-000000a0> Playing '/var/tmp/asterisk/record02.gsm' (language 'ru')
    -- Executing [1@menu:1] Goto("SIP/2201-000000a0", "submenu,s,1") in new stack
    -- Goto (submenu,s,1)
[Nov 27 13:52:09] WARNING[11183]: pbx.c:5367 __ast_pbx_run: Channel 'SIP/2201-000000a0' sent into invalid extension 's' in context 'submenu', but no invalid handler
debian5*CLI> exit
Executing last minute cleanups
/dev/pts/3
12:54:49
#vim /etc/asterisk/extensions.conf
--- /tmp/l3-saved-25685.5212.28713	2014-11-27 13:54:54.311661027 +0200
+++ /etc/asterisk/extensions.conf	2014-11-27 13:56:50.703662407 +0200
@@ -42,8 +42,11 @@
 ; проговариваем переменную ORDER
 exten => 3,n,SayDigits(${ORDER})
 
-; проговариваем record08 "заказ не существует"
-exten => 3,n,Playback(/var/tmp/asterisk/record08)
+; обращение к БД из плана набора:
+; ${DB(db_name/key)}
+; dn_name = order в нашем случае
+; key = в нашем случае введённый номер заказа
+exten => 3,n,Playback(/var/tmp/asterisk/record${DB(order/${ORDER})})
 
 ; если нажали цифру 4 - то переходим на вызов оператора
 ; попадаем на очередь (Queue), имя очереди queue1
/dev/pts/0
12:54:49
#vim /etc/asterisk/extensions.conf
/dev/pts/3
12:59:38
#play /var/tmp/asterisk/record09.gsm
play WARN alsa: can't encode 0-bit Unknown or not applicable
/var/tmp/asterisk/record09.gsm:
 File Size: 2.21k
  Encoding: GSM
  Channels: 1 @ 16-bit
Samplerate: 8000Hz
Replaygain: off
  Duration: unknown
In:0.00% 00:00:01.34 [00:00:00.00] Out:10.7k [======|======]        Clip:0
Done.
/dev/pts/0
12:59:38
#play /var/tmp/asterisk/record09.gsm
play WARN alsa: can't encode 0-bit Unknown or not applicable
/var/tmp/asterisk/record09.gsm:
 File Size: 2.21k
  Encoding: GSM
  Channels: 1 @ 16-bit
Samplerate: 8000Hz
Replaygain: off
  Duration: unknown
In:0.00% 00:00:01.34 [00:00:00.00] Out:10.7k [======|======]        Clip:0
Done.
/dev/pts/3
13:01:29
#play /var/tmp/asterisk/record10.gsm
play WARN alsa: can't encode 0-bit Unknown or not applicable
/var/tmp/asterisk/record10.gsm:
 File Size: 1.68k
  Encoding: GSM
  Channels: 1 @ 16-bit
Samplerate: 8000Hz
Replaygain: off
  Duration: unknown
In:0.00% 00:00:01.02 [00:00:00.00] Out:8.16k [======|======]        Clip:0
Done.
/dev/pts/0
13:01:29
#play /var/tmp/asterisk/record10.gsm
play WARN alsa: can't encode 0-bit Unknown or not applicable
/var/tmp/asterisk/record10.gsm:
 File Size: 1.68k
  Encoding: GSM
  Channels: 1 @ 16-bit
Samplerate: 8000Hz
Replaygain: off
  Duration: unknown
In:0.00% 00:00:01.02 [00:00:00.00] Out:8.16k [======|======]        Clip:0
Done.
/dev/pts/3
13:04:59
#ls /var/tmp/asterisk/
record00.gsm  record03.gsm  record06.gsm  record09.gsm  record12.gsm
record01.gsm  record04.gsm  record07.gsm  record10.gsm
record02.gsm  record05.gsm  record08.gsm  record11.gsm
/dev/pts/0
13:04:59
#ls /var/tmp/asterisk/
record00.gsm  record03.gsm  record06.gsm  record09.gsm  record12.gsm
record01.gsm  record04.gsm  record07.gsm  record10.gsm
record02.gsm  record05.gsm  record08.gsm  record11.gsm
/dev/pts/3
13:05:18
#vim /etc/asterisk/extensions.conf
/dev/pts/0
13:05:18
#vim /etc/asterisk/extensions.conf
/dev/pts/3
13:08:06
#vim /etc/asterisk/extensions.conf
--- /tmp/l3-saved-25685.18526.12947	2014-11-27 14:08:07.931670419 +0200
+++ /etc/asterisk/extensions.conf	2014-11-27 14:17:01.971676744 +0200
@@ -46,7 +46,12 @@
 ; ${DB(db_name/key)}
 ; dn_name = order в нашем случае
 ; key = в нашем случае введённый номер заказа
+; довольно хитрая конструкция:
+; $[ a = b ]? label
+exten => 3,n,GotoIf($["$[DB(order/${OREDR})]" = ""]?unknown_order)
 exten => 3,n,Playback(/var/tmp/asterisk/record${DB(order/${ORDER})})
+exten => 3,n,Hangup
+exten => 3,n,(unknown_order),Playback(/var/tmp/asterisk/record10)
 
 ; если нажали цифру 4 - то переходим на вызов оператора
 ; попадаем на очередь (Queue), имя очереди queue1
/dev/pts/0
13:08:06
#vim /etc/asterisk/extensions.conf
/dev/pts/3
13:17:02
#vim /etc/asterisk/extensions.conf
/dev/pts/0
13:17:02
#vim /etc/asterisk/extensions.conf
13:19:13
#asterisk -rvv
Asterisk 1.8.13.1~dfsg1-3+deb7u3, Copyright (C) 1999 - 2012 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
  == Parsing '/etc/asterisk/asterisk.conf':   == Found
  == Parsing '/etc/asterisk/extconfig.conf':   == Found
Connected to Asterisk 1.8.13.1~dfsg1-3+deb7u3 currently running on debian5 (pid = 3091)
...
[Nov 27 14:19:31] WARNING[11551]: ast_expr2.fl:472 ast_yyerror: If you have questions, please refer to https://wiki.asterisk.org/wiki/display/AST/Channel+Variables
    -- Executing [3@menu:5] GotoIf("SIP/2201-000000af", "0?unknown_order") in new stack
    -- Executing [3@menu:6] Playback("SIP/2201-000000af", "/var/tmp/asterisk/record9") in new stack
[Nov 27 14:19:31] WARNING[11551]: file.c:663 ast_openstream_full: File /var/tmp/asterisk/record9 does not exist in any format
[Nov 27 14:19:31] WARNING[11551]: file.c:958 ast_streamfile: Unable to open /var/tmp/asterisk/record9 (format 0x4 (ulaw)): No such file or directory
[Nov 27 14:19:31] WARNING[11551]: app_playback.c:475 playback_exec: ast_streamfile failed on SIP/2201-000000af for /var/tmp/asterisk/record9
    -- Executing [3@menu:7] Hangup("SIP/2201-000000af", "") in new stack
  == Spawn extension (menu, 3, 7) exited non-zero on 'SIP/2201-000000af'
debian5*CLI> exit
Executing last minute cleanups
/dev/pts/3
13:19:13