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

Как передать статус очереди в AGI скрипт?

0

Хорошо, тогда начнем по порядку:

по логике вещей что бы получить статус очереди нужно сначала запустить ее, запускаем:

exten => 550,1,Queue(test-queue)

оп! и все телефоны в очереди сразу зазвонили, хорошо, теперь нужно получить статус очереди:

exten => 550,2,NoOp(Queue Status: ${QUEUESTATUS})

упс! результата нет! почему? дайте подумать ммм... наверно потому что в данном случае вторая строчка вообще не срабатывает.

Да! Так и есть в данном случае. Что же тогда делать? Почитать документацию (форум) и сделать вывод, что к примеру можно использовать таблицу queue_log в БД asterisk.

тогда логика будет примерно такой (на примере упрошенного обратного звонка):

[callback-Queue]
exten => 550,1,Queue(callback-queue)

[callback-Dial]
exten => _8XXXXXXXXXX,1,Dial(SIP/${EXTEN}@test800)
exten => _8XXXXXXXXXX,2,AGI(/agi-bin/callback_sendmail.agi,${DIALSTATUS},${CHANNEL(uniqueid)},${EXTEN})
exten => _8XXXXXXXXXX,3,Hangup()enter code here

тут сначала запускаем очередь, далее первый кто взял трубку автоматом соединяется с целью, далее передаем в скрипт - статус, id и номер. В скрипте на основе полученных данных и данных из таблицы queue_log можно вывести статистику по не успешным звонкам, связав их по id.

Но вот беда параметр - ${CHANNEL(uniqueid)} почему то всегда на единицу меньше чем callid в таблице queue_log, просто ожидал что они будут соответствовать.

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

Вообщем как их связать?

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

спросил 2015-12-15 23:43:09 +0400

ts14 Gravatar ts14
1 2 1

обновил 2015-12-16 20:41:49 +0400

Comments

А что не получается? Где код ? Где попытки? Или за вас сделать нужно?

zzuz ( 2015-12-16 00:17:52 +0400 )редактировать

перечитал три раза.не понял что хотите. нужно правильное решение - возьмите готовое. или хотябы опишите нормально, чтоб понятно было.

meral ( 2015-12-16 02:20:32 +0400 )редактировать

Чтобы срабатывала какая-то строчка , она должна быть написана обдуманно, а не на авось.

zzuz ( 2015-12-16 13:40:36 +0400 )редактировать

а что вы хотели. queue callback не самая простая вещь. а потом оно еще и в ту же позицию не хочет садится. либо дебаг, либо когото нанять.

meral ( 2015-12-17 01:11:24 +0400 )редактировать

2 Ответа

0

правильно - через queue_log. естественно вторая строчка сработает только после выхода из очереди.

у вас есть три варианта

1) правильный - читаем queue_log

2) тоже правильный, но геморойный - слушаем события в AMI

3) asterisk -rx "queue show"

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

ответил 2015-12-16 14:08:30 +0400

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

Повангую:

exten => h,1,NoOp(hangup for channel: ${CALLERID(num)} ${CHANNEL(name)} ${CHANNEL(uniqueid)} Queue Status: ${QUEUESTATUS})
exten => h,n,AGI(/full/path/to/script,${CALLERID(num)},${CHANNEL(uniqueid)},${QUEUESTATUS})
exten => h,n,Hangup()

И это запихнуть в контекст где вызывается очередь. После чего в вашем скрипте /full/path/to/script вам будет доступно три переменных: номер, ID вызова, статус выхода из очереди. Статусы:

This application sets the following channel variable upon completion: ${QUEUESTATUS}: The status of the call as a text string. TIMEOUT FULL JOINEMPTY LEAVEEMPTY JOINUNAVAIL LEAVEUNAVAIL CONTINUE

Но написали вы реально коряво, сложно что-то разобрать в вашем потоке сознания.

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

ответил 2015-12-16 08:44:57 +0400

virus_net Gravatar virus_net flag of Russian Federation
302 1 6
http://www.mega-net.ru/

обновил 2015-12-16 08:47:23 +0400

Ваш ответ

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

Статистика

Задан: 2015-12-15 23:43:09 +0400

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

Обновлен: Dec 16 '15

Похожие вопросы:

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