Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
astpanel:ats:asterisk:auto_answer [2014/01/21 14:42] apor [Получение значения из AstDB] |
astpanel:ats:asterisk:auto_answer [2019/02/01 09:38] (текущий) apor |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
===== Пример dialplan ===== | ===== Пример dialplan ===== | ||
+ | [[astpanel:ats:asterisk_v6|Обратно к основной инструкции...]] | ||
+ | | ||
+ | При поступлении входящего вызова в dialplan должна быть выполнена установка переменной: | ||
+ | <code>exten => 74952293042,n,Set(__FROM_CHAN=${CHANNEL})</code> | ||
+ | | ||
+ | В панели телефонии реализована функция "Ответить на звонок". Если НЕ используется встроенный в панель телефонии софтфон, ответ осуществляется следующим образом: | ||
+ | |||
+ | - Панель телефонии выполняет AMI команду Originate (исходящий звонок) | ||
+ | - Для канала устанавливается переменная SIPADDHEADER - это необходимо для автоматического подъема трубки | ||
+ | - АТС выполняет вызов на приложение Pickup / PickupChan | ||
+ | - Осуществляется "перехват звонка" | ||
+ | | ||
+ | Пример контекста на АТС для выполнения перехвата звонка (Pickup). | ||
<code>[internal] | <code>[internal] | ||
; direct pickup | ; direct pickup | ||
Строка 7: | Строка 20: | ||
</code> | </code> | ||
- | ===== Проверка ===== | ||
- | |||
- | ==== Получение значения из AstDB ==== | ||
- | |||
- | <code>#!/bin/sh | ||
- | dir_script='/tmp/'; | ||
- | # каталог из asterisk.conf | ||
- | astspooldir='/storage/usbdisk1/askoziapbx/voicemailarchive'; | ||
- | SIPADDHEADER='Call-Info:\;answer-after=0'; | ||
- | # | ||
- | call_text="Channel: SIP/132 | ||
- | Context: miko_ajam | ||
- | Extension: 10000222 | ||
- | Callerid: Alexey<104> | ||
- | Setvar: command=get | ||
- | Setvar: dbFamily=CF | ||
- | Setvar: key=104 | ||
- | Setvar: chan=SIP/104 | ||
- | Setvar: SIPADDHEADER=$SIPADDHEADER"; | ||
- | |||
- | echo "$call_text" > /tmp/file.call; | ||
- | mv '/tmp/file.call' "$astspooldir/outgoing/"; | ||
- | |||
- | asterisk -rvvv; | ||
- | </code> | ||
- | |||
- | Вывод в консоли CLI | ||
- | |||
- | <code><SIP/132-00000011>AGI Rx << GET VARIABLE "command" | ||
- | <SIP/132-00000011>AGI Tx >> 200 result=1 (get) | ||
- | <SIP/132-00000011>AGI Rx << GET VARIABLE "dbFamily" | ||
- | <SIP/132-00000011>AGI Tx >> 200 result=1 (CF) | ||
- | <SIP/132-00000011>AGI Rx << GET VARIABLE "key" | ||
- | <SIP/132-00000011>AGI Tx >> 200 result=1 (104) | ||
- | <SIP/132-00000011>AGI Rx << GET VARIABLE "val" | ||
- | <SIP/132-00000011>AGI Tx >> 200 result=0 | ||
- | <SIP/132-00000011>AGI Rx << GET VARIABLE "chan" | ||
- | <SIP/132-00000011>AGI Tx >> 200 result=1 (SIP/104) | ||
- | <SIP/132-00000011>AGI Rx << DATABASE GET CF 104 | ||
- | <SIP/132-00000011>AGI Tx >> 200 result=1 (798552) | ||
- | <SIP/132-00000011>AGI Rx << EXEC UserEvent DB_CF|"сhannel:SIP/104"|"key:104"|"val:798552" | ||
- | -- AGI Script Executing Application: (UserEvent) Options: (DB_CF|сhannel:SIP/104|key:104|val:798552) | ||
- | <SIP/132-00000011>AGI Tx >> 200 result=0 | ||
- | -- <SIP/132-00000011>AGI Script /tmp/1C_Set_Status.sh completed, returning 0 | ||
- | -- Executing [10000222@miko_ajam:3] Answer("SIP/132-00000011", "") in new stack | ||
- | -- Executing [10000222@miko_ajam:4] Hangup("SIP/132-00000011", "") in new stack | ||
- | == Spawn extension (miko_ajam, 10000222, 4) exited non-zero on 'SIP/132-00000011' | ||
- | </code> | ||
- | |||
- | ==== Установка значения в AstDB ==== | ||
- | |||
- | <code>#!/bin/sh | ||
- | dir_script='/tmp/'; | ||
- | # каталог из asterisk.conf | ||
- | astspooldir='/storage/usbdisk1/askoziapbx/voicemailarchive'; | ||
- | SIPADDHEADER='Call-Info:\;answer-after=0'; | ||
- | # | ||
- | call_text="Channel: SIP/132 | ||
- | Context: miko_ajam | ||
- | Extension: 10000222 | ||
- | Callerid: Alexey<104> | ||
- | Setvar: command=put | ||
- | Setvar: dbFamily=CF | ||
- | Setvar: key=104 | ||
- | Setvar: val=79257184222 | ||
- | Setvar: chan=SIP/104 | ||
- | Setvar: SIPADDHEADER=$SIPADDHEADER"; | ||
- | |||
- | echo "$call_text" > /tmp/file.call; | ||
- | mv '/tmp/file.call' "$astspooldir/outgoing/"; | ||
- | |||
- | asterisk -rvvv; | ||
- | </code> | ||
- | Вывод в консоль CLI | + | <note warning>ВАЖНО: В конфигурационном файле **sip.conf** необходимо быть внимательным к параметру "**call-limit**"\\ **НЕ рекомендуем ограничивать количество одновременных звонков** этим параметром. Если лимит будет достигут, то в логах появится сообщение об ошибке <code>Call to peer '212' rejected due to usage limit of 1</code> и на вызов не получится "ответить" средствами панели телефонии. |
- | <code><SIP/132-00000013>AGI Tx >> | + | </note> |
- | <SIP/132-00000013>AGI Rx << GET VARIABLE "command" | + | ===== Комментарии ===== |
- | <SIP/132-00000013>AGI Tx >> 200 result=1 (put) | + | ~~DISQUS~~ |
- | <SIP/132-00000013>AGI Rx << GET VARIABLE "dbFamily" | + | |
- | <SIP/132-00000013>AGI Tx >> 200 result=1 (CF) | + | |
- | <SIP/132-00000013>AGI Rx << GET VARIABLE "key" | + | |
- | <SIP/132-00000013>AGI Tx >> 200 result=1 (104) | + | |
- | <SIP/132-00000013>AGI Rx << GET VARIABLE "val" | + | |
- | <SIP/132-00000013>AGI Tx >> 200 result=1 (79257184222) | + | |
- | <SIP/132-00000013>AGI Rx << GET VARIABLE "chan" | + | |
- | <SIP/132-00000013>AGI Tx >> 200 result=1 (SIP/104) | + | |
- | <SIP/132-00000013>AGI Rx << DATABASE PUT CF 104 79257184222 | + | |
- | <SIP/132-00000013>AGI Tx >> 200 result=1 | + | |
- | -- <SIP/132-00000013>AGI Script /tmp/1C_Set_Status.sh completed, returning 0 | + | |
- | -- Executing [10000222@miko_ajam:3] Answer("SIP/132-00000013", "") in new stack | + | |
- | -- Executing [10000222@miko_ajam:4] Hangup("SIP/132-00000013", "") in new stack | + | |
- | == Spawn extension (miko_ajam, 10000222, 4) exited non-zero on 'SIP/132-00000013'</code> | + |