Quantcast
Channel: IP АТС Asterisk
Viewing all 1135 articles
Browse latest View live

Asterisk app: Authenticate

$
0
0

Asterisk app: Authenticate

Аутентификация пользователя в диалплане Asterisk.

Описание

Данное приложение требует от звонящего ввести пароль для продолжения выполнения диалплана.

Если пароль начинается со слэш '/', то символы интерпретируются как имя файла, который содержит пароль.
В файле может содержаться множество паролей, по одному в каждой новой строке.
При использовании ключа базы данных, значение соотнесенное с ключом может быть произвольным, оно не используется.
У пользователя есть три попытки ввода, прежде чем соединение будет разорвано.

Синтаксис

Authenticate(password[,options[,maxdigits[,prompt]]])

Аргументы

  • password - пароль известный пользователю.

options:

  • a: Установить Account Code, как введенный пароль.
  • d: Определяет указанный путь, как ключ БД. Если family/keyзаданы в БД, как /pin/4888,

то в диалплане назначается /pin, в качестве паролю будет использован ключ - 4888, значение же пары family/key (в примере 1234) не важно:

exten => _7777,1,Answer()
exten => _7777,n,Authenticate(/pin,d,4,conf-getpin)

CLI> database show pin
/pin/4888                                         : 1234
1 results found.
  • m: представляет указанный путь, как файл, содержащий список аккаунтов и хэш паролей, разделенные двоеточием ':'.

/var/spool/asterisk/pass (hash 1234 и 4321 соответственно)

 4888:81dc9bdb52d04dc20036dbd8313ed055
  :d93591bdf7860e1e4ee2fca799911215

exten => _7777,1,Answer()
exten => _7777,n,Authenticate(/var/spool/asterisk/pass,am,4,conf-getpin)
  • r: Удалить ключ БД. после успешного ввода (работает только с опцией 'd')
  • maxdigits: максимально допустимое количество знаков в пароле. Система перестает читать ввод данных после достижения порога.

В этом случае не требуется ввод решетки '#' в конце. По умолчанию '0' - без ограничений, система ожидает ввода решетки '#' в конце.

  • prompt: файл голосового сообщения.

[See Also]

VMAuthenticate(), DISA()

exten => _1,1,Authenticate(1234,,4,conf-getpin)
exten => _1,n,Set(CDR(userfield)=conference776/${CALLERID(num)})
exten => _1,n,ConfBridge(776)

Команды диалплана Asterisk


Asterisk app: BackGround

$
0
0

Asterisk app: BackGround

Команда плана набора Asterisk "BackGround"

Обзор

Во время воспроизведения аудио файла принимает DTMFсигналы для вызова екстеншена.

Play an audio file while waiting for digits of an extension to go to.

Описание

Данное приложение позволяет вызвать екстеншен заданный в диалплане из канала вызова во время воспроизведения звукового файла. По завершению воспроизведения файла используйте команду WaitExten, чтобы установить дополнительное время для ввода.

Если какой-то из заданных звуковых файлов не существует,обработка вызова будет прекращена.

Это приложение устанавливает следующую переменную канала после завершения: ${BACKGROUNDSTATUS}: статус попытки, возвращается текстовая строка:

  SUCCESS
  FAILED

Syntax

BackGround(filename1[&filename2[&...]][,options[,langoverride[,context]]])

Аргументы

options
  • s: Не проигрывать сообщение, если канал не поднят, (т.е. статус не Answered).

В этом случае выполнение команды прекращается немедленно.

exten => s,1,Noop()
exten => s,n,Background(demo-congrats,,ru,)
Сообщение будет проиграно.
exten => s,1,Noop()
exten => s,n,Background(demo-congrats,s,ru,)
exten =  s,n,Dial(PJSIP/7777@fs_pjsip)
Сообщение не будет воспроизведено и сразу перейдет к вызову есктеншена.
  • n: Не отвечать на вызов до того, как воспроизведено сообщение сообщения.(не совсем понятно, для чего это можно применить)
  • m: Вызывать екстеншен только по одной цифре, если она задана в контексте назначения.

Предположим в вашем контексте заданы 3-х значные номера на 2 и 1 и короткие екстеншены 1 и 2. Если опция mзадана,
то вызов 1XXи 2ХХиз приложения Background не разрешается:

exten => s,1,Answer()
exten => s,n,Background(demo-congrats,m,ru,)

exten => _1XX,1,Dial(PJSIP/${EXTEN}@fs_pjsip)
exten => _2XX,1,Dial(PJSIP/${EXTEN}@fs_pjsip)
exten => _1,1,Dial(PJSIP/111@fs_pjsip)
exten => _2,1,Dial(PJSIP/222@fs_pjsip)
  • langoverride - Указывает какой язык использовать для запрошенных звуковых файлов.

exten => s,1,Answer()
exten => s,n,Background(demo-congrats,,en,)
Сообщение demo-congratsбудет проиграно на английском языке, вопреки настройкам sip general или канала.
  • context - Дополнительный контекст из которого можно вызывать екстеншены.

[ivr-main]
exten => s,1,Answer()
exten => s,n,Background(demo-congrats,,en,ext-ivr)
exten => i,1,Dial(PJSIP/111@fs_pjsip)
[ext-ivr]
exten => _1XX,1,Dial(PJSIP/${EXTEN}@fs_pjsip)
exten => _2XX,1,Dial(PJSIP/${EXTEN}@fs_pjsip)
Наперво будет проверен контекст из которого выполняется приложение Background, а затем дополнительный.
Дополнительно

Asterisk app: BackgroundDetect

$
0
0

Asterisk app: BackgroundDetect

Приложение диалплана Asterisk: воспроизвести файл с детектированием речи на удаленной стороне.

Описание

Проигрывает заданный файл <filename>, в ожидание ввода цифр (должны быть заданы как екстеншены). Во время воспроизведения файла анализирует входящий аудио поток, если период активности в канале больше чем заданный аргумент <min> миллисекунд и меньше <max>, а последующий период молчания, как минимум <sil> миллисекунд, за общее время с начала <analysistime> ms, воспроизведение файла прекращается, и вызов переходит на приоритет <talk>, если таковой имеется.

Синтаксис

BackgroundDetect(filename[,sil[,min[,max[,analysistime]]]])

Аргументы
  • sil - если не задано, по умолчанию '1000' мс.
  • min - если не задано, по умолчанию '100' мс.
  • max - если не задано, по умолчанию 'бесконечность'.
  • analysistime - если не задано, по умолчанию 'бесконечность'.

Команды диалплана Asterisk

ChanIsAvail

$
0
0

ChanIsAvail

[Synopsis]

Check channel availability

[Description]

This application will check to see if any of the specified channels are available. This application sets the following channel variables: ${AVAILCHAN}: The name of the available channel, if one exists ${AVAILORIGCHAN}: The canonical channel name that was used to create the channel ${AVAILSTATUS}: The device state for the device ${AVAILCAUSECODE}: The cause code returned when requesting the channel

[Syntax]

ChanIsAvail([Technology2/Resource2[&…]][,options])

[Arguments]

Technology2/Resource2

  Optional extra devices to check
  If you need more then one enter them as Technology2/Resource2&Te
  chnology3/Resourse3&.....

Technology/Resource

  Specification of the device(s) to check.  These must be in the format
  of  'Technology/Resource', where <Technology> represents a particular
  channel driver, and <Resource> represents a resource available to that
  particular channel driver.

options

  a: Check for all available channels, not only the first one
  s: Consider the channel unavailable if the channel is in use at all
  t: Simply checks if specified channels exist in the channel list

[See Also]

Пример

[from-test]
exten => _X.,1,Macro(chanisavail,${EXTEN})

[macro-chanisavail]
exten => s,1,Set(_TRK=SIP/siptrunk)
exten => s,n,ChanIsAvail(${TRK}1&${TRK}2&${TRK}3&${TRK}4,a)
exten => s,n,Dial(${CUT(AVAILCHAN,,1)}/${ARG1},,e)

CUT

Команды диалплана Asterisk

Asterisk app: Bridge

$
0
0

Asterisk app: Bridge

Приложение диалплана Asterisk - Bridge: соединить два существующих канала.

Описание

Позволяет соединить два канала при помощи диалплана. В отличии от команды Dial, оба канала должны существовать.

Возвращает переменную ${BRIDGERESULT}с одним из перечисленных значений:

  • SUCCESS
  • FAILURE
  • LOOP
  • NONEXISTENT
  • INCOMPATIBLE
Синтаксис

Bridge(channel[,options])

Аргументы
  • channel - Текущий канал соединяется с указанным <каналом>.
Опции
  • p: Проиграть предупредительный сигнал в <channel>.
  • F([[context^]exten^]priority): Если инициатор моста положил трубку, отправить поднятый канал по указанному назначению.
  • F: Если инициатор моста положил трубку, отправить поднятый канал на следующий приоритет и продолжить выполнение диалплана.

Примечание: Все переменные канала, которые вы хотите использовать должны быть наследуемые (имена переменных должны начинаться с нижнего подчеркивания('_').
Примечание: Эта опция отменяет опцию 'X'

  • h: Разрешить вызываемойстороне разорвать соединение DTMFкодом <*>.
  • H: Разрешить вызывающейстороне разорвать соединение DTMFкодом <*>.
  • k: Разрешить вызываемойстороне припарковать вызов DTMFкодом назначенным в features.conf
  • K: Разрешить вызывающейстороне припарковать вызов DTMFкодом назначенным в features.conf
  • L(x[:y][:z]): Ограничить время вызова в <x> ms. Воспроизвести предупреждение за <y> ms. Повторять каждые <z> ms. Следующие переменные могут быть использованы с данной опцией:
    • ${LIMIT_PLAYAUDIO_CALLER}: Воспроизвести предупреждения звонящему. yes|no (default yes)
    • ${LIMIT_PLAYAUDIO_CALLEE}: Воспроизвести предупреждения вызываемому. yes|no
    • ${LIMIT_TIMEOUT_FILE}: Файл для когда время вышло.
    • ${LIMIT_CONNECT_FILE}: Файл предупреждение вначале.
    • ${LIMIT_WARNING_FILE}: Файл предупреждение, если время <y> задано.
  • S(x): Завершить вызов после <x> секунд после ответа вызываемой стороны.
  • t: разрешить трансфер вызываемой стороне.
  • T: разрешить трансфер взывающей стороне.
  • w: разрешить включение записи вызываемой стороне.
  • W: разрешить включение записи вызывающей стороне.
  • x: не продолжать выполнение диалплана вызываемой стороной, после завершения моста.
пример 1

простейший пример применения этой команды,
перехват входящих вызовов из транка:

 exten => _555,1,Bridge(PJSIP/siptrunk)

Команды диалплана Asterisk

Asterisk app: DumpChan

$
0
0

Asterisk app: DumpChan

Приложение диалплана Asterisk - DumpChan выводит в консоль информацию о вызывающем канале.

описание

Выводит информацию о канале и список переменных канала.
Когда <level> указан (0-8), вывод отобразится в консоли только в том случае,
если уровень отображения консоли (core set verbose <0-8> равен или больше заданного DumpChan([level])

синтаксис

DumpChan([level])

аргументы
  • level - минимальный уровень отображения.
пример

*CLI> core set verbose 4
Console verbose was 2 and is now 4.

exten => _4886,1,Dial(SIP/4886,,e)
exten => _h,1,DumpChan(3)
вывод консоли:
-- Executing [h@from-test-2:1] DumpChan("PJSIP/fs_pjsip-0000004d", "3") in new stack
       >
       > Dumping Info For Channel: PJSIP/fs_pjsip-0000004d:
       > ================================================================================
       > Info:
       > Name=               PJSIP/fs_pjsip-0000004d
       > Type=               PJSIP
       > UniqueID=           1477493217.1289
       > LinkedID=           1477493217.1289
       > CallerIDNum=        2666
       > CallerIDName=       Oleg IT
       > ConnectedLineIDNum= 4886
       > ConnectedLineIDName=sip 4886
       > DNIDDigits=         (N/A)
       > RDNIS=              (N/A)
       > Parkinglot=
       > Language=           en
       > State=              Up (6)
       > Rings=              1
       > NativeFormat=       (ulaw|alaw)
       > WriteFormat=        alaw
       > ReadFormat=         alaw
       > RawWriteFormat=     alaw
       > RawReadFormat=      alaw
       > WriteTranscode=     No
       > ReadTranscode=      No
       > 1stFileDescriptor=  24
       > Framesin=           183
       > Framesout=          0
       > TimetoHangup=       0
       > ElapsedTime=        0h0m5s
       > BridgeID=           (Not bridged)
       > Context=            from-test-2
       > Extension=          h
       > Priority=           1
       > CallGroup=
       > PickupGroup=
       > Application=        DumpChan
       > Data=               3
       > Blocking_in=        (Not Blocking)
       >
       > Variables:
       > DIALSTATUS=ANSWER
       > DIALEDTIME=5
       > ANSWEREDTIME=3
       > RTPAUDIOQOSRTTBRIDGED=minrtt=0.000000;maxrtt=0.000000;avgrtt=0.000000;stdevrtt=0.000000;
       > RTPAUDIOQOSLOSSBRIDGED=minrxlost=0.000000;maxrxlost=0.000000;avgrxlost=0.000000;stdevrxlost=0.000000;reported_minlost=0.000000;reported_maxlost=0.000000;reported_avglost=0.000000;reported_stdevlost=0.000000;
       > RTPAUDIOQOSJITTERBRIDGED=minrxjitter=0.000000;maxrxjitter=0.000000;avgrxjitter=0.000000;stdevrxjitter=0.000000;reported_minjitter=0.000000;reported_maxjitter=0.000000;reported_avgjitter=0.000000;reported_stdevjitter=0.000000;
       > RTPAUDIOQOSBRIDGED=ssrc=449942593;themssrc=0;lp=0;rxjitter=0.000000;rxcount=134;txjitter=0.000000;txcount=178;rlp=0;rtt=0.000000
       > DIALEDPEERNUMBER=4886
       > DIALEDPEERNAME=SIP/4886-00000077
       > ================================================================================

см также

Команды диалплана Asterisk

ChanSpy

$
0
0

ChanSpy

[Synopsis]

Listen to a channel, and optionally whisper into it.

[Description]

This application is used to listen to the audio from an Asterisk channel. This includes the audio coming in and out of the channel being spied on. If the 'chanprefix' parameter is specified, only channels beginning with this string will be spied upon. While spying, the following actions may be performed: - Dialing '#' cycles the volume level. - Dialing '*' will stop spying and look for another channel to spy on. - Dialing a series of digits followed by '#' builds a channel name to append to 'chanprefix'. For example, executing ChanSpy(Agent) and then dialing the digits '1234#' while spying will begin spying on the channel 'Agent/1234'. Note that this feature will be overridden if the 'd' option is used NOTE: The <X> option supersedes the three features above in that if a valid single digit extension exists in the correct context ChanSpy will exit to it. This also disables choosing a channel based on 'chanprefix' and a digit sequence.

[Syntax]

ChanSpy([chanprefix][,options])

[Arguments]

options

  b: Only spy on channels involved in a bridged call.
  B: Instead of whispering on a single channel barge in on both channels
  involved in the call.
  c(digit):
      digit - Specify a DTMF digit that can be used to spy on the
      next available channel.
  d: Override the typical numeric DTMF functionality and instead use
  DTMF to switch between spy modes.
      4 - spy mode
      5 - whisper mode
      6 - barge mode
  e(ext): Enable *enforced* mode, so the spying channel can only monitor
  extensions whose name is in the <ext> : delimited  list.
  E: Exit when the spied-on channel hangs up.
  g(grp):
      grp - Only spy on channels in which one or more of the groups
      listed in <grp> matches one or more groups from the ${SPYGROUP}
      variable set on the channel to be spied upon.

NOTE: both <grp> and ${SPYGROUP} can contain either a single group or a colon-delimited list of groups, such as 'sales:support:accounting'.

  n([mailbox][@context]): Say the name of the person being spied on
  if that person has recorded his/her name. If a context is specified, then
  that voicemail context will be searched when retrieving the name, otherwise
  the 'default' context be used when searching for the name (i.e. if SIP/1000
  is the channel being spied on and no mailbox is specified, then '1000'
  will be used when searching for the name).
  o: Only listen to audio coming from this channel.
  q: Don't play a beep when beginning to spy on a channel, or speak
  the selected channel name.
  r([basename]): Record the session to the monitor spool directory.
  An optional base for the filename  may be specified. The default is '
  chanspy'.
  s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when
  speaking the selected channel name.
  S: Stop when no more channels are left to spy on.
  v([value]): Adjust the initial volume in the range from '-4'  to
  '4'. A negative value refers to a quieter setting.
  w: Enable 'whisper' mode, so the spying channel can talk to the
  spied-on channel.
  W: Enable 'private whisper' mode, so the spying channel can talk
  to the spied-on channel but cannot listen to that channel.
  x(digit):
      digit - Specify a DTMF digit that can be used to exit the
      application.
  X: Allow the user to exit ChanSpy to a valid single digit numeric
  extension in the current context or the context specified by the ${SP
  Y_EXIT_CONTEXT} channel variable. The name of the last channel that was
  spied on will be stored in the ${SPY_CHANNEL} variable.
пример

exten => _555XXXX,1,verbose(${CHANNELS()})
   same => n,set(chan1=${CUT(CHANNELS((SIP/${EXTEN:3})-.),,1)})
   same => n,gotoif($[${chan1} = SIP/${EXTEN:3}]?pk)
   same => n,hangup 
   same => n(pk),chanspy(SIP/${EXTEN:3})

см также:

ExtenSpy()

Команды диалплана Asterisk

ExtenSpy

$
0
0

ExtenSpy

[Synopsis]

Listen to a channel, and optionally whisper into it.

[Description]

This application is used to listen to the audio from an Asterisk channel. This includes the audio coming in and out of the channel being spied on. Only channels created by outgoing calls for the specified extension will be selected for spying. If the optional context is not supplied, the current channel's context will be used. While spying, the following actions may be performed: - Dialing '#' cycles the volume level. - Dialing '*' will stop spying and look for another channel to spy on. NOTE: The <X> option supersedes the three features above in that if a valid single digit extension exists in the correct context ChanSpy will exit to it. This also disables choosing a channel based on 'chanprefix' and a digit sequence.

[Syntax]

ExtenSpy(exten[@context][,options])

[Arguments]

exten

  Specify extension.

context

  Optionally specify a context, defaults to 'default'.

options

  b: Only spy on channels involved in a bridged call.
  B: Instead of whispering on a single channel barge in on both channels
  involved in the call.
  c(digit):
      digit - Specify a DTMF digit that can be used to spy on the
      next available channel.
  d: Override the typical numeric DTMF functionality and instead use
  DTMF to switch between spy modes.
      4 - spy mode
      5 - whisper mode
      6 - barge mode
  e(ext): Enable *enforced* mode, so the spying channel can only monitor
  extensions whose name is in the <ext> : delimited  list.
  E: Exit when the spied-on channel hangs up.
  g(grp):
      grp - Only spy on channels in which one or more of the groups
      listed in <grp> matches one or more groups from the ${SPYGROUP}
      variable set on the channel to be spied upon.

NOTE: both <grp> and ${SPYGROUP} can contain either a single group or a colon-delimited list of groups, such as 'sales:support:accounting'.

  n([mailbox][@context]): Say the name of the person being spied on
  if that person has recorded his/her name. If a context is specified, then
  that voicemail context will be searched when retrieving the name, otherwise
  the 'default' context be used when searching for the name (i.e. if SIP/1000
  is the channel being spied on and no mailbox is specified, then '1000'
  will be used when searching for the name).
  o: Only listen to audio coming from this channel.
  q: Don't play a beep when beginning to spy on a channel, or speak
  the selected channel name.
  r([basename]): Record the session to the monitor spool directory.
  An optional base for the filename  may be specified. The default is '
  chanspy'.
  s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when
  speaking the selected channel name.
  S: Stop when there are no more extensions left to spy on.
  v([value]): Adjust the initial volume in the range from '-4'  to
  '4'. A negative value refers to a quieter setting.
  w: Enable 'whisper' mode, so the spying channel can talk to the
  spied-on channel.
  W: Enable 'private whisper' mode, so the spying channel can talk
  to the spied-on channel but cannot listen to that channel.
  x(digit):
      digit - Specify a DTMF digit that can be used to exit the
      application.
  X: Allow the user to exit ChanSpy to a valid single digit numeric extension in the current context 
  or the context specified by the ${SPY_EXIT_CONTEXT} channel variable. 
  The name of the last channel that was spied on will be stored in the ${SPY_CHANNEL} variable.

[See Also]

ChanSpy

Команды диалплана Asterisk


function 'DB'

$
0
0

function 'DB'

Функция Asterisk: читает или записывает во внутреннюю БД Asterisk (astdb.sqlite3).

ОписаниеДанная функция может читать или записывать значения в базу данных Asterisk.
В режиме чтения, функция возвращает соответствующее значение из БД в переменную DB_RESULT,
или ничего, если не существует. Чтобы убедиться, что запись существует, используйте функцию function 'DB_EXISTS'.

Синтаксис

DB(family/key)

Пример

Переадресация с внешним CallerID при помощи диалплана

Назначение

Подстановка CallerID внешнего абонента при переадресации принятого вызова на другой внутренний номер.

Описание

В данном примере, функция DBвычисляет длину CallerID вызывающего абонента и если длина более 3-х знаков,
определяет callerid, как внешний и устанавливает его для передачи в качестве CallerID внутреннего абонента, если вызов, в дальнейшем, будет переадресован.
По завершении вызова, фальшивое CALLTRACE очищается при помощи функции DB_DELETE.
(опция 'e', команды Dial, указывает выполнить расширение 'h', по завершению вызова.)

В примере:внутренние номера 1ХХ, вызовы из контекста [from-internal]

[from-internal]
exten => _1XX,1,Noop(+++set external callerid +++)
exten => _1XX,n,GoSub(sub-transfer_external_cid,${EXTEN},1(${CALLERID(num)},${EXTEN}))

[sub-transfer_external_cid]
exten => _XXX,1,Noop(~~~http://asterisk-pbx.ru~~~)
exten => _XXX,n,Set(cidint=${ARG1})
exten => _XXX,n,GotoIf($[${LEN(${DB(CALLTRACE/${ARG1})})} > 3]?external:internal)
exten => _XXX,n(external),Set(CALLERID(num)=${DB(CALLTRACE/${ARG1})})
exten => _XXX,n,Dial(SIP/${ARG2},,Tte)
exten => _XXX,n(internal),Dial(SIP/${ARG2},,Tteo)
exten => h,1,Set(DB_DELETE(CALLTRACE/${cidint})=ignored)

См. также Option app DIAL(,,o)

 

agi 'database del'

$
0
0

agi 'database del'

Команда AGI:database del
Удалить одиночную запись во внутренней БД asterisk для указанных значений - <family> <key>.
Возвращает '1' при успешном выполнении, '0' при неудаче.

Выполнять в мертвом канале

Yes

Например существует регистрация sip пира с соответствующей записью в astdb:

# asterisk -rx 'database show' | grep Registry

 /SIP/Registry/4887 192.168.100.194:5091:3600:4887:sip:4887@192.168.100.194:5091;rinstance=21000ece683be6c2;transport=UDP                             

удалить ее можно конструкцией:

database del SIP Registry/4887

где SIP - <family>, а Registry/4887 - <key>

Asterisk app: AGI

agi 'database put'

$
0
0

agi 'database put'

Синтаксис

database put <family> <key> <value>

=Описание== Добавить или обновить запись во внутренней БД Asterisk(astdb) для указанных <family>, <key>, и <value>..
Возвращает '1' ля удачной операции ли '0'.

Выполнять в мертвом канале

Yes

Пример: отключить номер для блокирования вызовов (blacklist):

Номер в блекисте:

asterisk -rx 'database show' | grep blacklist/2666

 /blacklist/2666                                   : 1

Установим значение '0' вместо '1' :

 database put blacklist 2666 0

asterisk -rx 'database show' | grep blacklist/2666

 /blacklist/2666                                   : 0

значение '0' разрешает номеру 2666 вызовы.

Asterisk app: AGI

agi 'database get'

$
0
0

agi 'database get'

Синтаксис

database get <family> <key>

Описание

Извлекает значение из внутренней БД Asterisk (astdb), для требуемых <family> и <key>.
Возвращает '0' если <key> не задан и '1' если <key> существует.
Также возвращает значение gthtvtyyjq d crj,rf[.

Пример возвращаемого кода: 200 result=1 (testvariable)

Например в astdb определено <family> - blacklist:

 /blacklist/2666                                   : 1

Запросим:

 database get blacklist 2666

Получим:

 200 result=1 (1)
Выполнять в мертвом канале

agi 'database deltree'

$
0
0

agi 'database deltree'

синтаксис

database deltree <family> [<keytree>]

Описание

Удалить <family> или указанное дерево <keytree> без <family> в astdb.

Возвращает '1' если успешно, '0'- неудачно.

Выполнять в мертвом канале

Yes

Например, есть <family> DEVICE:

asterisk -rx 'database show' | grep DEVICE

/DEVICE/4887/default_user                         : 4887
/DEVICE/4887/dial                                 : SIP/4887
/DEVICE/4887/type                                 : fixed
/DEVICE/4887/user                                 : 4887
/DEVICE/4889/default_user                         : 4889
/DEVICE/4889/dial                                 : PJSIP/4889
/DEVICE/4889/type                                 : fixed
/DEVICE/4889/user                                 : 4889

удалим дерево 4887:

 database deltree DEVICE 4887

где DEVICE - family, 4887 - keytree

Будут удалены строки:

/DEVICE/4887/default_user                         : 4887
/DEVICE/4887/dial                                 : SIP/4887
/DEVICE/4887/type                                 : fixed
/DEVICE/4887/user                                 : 4887

Asterisk app: AGI

Asterisk app: DBdel

$
0
0

Asterisk app: DBdel

Приложение диалплана Asterisk DBdel: удалить <key> внутренней БД (astdb)

[Description]

Данное приложение объявлено устаревшим. Используйте вместо него функцию диалплана DB_DELETE

синтаксис

Asterisk app: DBdeltree


Asterisk.conf

$
0
0

Asterisk.conf

/etc/asterisk/asterisk.conf

В файле конфигурации asterisk.conf Вы определяете следующее:

  • Местоположение, права доступа и владельца сокета, которые используется для подключения удаленной консоли управления сервером.
  • Местоположение различных директорий, используемых сервером Asterisk для определения местоположения файлов конфигурации, библиотек, скриптов и место, где будут создаваться лог фалы.
  • Параметры командной строки запуска сервера, используемые по умолчанию.

Пример конфигурации.

Директории

Директории используемые в Asterisk.

directories

[directories](!)
astetcdir => /etc/asterisk
astmoddir => /usr/lib/asterisk/modules
astvarlibdir => /var/lib/asterisk
astdbdir => /var/lib/asterisk
astkeydir => /var/lib/asterisk
astdatadir => /var/lib/asterisk
astagidir => /var/lib/asterisk/agi-bin
astspooldir => /var/spool/asterisk
astrundir => /var/run/asterisk
astlogdir => /var/log/asterisk
astsbindir => /usr/sbin

astetcdir => /etc/asterisk

Конфигурационные .confфайлы.

ls -1 /etc/asterisk

astmoddir => /usr/lib(64)/asterisk/modules

Модули (applications, codec, functions)

modules

astvarlibdir => /var/lib/asterisk

Скрипты, документация, звуковые файлы, изображения, лицензии,

ls -1 /var/lib/asterisk/
ls -1 /var/lib/asterisk/bin

astspooldir => /var/spool/asterisk

Директории для файлов создаваемых Asterisk в процессе работы. Например: Записи разговоров, принятые факсы, голосовая почта, call-файлы итд.

 ls -1  /var/spool/asterisk/
/fax
/meetme
/monitor
/outgoing
/sysadmin
/system
/tmp
/voicemail

astrundir => /var/run/asterisk

Место куда Asterisk записывает UNIX control socket файл (asterisk.ctl) и файл ID процесса (asterisk.pid)

ls -1  /var/run/asterisk/
asterisk.ctl
asterisk.pid

astlogdir => /var/log/asterisk

Файлы логов Asterisk. Настройки вывода логов производятся в файле /etc/asterisk/logger.conf

 ls -1  /var/log/asterisk
/cdr-csv ;директории CDR файлов
/cdr-custom

full
queue_log

а также могут быть:

 fail2ban   ; 
 freepbx_debug 
 freepbx.log

astsbindir => /usr/sbin

Исполняемые файлы Asterisk.

 ls /usr/sbin | grep asterisk
 asterisk
 rasterisk
 safe_asterisk

Раздел (секция) [options]

live_dangerously

Включить выполнение «опасных» функций из внешних источников (AMI, AGI и тд)
Некоторые функции и приложения (например, такие как SHELL)
опасны тем, что могут предоставлять дополнительные привилегии. По умолчанию = no.

Параметр Значение по умолчанию / ПримерОписание
verbose 0 Устанавливает уровень детализации (verbose) консоли и лога . Это значние также может быть установлено в консоли коммандой 'core set verbose <0-9> или off.
debug 0 Залает значение уровня отладки (debug). по умолчанию - 0
alwaysfork no всегда в фоновом режиме, даже с опциями -v или -d
nofork no Отключить фоновое выполнение.
quiet no Работать тихо (-q). Уменьшает выхлоп консоли.
timestamp no Временные отметки в выводе консоли(-T) CLI verbose output
execincludes no Разрешить #EXEC записи в файлах конфигурации
console no Всегда запускать в консольном режиме, с приглашением CLI.
highpriority no Запускать Asterisk c наивысшим приоритетом в режиме реального времени.
initcrypto noЗагружать ключи из ../astkeydir при старте.
nocolor no Цветная консоль.
dontwarn no Отключить предупреждения (warning messages).
dumpcore no Делать дамп (содержимое рабочей памяти процесса, ядра)при падении
languageprefix yes Как находится путь к звуковому файлу с языковым префиксом. По умолчанию, 'yes' - перфикс языка в пути к файлу перед подкаталогов, например ../ru/digits/1.gsm. Если 'no' то префикс после имени каталога, например: (digits/ru/1.gsm).
internal_timing yes Включить внутренний источник синхронизации для аудио
systemname not set Уникальное имя Asterisk. Используется как часть UNIQUEID в CDR. По умолчанию не задано
autosystemname no Автоматом задавать 'systemname' на основании имени хоста
maxcalls not set Максимальное кол-во одновременных входящих вызовов. По умолчанию не ограничено
maxload not set/0.9 Максимальная нагрузка на процессор, при которой Asterisk прекратит новые соединения.
minmemfree not set /256
cache_record_files yes / noКэшировать записи
record_cache_dir <dir> директория кэша записей
transmit_silence no Транслировать тишину, если нет другог источника звука
transcode_via_sln yes перекодировать кодеки через SLINEAR
runuser asterisk Владелец Asterisk.
rungroup asterisk Группа Asterisk.
documentation_language en / es / ru Язык документации
hideconnect no Не показывать сообщения о подключении удаленных консолей
asterisk.conf

function 'DB_DELETE'

$
0
0

function 'DB_DELETE'

Функциядиалплана Asterisk: возвращает текущее значение и удаляет его.

Описание

Данная функция извлекает значение из БД Asterisk, а затем удаляет его. Текущее значение, если существует, сохраняется в переменной ${DB_RESULT}.

Если параметр live_dangerouslyв конфигурационном файле Asterisk asterisk.confустановлен как 'no', функция будет выполнять только чтение(read) из диалплана, но не через внешние протоколы (интерфейсы). Однако, может быть запущена, как операция записи -DB_DELETE(family,key)=ignored

NOTE: If 'live_dangerously' in 'asterisk.conf' is set to 'no', this function can only be read from the dialplan, and not directly from external protocols. It can, however, be executed as a write operation ('DB_DELETE(family,key)=ignored')

синтаксис

Asterisk: Ввод данных счетчиков по телефону DTMF

$
0
0

Asterisk: Ввод данных счетчиков по телефону DTMF

[data-sent]
;вызов из модуля Freepbx "Custom Destinations"

exten => s,1,GoTo(verification_bill,s,1)

;ввод  и подтверждение номера лицевого счета

[verification_bill]
exten => s,1,Set(CHANNEL(language)=ru)
exten => s,n,Playback(ru/custom/pers_acc_enter_ru) ;"Введите номер лицевого счета после звукового сигнала, по завершении ввода нажмите решетку"
;голосовые сообщения в примере, записаны через модуль "System Recordings" во FreePBX 13, что влияет на специфическое расположение файлов

exten => s,n,Read(checkb,beep,,,6,15)
exten => s,n,SayDigits(${checkb}) ;проговаривается введенный номер
exten => s,n,Background(ru/custom/pers_acc_confirm_ru) ;"для подтверждения номера ЛС наберите "1", для повторного ввода номера ЛС наберите "2" "
exten => s,n,WaitExten(10)
exten => 2,1,Goto(s,1)
exten => 1,1,Goto(db_acc_check,s,1)
;читаем БД
[db_acc_check]
exten => s,1,MYSQL(Connect connidbill localhost user password db_name utf8)
exten => s,n,MYSQL(Query resultidbill ${connidbill} SELECT * FROM Counters WHERE PERSACC LIKE '%${checkb}%')
exten => s,n,MYSQL(Fetch fetchid ${resultidbill} PERSACC DATAB COUNTER)
exten => s,n,Set(_account=${PERSACC})
exten => s,n,Set(_countern=${COUNTER})
exten => s,n,Set(_count=ru/custom/count_num) ;Вспомогательное сообщение:"номер счетчика"

; проверка наличия Лицевого Счета  в Базе Данных

exten => s,n,GotoIf($["${PERSACC}" = ""]?notexist,s,1:dst1)


;если ЛС есть в БД, подрузамевается, что есть хотя бы один счетчик, принимаем данные для счетчика номер 1
;называем порядковый номер счетчика и просим ввести данные

exten => s,n(dst1),Playback(${count}&ru/digits/1&ru/custom/data_count2)
exten => s,n,Read(datavar1,beep,,,6,15)
exten => s,n,SayDigits(${datavar1})

;помещаем введенные данные в текстовый файл с именем: 'номерЛС' в директорию /var/log/asterisk/

exten => s,n,System(echo "Счечик 1" - "${STRFTIME(${EPOCH},,%d-%m-%Y)}" - "${account}" - "${datavar1}" >> /var/log/asterisk/${account})

; далее если кол-во счетчиков на ЛС больше 1, принимаем данные для счетчика номер 2, если меньше кладем трубку, и отключаемся от MYSQL.

exten => s,n,GotoIf($["${COUNTER}" > "1"]?dst2:endandclear)

exten => s,n(dst2),Playback(${count}&ru/digits/2&ru/custom/data_count2)
exten => s,n,Read(datavar2,beep,,,6,15)
exten => s,n,SayDigits(${datavar2})
exten => s,n,System(echo "Счетчик 2" - "${STRFTIME(${EPOCH},,%d-%m-%Y)}" - "${account}" - "${datavar2}" >> /var/log/asterisk/${account})

; далее если кол-во счетчиков на ЛС больше 2, принимаем данные для счетчика номер 3, если меньше кладем трубку, и отключаемся от MYSQL.

exten => s,n,GotoIf($["${COUNTER}" > "2"]?dst3:endandclear)

exten => s,n(dst3),Playback(${count}&ru/digits/3&ru/custom/data_count2)
exten => s,n,Read(datavar3,beep,,,6,15)
exten => s,n,SayDigits(${datavar3})
exten => s,n,System(echo "Счетчик 3" - "${STRFTIME(${EPOCH},,%d-%m-%Y)}" - "${account}" - "${datavar3}" >> /var/log/asterisk/${account})

;повторяем цикл до 6-го счетчика

exten => s,n,GotoIf($["${COUNTER}" > "3"]?dst4:endandclear)

exten => s,n(dst4),Playback(${count}&ru/digits/4&ru/custom/data_count2)
exten => s,n,Read(datavar4,beep,,,6,15)
exten => s,n,SayDigits(${datavar4})
exten => s,n,System(echo "Счетчик 4" - "${STRFTIME(${EPOCH},,%d-%m-%Y)}" - "${account}" - "${datavar4}" >> /var/log/asterisk/${account})

exten => s,n,GotoIf($["${COUNTER}" > "4"]?dst5:endandclear)

exten => s,n(dst5),Playback(${count}&ru/digits/5&ru/custom/data_count2)
exten => s,n,Read(datavar5,beep,,,6,15)
exten => s,n,SayDigits(${datavar5})
exten => s,n,System(echo "Счетчик 5" - "${STRFTIME(${EPOCH},,%d-%m-%Y)}" - "${account}" - "${datavar5}" >> /var/log/asterisk/${account})


exten => s,n,GotoIf($["${COUNTER}" > "5"]?dst6:endandclear)

exten => s,n(dst6),Playback(${count}&ru/digits/6&ru/custom/data_count2)
exten => s,n,Read(datavar6,beep,,,6,15)
exten => s,n,SayDigits(${datavar6})
exten => s,n,System(echo "Счетчик 6" - "${STRFTIME(${EPOCH},,%d-%m-%Y)}" - "${account}" - "${datavar6}" >> /var/log/asterisk/${account})

;отключаемся от БД
exten => s,n(endandclear),Noop(***ENDandCLEAR***)
exten => s,n,MYSQL(Clear ${resultidbill})
exten => s,n,MYSQL(Disconnect ${connidbill})

;отправляем данные на емайл

exten => h,1,System(mail -s "Данные счетчиков лицевой счет номер ${account}"  info@asterisk-pbx.ru <  /var/log/asterisk/${account})

;перемещаем файл с данными в архив /var/log/asterisk/datac/

exten => h,3,System(mv -f  /var/log/asterisk/${account}  /var/log/asterisk/datac/${account}-${STRFTIME(${EPOCH},,%H:%M-%d-%m-%Y)})
exten => h,n,hangup()

;сообщение: лицевой счет не существует

[notexist]
exten => s,1,Playback(ru/custom/pers_acc_not_exist_ru)
exten => s,n,Hangup

function 'BLACKLIST'

$
0
0

function 'BLACKLIST'

Функция Asterisk: сверяет callerid с черным списком в базе данных Astersik.

Check if the callerid is on the blacklist.

Описание

Использует astdbдля проверки не содержит ли family 'blacklist' CallerID вызывающего абонента.
Возвращает '1' или '0', соответственно.

Uses astdb to check if the Caller*ID is in family 'blacklist'. Returns '1' or '0'.

Синтаксис

BLACKLIST()

Пример

Контекст для проверки CallerID в черном списке, где:

  • 1000 - вызываемый абонент.
  • 6662666 - CallerID в черном списке.

exten => _1000,1,GotoIf($[${BLACKLIST()}]?black,1)
   same => n,Dial(PJSIP/1000,,tr)

exten => black,1,Playback(privacy-you-are-blacklisted)
   same => n,Hangup()

Добавить номер в черный список, при помощи Asterisk CLI:

 asterisk -rx "database put blacklist 6662666 1"

Посмотреть записи с family blacklist, при помощи Asterisk CLI:

asterisk -rx 'database show' | grep blacklist
/blacklist/6662666                                   : 1

Посмотреть записи при помощи sqlite cli:

sqlite> select *  from astdb where key like '%blacklist%';
/blacklist/6662666|1

Смотри также:

agi 'database del'

agi 'database deltree'

agi 'database get'

agi 'database put'

function 'DB'

function 'DB_DELETE'

function 'DB_EXISTS'

Функции Asterisk

function 'GROUP_COUNT'

$
0
0

function 'GROUP_COUNT'

Функция диалплана Asterisk GROUP_COUNT.
Считать кол-во вызовов в заданной группе.

Описание

Подсчитывает кол-во вызовов в заданной группе или, если группа не назначена, в текущей

синтаксис

GROUP_COUNT([groupname][@category])

аргументы
  • groupname - имя группы.
  • category - название категории.
пример
Ограничение количества одновременных вызовов по набранному номеру.

Контекст

  • Набирается номер 810ХХХХХХХ, в консоль выводится сообщение: набираем 810ХХХХХХХ
  • функция GROUP() назначает вызовы в группу long
  • В консоль выводится сообщение: кол-во одновременных вызовов - ${GROUP_COUNT(long)}, где ${GROUP_COUNT(long) = порядковый номер вызова.
  • Проверяется условие, если количество одновременных вызовов больше 1, вызов направляется в екстеншен overи разъединяется с выводом в консоль:

лимит превышен на - […] вызова.

  • Если вызов первый, номер набирается через SIPтранк provider.

exten => _810.,1,Verbose(*** набираем - ${EXTEN} ***)
   same => n,Set(GROUP()=long)
   same => n,Verbose(*** кол-во одновременных вызовов -  ${GROUP_COUNT(long)} ***)
   same => n,GotoIf($[${GROUP_COUNT(long)} > 1]?over)
   same => n,Dial(PJSIP/${EXTEN}@siptrunk,,)
   same => n(over),Verbose(*** лимит превышен на - ${MATH(${GROUP_COUNT(long)}-1)} вызова ***)
   same => n,Set(DIALSTATUS=CHANUNAVAIL)

Asterisk Dialplan advanced (Диалплан расширенный)

 
Viewing all 1135 articles
Browse latest View live


Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>