First time here? Check out the FAQ!

Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

macro from queue

0

Добрый день. Задача: 1. Нужно сделать мониторинг за тем сколько времени ожидает клиент на очереди до принятия звонка оператором.

Решение: Нужно сделать macro или gosub на очереди звонка. Я делаю это следующим образом:

exten => s,n,Queue(Номер очереди,rtT,,,Длительность звонка в очереди,,link)

Проблема: Макрос link выполняется для канала принимающего оператора, а не для канала входящего звонка, поэтому установленые локальные переменные в макросе link доступны только для этого канала. Например:

Входящий звонок с постановкой в очередь:

Executing [s@macro-transfer:22] Queue("SIP/Оператор_связи-0009a5df", "1302,rtT,,,14,,link") in new stack

Прием звонка

app_queue.c: SIP/Оператор_КЦ-0009a5e7 answered SIP/Оператор_связи-0009a5df

Выполнение макроса:

Executing [s@macro-link:1] NoOp("SIP/Оператор_КЦ-0009a5e7", "6271---0-----------2") in new stack

Вопрос: Как сделать так что бы макрос выполнялся на стороне канала входящего звонка, а не на стороне пользователя принявшего звонок? Или если есть у кого идеи как это сделать по другому?

спросил Dec 19 '18

Sergiy Gravatar Sergiy
59 14 3 6

обновил Dec 19 '18

zzuz Gravatar zzuz flag of Russian Federation
7174 2 6 75
http://line24.ru/

Comments

Что мешает подсчитать время поступления вызова в очередь и время ответа оператора ?

zzuz (Dec 19 '18)edit

В этом собстввенно и вопрос. Звонок поступает с каналом 1 - все переменные установленые в процесе звонка принадлежат этому каналу 1. В макросе при постановки в очередь все переменные присваюются каналу 2 - тому каналу который собственно принимает звонок. Поэтому с канала 1 не видно переменных с канала 2... И вопрос собственно как сделать так что б переменная установленая в макросе с очереди была доступна первому каналу?

Sergiy (Dec 19 '18)edit

DumpChan , Set(__var=) , IMPORT() , SHARE() . Способов пруд пруди.

zzuz (Dec 19 '18)edit

У вас есть LINKED** поля, по которым вы можете узнать канал с другой стороны и сделатьимпорт либо share. Но это все сложно. Проще взять статистику очереди.

meral (Dec 21 '18)edit

2 Ответа

0

Это делается гараздо проще.

Есть queue_log. Есть возможность его в базу писать. Пишите простой sql запрос, находите за раз время ожидания для всех, все.

ссылка удалить спам редактировать

ответил Dec 21 '18

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/
0

Напомню, что в dial так же есть macro для briged. Это как раз и будет другая сторона.

ссылка удалить спам редактировать

ответил Dec 20 '18

olegusp Gravatar olegusp
11 2

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: Dec 19 '18

Просмотрен: 539 раз

Обновлен: Dec 21 '18

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.