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

История изменений [назад]

нажмите, чтобы скрыть/показать версии 1
изначальная версия
редактировать

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

ts14 Gravatar ts14

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

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

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

Нужно вести учет ввиде передачи скрипту данных, номер и статус, а скрипт в свою очередь будит слать письма на почту контролеру.

Здесь нашел что queue_log в mysql прекрасно пишет, ну можно и так, но влюбом случае нужен ключ звонка по которому можно получить все данные. Как передать статус очереди в AGI скрипт?его получить?

Вообщем нужно правильное решение.

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

Нужно вести учет ввиде учет, в виде передачи скрипту данных, номер и статус, а скрипт в свою очередь будит слать письма на почту контролеру.

Здесь нашел что queue_log в mysql прекрасно пишет, ну можно и так, но влюбом случае нужен ключ звонка по которому можно получить все данные. Как его получить?

Вообщем нужно правильное решение.

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

Нужно вести учет, в виде передачи скрипту данных, номер и статус, а скрипт в свою очередь будит слать письма на почту контролеру.Хорошо, тогда начнем по порядку:

Здесь нашел по логике вещей что queue_log бы получить статус очереди нужно сначала запустить ее, запускаем: exten => 550,1,Queue(test-queue) оп! и все телефоны в mysql прекрасно пишет, ну можно и так, но влюбом очереди сразу зазвонили, хорошо, теперь нужно получить статус очереди: exten => 550,2,NoOp(Queue Status: ${QUEUESTATUS}) упс! результата нет! почему? дайте подумать ммм... наверно потому что в данном случае нужен ключ звонка по которому можно получить все данные. Как его получить?вторая строчка вообще не срабатывает.

Вообщем нужно правильное решение.Вопрос - как получить статус?

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

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

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

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

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

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

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

Вопрос - как получить статус?

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

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

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

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/callbacksendmail.agi,${DIALSTATUS},${CHANNEL(uniqueid)},${EXTEN}) exten => _8XXXXXXXXXX,3,Hangup()

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

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

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

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

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

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/callbacksendmail.agi,${DIALSTATUS},${CHANNEL(uniqueid)},${EXTEN}) exten => _8XXXXXXXXXX,3,Hangup()

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

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

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

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

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

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 => 550,1,Queue(callback-queue)

[callback-Dial]

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

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

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

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

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

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

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

exten => _8XXXXXXXXXX,3,Hangup()enter code here

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

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

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

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

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

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, просто ожидал что они будут соответствовать. соответствовать.

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

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

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

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

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, просто ожидал что они будут соответствовать.

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

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

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