1 | изначальная версия редактировать | |
Как передать статус очереди в AGI скрипт?
2 | No.2 Revision редактировать |
Нужно вести учет ввиде передачи скрипту данных, номер и статус, а скрипт в свою очередь будит слать письма на почту контролеру.
Здесь нашел что queue_log в mysql прекрасно пишет, ну можно и так, но влюбом случае нужен ключ звонка по которому можно получить все данные. Как передать статус очереди в AGI скрипт?его получить?
Вообщем нужно правильное решение.
3 | No.3 Revision редактировать |
Нужно вести учет ввиде учет, в виде передачи скрипту данных, номер и статус, а скрипт в свою очередь будит слать письма на почту контролеру.
Здесь нашел что queue_log в mysql прекрасно пишет, ну можно и так, но влюбом случае нужен ключ звонка по которому можно получить все данные. Как его получить?
Вообщем нужно правильное решение.
4 | No.4 Revision редактировать |
Нужно вести учет, в виде передачи скрипту данных, номер и статус, а скрипт в свою очередь будит слать письма на почту контролеру.Хорошо, тогда начнем по порядку:
Здесь нашел по логике вещей что queue_log бы получить статус очереди нужно сначала запустить ее, запускаем:
exten => 550,1,Queue(test-queue)
оп! и все телефоны в mysql прекрасно пишет, ну можно и так, но влюбом очереди сразу зазвонили, хорошо, теперь нужно получить статус очереди:
exten => 550,2,NoOp(Queue Status: ${QUEUESTATUS})
упс! результата нет! почему? дайте подумать ммм... наверно потому что в данном случае нужен ключ звонка по которому можно получить все данные. Как его получить?вторая строчка вообще не срабатывает.
Вообщем нужно правильное решение.Вопрос - как получить статус?
5 | No.5 Revision редактировать |
Хорошо, тогда начнем по порядку:
по логике вещей что бы получить статус очереди нужно сначала запустить ее, запускаем:
запускаем:
exten => 550,1,Queue(test-queue)
оп! и все телефоны в очереди сразу зазвонили, хорошо, теперь нужно получить статус очереди:
очереди:
exten => 550,2,NoOp(Queue Status: ${QUEUESTATUS})
упс! результата нет! почему? дайте подумать ммм... наверно потому что в данном случае вторая строчка вообще не срабатывает.
Вопрос - как получить статус?
6 | No.6 Revision редактировать |
Хорошо, тогда начнем по порядку:
по логике вещей что бы получить статус очереди нужно сначала запустить ее, запускаем:
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, просто ожидал что они будут соответствовать.
7 | No.7 Revision редактировать |
Хорошо, тогда начнем по порядку:
по логике вещей что бы получить статус очереди нужно сначала запустить ее, запускаем:
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, просто ожидал что они будут соответствовать.
8 | No.8 Revision редактировать |
Хорошо, тогда начнем по порядку:
по логике вещей что бы получить статус очереди нужно сначала запустить ее, запускаем:
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, просто ожидал что они будут соответствовать.
9 | No.9 Revision редактировать |
Хорошо, тогда начнем по порядку:
по логике вещей что бы получить статус очереди нужно сначала запустить ее, запускаем:
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, просто ожидал что они будут соответствовать.
10 | No.10 Revision редактировать |
Хорошо, тогда начнем по порядку:
по логике вещей что бы получить статус очереди нужно сначала запустить ее, запускаем:
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, просто ожидал что они будут соответствовать. соответствовать.
Дело в том что если взять за пример обратный звонок то по хорошему надо делать статистику успешных и не успешных звонков, при этом надо брать во внимание что по факту будет два звонка первый в колцентер и второй после снятия трубки на номер и оба звонка нужно учитывать в статистике.
11 | No.11 Revision редактировать |
Хорошо, тогда начнем по порядку:
по логике вещей что бы получить статус очереди нужно сначала запустить ее, запускаем:
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.