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

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

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

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

спросил 2018-12-19 14:07:27 +0400

Sergiy Gravatar Sergiy
59 14 3 6

обновил 2018-12-19 15:35:14 +0400

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

Comments

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

zzuz ( 2018-12-19 15:36:08 +0400 )редактировать

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

Sergiy ( 2018-12-19 16:17:18 +0400 )редактировать

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

zzuz ( 2018-12-19 17:02:36 +0400 )редактировать

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

meral ( 2018-12-21 11:34:02 +0400 )редактировать

2 Ответа

0

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

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

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

ответил 2018-12-21 11:27:08 +0400

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

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

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

ответил 2018-12-20 10:56:19 +0400

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 ленту новостей

Статистика

Задан: 2018-12-19 14:07:27 +0400

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

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

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