Проблема с очередью входящих (диалог двух роботов)
Добавлено: 21 май 2014, 11:49
Приветствую всех присутствующих!!
Я работаю программистом в фирме такси, уже более полугода решаю различные задачи по Астериск. Сейчас столкнулся с "конфликтом" двух задач:
1. Мы сделали автоматический прием заказов голосовым роботом (TTS и ASR выполняются посредством онлайн-инструментария от Google). Сначал мы пробовали нашего робота на отдельном номере, а несколько дней назад интегрировали его в очередь звонков. Для этого я в queues.conf в конфиге очереди прописал context = ..., у данного контекста единственное расширение 1, где выполняется переход на AGI-скрипт робота. Соответсвенно, после объявления клиенту позиции в очереди и слов "спасибо" ему предлагается не ждать, когда освободится какой-либо оператор, а попробовать сделать голосовой заказ у робота, для этого нажав 1. Это работает, у нас довольно редко возникает очередь, но когда возникает, то клиенты пробуют, появились реально выполненные заказы по результатам общения клиентов с роботом после перехода из очереди звонков.
Очередь звонков с музыкой и сообщениями включается только после 10 секунд длинных гудков.
2. В различных целях у нашей фирмы много контактных номеров (более 20), многие их которых просто переадресуют на основной телефон конторы. Возникла потребность автоматически проверять все эти номера - что по каждому можно дозвониться до диспечерской. Для этого я написал ежедневную генерацию звонков на каждый из таких номеров, при дозвоне синтезированным голосом говорится что-то вроде "Проверка работоспособности номера ... Для подтверждения нажмите 1". Если нажата 1 (оператором), то телефонный номер отмечается как успешно проверенный сегодня, если случился недозвон или цифра по той или иной причине так и не была нажата, то на указанные e-mail и сотовые номера делается рассылка сообщений, что номер не подтвержден. Эта система работает, например, в первый же день выяснилось, что был отключен номер, переадресующий на сотовый шефа.
Теперь о самой проблеме. Пару раз была ситуация, когда робот проверки номеров попадал в очередь звонков и по непонятной причине происходило переключение на голосового робота, принимающего заказ! В результате получался диалог двух роботов, разумеется, друг друга не понимающих! Разумеется, робот заказов не может бесконечно не понимать клиента, поэтому после нескольких неудачных попыток голосового ввода происходит переключение обратно на очередь звонков, в результате оба раза робот проверки номеров все-таки получал подтверждение от живого оператора.
В чем может быть проблема? Это какой-то фантомный DTMF? Всё бы ничего, но у меня есть опасения, что переключение на робота голосового заказа может сработать и для живого абонента без его на то воли, а это уже очень плохо! Как мне точно найти причину проблемы и ее устранить?
Я работаю программистом в фирме такси, уже более полугода решаю различные задачи по Астериск. Сейчас столкнулся с "конфликтом" двух задач:
1. Мы сделали автоматический прием заказов голосовым роботом (TTS и ASR выполняются посредством онлайн-инструментария от Google). Сначал мы пробовали нашего робота на отдельном номере, а несколько дней назад интегрировали его в очередь звонков. Для этого я в queues.conf в конфиге очереди прописал context = ..., у данного контекста единственное расширение 1, где выполняется переход на AGI-скрипт робота. Соответсвенно, после объявления клиенту позиции в очереди и слов "спасибо" ему предлагается не ждать, когда освободится какой-либо оператор, а попробовать сделать голосовой заказ у робота, для этого нажав 1. Это работает, у нас довольно редко возникает очередь, но когда возникает, то клиенты пробуют, появились реально выполненные заказы по результатам общения клиентов с роботом после перехода из очереди звонков.
Очередь звонков с музыкой и сообщениями включается только после 10 секунд длинных гудков.
2. В различных целях у нашей фирмы много контактных номеров (более 20), многие их которых просто переадресуют на основной телефон конторы. Возникла потребность автоматически проверять все эти номера - что по каждому можно дозвониться до диспечерской. Для этого я написал ежедневную генерацию звонков на каждый из таких номеров, при дозвоне синтезированным голосом говорится что-то вроде "Проверка работоспособности номера ... Для подтверждения нажмите 1". Если нажата 1 (оператором), то телефонный номер отмечается как успешно проверенный сегодня, если случился недозвон или цифра по той или иной причине так и не была нажата, то на указанные e-mail и сотовые номера делается рассылка сообщений, что номер не подтвержден. Эта система работает, например, в первый же день выяснилось, что был отключен номер, переадресующий на сотовый шефа.
Теперь о самой проблеме. Пару раз была ситуация, когда робот проверки номеров попадал в очередь звонков и по непонятной причине происходило переключение на голосового робота, принимающего заказ! В результате получался диалог двух роботов, разумеется, друг друга не понимающих! Разумеется, робот заказов не может бесконечно не понимать клиента, поэтому после нескольких неудачных попыток голосового ввода происходит переключение обратно на очередь звонков, в результате оба раза робот проверки номеров все-таки получал подтверждение от живого оператора.
В чем может быть проблема? Это какой-то фантомный DTMF? Всё бы ничего, но у меня есть опасения, что переключение на робота голосового заказа может сработать и для живого абонента без его на то воли, а это уже очень плохо! Как мне точно найти причину проблемы и ее устранить?