Чат  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Оповещение о пропущенном

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модератор: april22

Оповещение о пропущенном

Сообщение krisakA » 14 ноя 2019, 16:16

Добрый день!

Решил добавить оповещение на почту о пропущенном в очереди.

[ext-queues]
exten => h,1,Set(varTime=${STRFTIME(${EPOCH},,%H:%M:%S)})
exten => h,n,Set(varDate=${STRFTIME(${EPOCH},,%d-%m-%Y)})
exten => h,n,Set(varDST=${CDR(dstchannel)})
exten => h,n,Set(varQ=${CDR(disposition)})
exten => h,n,ExecIf($["${NODEST}"="522"]?Set(varQueueName="Ресепшен"))
exten => h,n,ExecIf($["${CDR(disposition)}" != "ANSWERED"]?System(echo "Пропущен звонок от ${CDR(clid)} \nЗвонок длился: ${CDR(duration)} сек. \nОчередь: ${varQueueName} \nВремя: ${varTime} " | mail -s "Пропущен звонок от ${CDR(clid)}" -r pbx@vertical.ru kuznetsov@vertical.ru)
exten => h,n,Macro(hangupcall,)


Худо, бедно отрабатывает:

[2019-11-14 15:10:00] VERBOSE[103272][C-00002253] pbx.c: Executing [h@ext-queues:1] Set("SIP/9999-000044e3", "varTime=15:10:00") in new stack
[2019-11-14 15:10:00] VERBOSE[103272][C-00002253] pbx.c: Executing [h@ext-queues:2] Set("SIP/9999-000044e3", "varDate=14-11-2019") in new stack
[2019-11-14 15:10:00] VERBOSE[103272][C-00002253] pbx.c: Executing [h@ext-queues:3] Set("SIP/9999-000044e3", "varDST=Local/2021@from-queue-0000074c;1") in new stack
[2019-11-14 15:10:00] VERBOSE[103272][C-00002253] pbx.c: Executing [h@ext-queues:4] Set("SIP/9999-000044e3", "varQ=NO ANSWER") in new stack
[2019-11-14 15:10:00] VERBOSE[103272][C-00002253] pbx.c: Executing [h@ext-queues:5] ExecIf("SIP/9999-000044e3", "1?Set(varQueueName="Ресепшен")") in new stack
[2019-11-14 15:10:00] VERBOSE[103272][C-00002253] pbx.c: Executing [h@ext-queues:6] ExecIf("SIP/9999-000044e3", "1?System(echo "Пропущен звонок от "XXXXXXXXXXX" <XXXXXXXXXXXX> \nЗвонок длился: 0 сек. \nОчередь: "Ресепшен" \nВремя: 15:10:00 " | mail -s "Пропущен звонок от "XXXXXXXXXXX" <XXXXXXXXXXX>" -r pbx@XXXXXXX.ru XXXXXXXXX@XXXXXXXX.ru") in new stack
[2019-11-14 15:10:00] VERBOSE[103272][C-00002253] pbx.c: Executing [h@ext-queues:7] Macro("SIP/9999-000044e3", "hangupcall,") in new stack


настройки очереди:

[522]
announce-frequency=15
announce-holdtime=yes
announce-position=yes
autofill=no
autopause=no
autopausebusy=no
autopausedelay=0
autopauseunavail=no
joinempty=yes
leavewhenempty=no
maxlen=0
memberdelay=0
min-announce-frequency=15
penaltymemberslimit=0
periodic-announce-frequency=0
queue-callswaiting=queue-callswaiting
queue-thankyou=queue-thankyou
queue-thereare=queue-thereare
queue-youarenext=queue-youarenext
reportholdtime=no
retry=1
ringinuse=yes
servicelevel=60
setinterfacevar=yes
strategy=random
timeout=60
timeoutpriority=app
timeoutrestart=yes
weight=0
wrapuptime=0
context=
member=Local/2020@from-queue/n,0,"Reception1",hint:2020@ext-local
member=Local/2021@from-queue/n,0,"Reception2",hint:2021@ext-local


И вроде бы работает, когда стратегия не звонят все, как только выставляешь звонят все, то любой звонок становится NO ANSWER, хотя:
Thu, 14 Nov 2019 14:09 Call recording Call recording 1573729714.145906 "XXXXXXXXXXX" <XXXXXXXXXXX> XXXXXXXXXXX Queue 522 ANSWERED 00:48
Thu, 14 Nov 2019 14:08 Call recording Call recording 1573729714.145906 "XXXXXXXXXXX" <7XXXXXXXXXXX> XXXXXXXXXXX Queue 522 NO ANSWER 00:00


Вопрос наверное в следующем, можно ли использовать другое выражение, чтобы принятый звонок оставался им для скрипта, а сброшенный или не дождавшийся отрабатывал.
krisakA
 
Сообщений: 5
Зарегистрирован: 14 ноя 2019, 16:04

Re: Оповещение о пропущенном

Сообщение ded » 14 ноя 2019, 20:41

Журнал CDR для очереди со стратегией ringall является недостоверным, по причине, вами описанной (выше). Именно поэтому в call center используют журналы событий CEL (Call event log), а в конфигах новых версий уже прямо пишут - CDR deprecated.

В оболочках (FreePBX, etc) время пребывания в очереди настраивается многовариантно, если с ограничением по времени, то есть внизу опция Назначение при неответе. Вот там и надо посылать оповещение на почту.
Для этого сначала включается голосовая почта у агентов, затем создаётся объект Групповая голосовая почта, и вот её и надо поставить в качестве Назначения при неответе.
ded
 
Сообщений: 14205
Зарегистрирован: 26 авг 2010, 19:00

Re: Оповещение о пропущенном

Сообщение krisakA » 15 ноя 2019, 10:22

Спасибо за совет, но у нас нет ограничение нахождения в очереди, так что вариант по не ответу не подходит. Попробую использовать журнал CEL и отпишусь.
krisakA
 
Сообщений: 5
Зарегистрирован: 14 ноя 2019, 16:04

Re: Оповещение о пропущенном

Сообщение krisakA » 15 ноя 2019, 11:59

Наверное будет глупый вопрос, но как мне указать аргумент? К примеру ${CEL(duration)} или ExecIf($["${CEL(eventtype)}" = "ANSWER"]


ded писал(а):Журнал CDR для очереди со стратегией ringall является недостоверным, по причине, вами описанной (выше). Именно поэтому в call center используют журналы событий CEL (Call event log), а в конфигах новых версий уже прямо пишут - CDR deprecated.

В оболочках (FreePBX, etc) время пребывания в очереди настраивается многовариантно, если с ограничением по времени, то есть внизу опция Назначение при неответе. Вот там и надо посылать оповещение на почту.
Для этого сначала включается голосовая почта у агентов, затем создаётся объект Групповая голосовая почта, и вот её и надо поставить в качестве Назначения при неответе.
krisakA
 
Сообщений: 5
Зарегистрирован: 14 ноя 2019, 16:04

Re: Оповещение о пропущенном

Сообщение ded » 15 ноя 2019, 12:32

Вам бы поточнее сформулировать "пропущенный в очереди".
Это когда человек (клиент) в очереди не дождался и вышел из очереди? Положил трубку сам? Происходит Hangup канала, в нём есть все нужные переменные - кто звонил, зачем звонил, почему ушёл... :)
Вам тогда надо просто дописать обработчик на
exten => h,1,
где вставить свой скрипт оповещения на email.
ded
 
Сообщений: 14205
Зарегистрирован: 26 авг 2010, 19:00

Re: Оповещение о пропущенном

Сообщение krisakA » 15 ноя 2019, 15:10

Спасибо, решил по другому

exten => h,n,Set(CDR(userfield)=HC:${HANGUPCAUSE})
exten => h,n,ExecIf($["${CDR(userfield)}" = "HC:0"]?System.......
krisakA
 
Сообщений: 5
Зарегистрирован: 14 ноя 2019, 16:04

Re: Оповещение о пропущенном

Сообщение ded » 15 ноя 2019, 19:23

Но это и есть обработчик на
exten => h,1,
где вы вставили свой скрипт оповещения на email, с проверкой статуса Hangup cause.

Что по другому?
ded
 
Сообщений: 14205
Зарегистрирован: 26 авг 2010, 19:00

Re: Оповещение о пропущенном

Сообщение krisakA » 18 ноя 2019, 09:18

Да, спасибо за наводку на путь истинный.

Тему можно закрывать.
krisakA
 
Сообщений: 5
Зарегистрирован: 14 ноя 2019, 16:04


Вернуться в Вопросы новичков

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

© 2008 — 2019 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH